歡迎轉載,可以關注博客:http://blog.csdn.net/cqy_chen
概要
上節課我們講到了對於任意的存在噪音以及錯誤的數據中,vc界是可以學習的。那麼當我們需要預測的東西不是兩個分類,而是一個實數呢?比如同樣在信用卡授信中,現在的問題不是是否發放信用卡,而是發放多少?有的人發放5W,有的人10W,那麼這個怎麼來確定呢?
這就是本節課要講的問題,迴歸問題。
線性迴歸問題
這裏同樣採用信用卡額度來舉例。
迴歸問題比較直觀的感受是,根據用戶的特徵,比如收入,年齡等。然後分別給一個權重,相乘相加得到一個數字。
這個很像PLA算法,只是PLA還需要取正負號,因爲要進行分類。
形象化的圖形如下:
因爲我們需要保證預測的值和原始的值儘可能的接近,在X是一維的時候,就是使用一條直線去你和這些點。當X是二維的時候,就是採用這些平面去擬合這些點。這些紅色的線就是實際的值和擬合的值的差,一般稱爲殘差。當然我們希望這些殘差越小越好,
一般在迴歸問題中會採用平方和的方式作爲損失函數,如下:
當然具體問題具體分析,還有的用RMSE 。這裏再次強調損失函數是關係演算法如何在假設空間中選取假設的。
回到上面的問題,這個時候,採用均方誤差的時候,計算如下:
現在的問題就是要如何最小化
線性迴歸算法
回到上面,我們要如何最小化:
這裏稍微進行變化下:
這個時候損失函數就完全表示爲矩陣的方式:
那麼這個時候損失函數是一個凸函數,對於凸函數,如果可導的話就可以直接求出來了。如下:
所以現在的問題就找到一個w使得
那麼如何求解呢?我們將上面的向量乘法改變下:
對於向量的求導大家可以參考:
https://pan.baidu.com/s/1pKY9qht
所以要使導數爲0,那麼就是
得到:
所以如果
如果不可逆的話,我們一般採用僞逆
一般我們定義僞逆
關於僞逆可以參考:
https://en.wikipedia.org/wiki/Moore%E2%80%93Penrose_inverse
所以我們得到
問題推廣
上面我們已經求解了線性迴歸的解,給人的感覺是一下求解了問題的解,不像PLA中一步步的求解。其實我們在求解僞逆的時候也是一步步求解的。像這樣的機器學習算法稱爲閉式解。機器學習的最終目的是
下面的結論:表示
要證明上面的式子,首先進行替換。
這裏稱
那麼我們看看這個帽子矩陣在空間上是怎麼表現的呢
1)粉色的部分是由
2)
3)要使得
4)而
同時我們還可以證明
大致的說明下,由於將
上面說明了沒有噪音的情況,那麼存在噪音的情況呢?
這個時候可以想象我們也將噪音的部分投影到垂直的直線上,就是也做一個
所以得到了
至於爲什麼
根據上面兩個式子,我們得到學習曲線圖。
在實際的工作中,在調完參數後,一般會繪畫學習曲線來判斷當前模型是過擬合還是欠擬合。 調參的話一般可以通過繪畫驗證曲線。
關於通過學習曲線可以參考:
https://www.cnblogs.com/nolonely/p/7382287.html
線性迴歸處理二分類問題
我們知道線性迴歸基本可以一步就解出來了,但是在PLA中我們卻是一個NP難問題。
那麼這裏我們可不可以將線性迴歸的思想來解線性分類的問題。
假如我們將分類中的-1和+1直接看成數字呢?然後採用迴歸的方式?
這樣是否可行呢?迴歸和分類問題最大的區別在於損失函數的不同,如下:
上面的圖形證明,平方的錯誤一定比0/1的錯誤來的大。
根據vc維,我們在第七次課程中講到的:
http://blog.csdn.net/cqy_chen/article/details/78888890
對於分類問題的
所以當我們直接採用了線性迴歸的解去解分類問題,一般來說還算ok。或者我們可以以線性迴歸問題的解作爲分類問題的初始解,這樣加速分類問題的求解速度。
歡迎轉載,可以關注博客:http://blog.csdn.net/cqy_chen