線性迴歸
線性迴歸是機器學習最基礎的,也是最經典的算法,下面就來介紹這個算法。
假如我們要去銀行貸款,那麼銀行會貸給我們多少錢,我們可以通過特徵來計算出來。
- 數據:工資和年齡(2個特徵)
- 目標:預測銀行會貸款給我多少錢 (標籤)
- 考慮:工資和年齡都會影響銀行貸款的結果,那麼它們各自有多大的影響呢?(參數)
工資 | 年齡 | 額度 |
---|---|---|
4000 | 25 | 20000 |
8000 | 30 | 70000 |
5000 | 28 | 35000 |
7500 | 33 | 50000 |
12000 | 40 | 85000 |
在以前數學課中,線性方程就是要在座標軸找出一條直線來擬合我們的數據,那當我們的x變成兩個特徵,那我們就要和下圖一樣找出一個最合適的平面,來擬合我們的數據了。
現在,爲了求出平面,我們要引入參數了,我們假設年齡對最終的結果造成了θ1的影響,工資對最終的結果造成了θ2的影響,我們把參數和特徵結合在一起,那麼這個平面的方程爲θ0+θ1x1+θ2x2(θ0是偏置項,和特徵沒有關係),(θ1θ2是權重參數,對結果造成較大的影響,θ0是偏置參數,對結果造成較小的影響)
我們擬合的平面看起來有點長,我們把他整合成上面的形式,可能有人會問,如果是上面那樣,那平面不就變成θ0x0+θ1x1+θ2x2了嗎,x0是什麼呢,在這裏,我們爲了方便,我們加入一列x0,每一列都是1,1乘任何數都等於這個數本身,所以我們最後把平面整合成了一個簡單的式子(這樣是爲了矩陣的運算)。
誤差
上面的我們求出的平面是我們的預測值,那麼,預測值和真實值之間肯定有差異(我們用ε來表示該誤差)。
y代表的是真實值,i表示的是第i個樣本,真實值=預測值+誤差。
高斯分佈(正態分佈)
對於誤差ε來說,ε符合高斯分佈的條件,獨立並且具有相同的分佈。
高斯分佈的意思是,大多數情況下,誤差都在對稱軸左右浮動,並且浮動不會太大,極小情況下浮動比較大。
我們知道了誤差是服從高斯分佈的,那我們把誤差代進高斯分佈的表達式裏(exp(x)代表的是e的x次方)
似然函數
關於似然函數,https://blog.csdn.net/caimouse/article/details/60142085 這篇博文我覺得還不錯,大家可以參考一下,簡單來說,似然函數就是求出什麼參數跟我們的數據組合後恰好是真實值。
而極大似然估計,講的是,什麼樣的概率使得我們的結果越大越好呢,我們要做的就是使他成爲真實值的概率越大越好。下面是最大似然估計(m表示有m個樣本):
上面的式子是累乘,我們要把它變成對數似然函數,因爲logAB=logA+logB,加法問題比乘法問題好求太多了。
因爲logAB=logA+logB,式子從累成變成累加的了,接着進一步求解
目標
現在我們的目標轉換成,讓似然函數(對數變換後也一樣)越大越好。
那麼對於上面的式子,左邊的是常數,右邊的我們就希望他越小越好,這樣整個函數纔會越大。
現在目標函數就變成了上面這個式子,我們希望這個式子越小越好。求這個目標函數,我們有兩種方法,第一種方法是矩陣法,第二個方法是梯度下降。
矩陣法求解
我們可以把式子進一步化簡,化簡成矩陣計算的形式,這裏的(X是m行x列,θ是x行1列)
對於這個式子,我們可以用矩陣法來求解,通過對θ求偏導的方式,求得θ。
https://blog.csdn.net/u012421852/article/details/79562125 這個博文很詳細的講到了求導的過程。
最終,我們可以得到θ的值,就是下面的式子。
梯度下降求解
對於矩陣法,有時候並不能夠直接求解,我們就需要用到梯度下降法,是機器學習很重要的一個優化策略。
梯度下降法是最早最簡單,也是最爲常用的最優化方法。梯度下降法實現簡單,當目標函數是凸函數時,梯度下降法的解是全局解。一般情況下,其解不保證是全局最優解,梯度下降法的速度也未必是最快的。梯度下降法的優化思想是用當前位置負梯度方向作爲搜索方向,因爲該方向爲當前位置的最快下降方向,所以也被稱爲是”最速下降法“。最速下降法越接近目標值,步長越小,前進越慢。
梯度下降講的是,對於一個求極值的問題,我們可以沿着各個參數導數爲0的方向前進。
這就是我們目標函數的圖像(對於線性迴歸的目標函數,圖像是一個碗狀,也是凸函數)(2個參數,θ0和θ1),要想走到最低點,我們需要一步一步來。
我們新構建一個目標函數(平方誤差函數,m代表m個樣本,我們需要對損失函數求均值,右邊括號表示預測值減去真實值的誤差的平方):
我們的目標函數求參數求導得到的是(紅圈圈起來的表示第i個樣本第j個特徵的x值):
接着我們要更新參數了,更新後的參數爲原來的參數減去α乘以上面的式子,這裏的α代表的是學習率。
學習率值的是你更新權重的快慢,當設置過大,你可以就會錯過最低點還會使函數不能收斂甚至發散,所以不能設置過大。
我們注意到了式子有個m,我們進行梯度下降的時候,可以對m進行設置。
- 批量梯度下降法
m=全部樣本時,我們可以稱爲批量梯度下降法,意思是一次迭代所有樣本 ,容易得到最優解 ,缺點是,如果面對數量巨大的樣本量(如40萬個),採取這種訓練方式,所耗費的時間會非常長。 - 隨機梯度下降
m=1,每次找一個樣本,每訓練一組樣本就把梯度更新一次。缺點是容易造成過擬合。 - 小批量梯度下降
每次取一小批樣本,不容易造成過擬合速度也快,實用。
總結
我們通過對實際問題的轉化求出線性迴歸的目標函數,通過矩陣法求解或者用梯度下降法求參數進行求解,線性迴歸函還是比較容易掌握的。