1.前言
前面已經推導過線性迴歸和邏輯斯特迴歸的梯度下降算法。
它們各自的梯度下降算法公式爲:
- 線性迴歸:
hθ(x)=θ0x0+θ0x1+...+θnxnθj:=θj−αm1i=1∑m(hθ(xj(i))−y(i))xj(i)(1-1)
- 邏輯斯特迴歸:
hθ(x)=g(θ0x0+θ0x1+...+θnxn)θj:=θj−αm1i∑m(hθ(x(i))−y(i))xj(i)(1-2)
其中g爲sigmoid函數
2.過擬合問題及其解決方法
如上圖,左圖展示了一個擬合曲線不能很好的擬合數據,這個現象被稱爲“欠擬合問題(underfitting)”;而最右圖雖然能夠很好的擬合數據,但是曲線過於複雜,當需要預測新數據時,可能會有偏差,這時候被稱爲“過擬合問題(overfitting)”
2.1 擬合問題中偏差和方差
- 偏差和方差
評價數據擬合程度好壞,通常用代價函數J。如果只關注Jtrain(訓練集誤差)的話,通常會導致過擬合,因此還需要關注Jcv(交叉驗證集誤差)。
- 高偏差:Jtrain和Jcv都很大,並且Jtrain≈Jcv。對應欠擬合。
- 高方差:Jtrain較小,Jcv遠大於Jtrain。對應過擬合。
如何理解高偏差和高方差?
(1)高偏差對應着欠擬合,此時Jtrain也較大,可以理解爲對任何新數據(不論其是否屬於訓練集),都有着較大的Jcv誤差,偏離真實預測較大。
(2)高方差對應着過擬合,此時Jtrain很小,對於新數據來說,如果其屬性與訓練集類似,它的Jcv就會小些,如果屬性與訓練集不同,Jcv就會很大,因此有一個比較大的波動,因此說是高方差。
就像打靶一樣,偏差描述了我們的射擊總體是否偏離了我們的目標,而方差描述了射擊準不準。
對於 多項式迴歸,當次數選取較低時,我們的 訓練集誤差 和 交叉驗證集誤差 都會很大;當次數選擇剛好時,訓練集誤差 和 交叉驗證集誤差 都很小;當次數過大時會產生過擬合,雖然 訓練集誤差 很小,但 交叉驗證集誤差 會很大( 關係圖如下 )。
所以我們可以計算 Jtrain(θ)和 Jcv(θ),如果他們同時很大的話,就是遇到了高偏差問題,而 Jcv(θ)比 Jtrain(θ) 大很多的話,則是遇到了高方差問題。
2.2 正則化(regulization)
正則化主要是用來解決過擬合問題。
右圖因爲比左圖增加了兩個參數θ3和θ4,所以造成了過擬合現象。而如果我們在最小化代價函數J(θ)的時候,也同時把θ3和θ4縮小到近乎等於0,這時候就可以變爲左圖的曲線,從而解決過擬合問題。
實際上,最小化公式可以變爲:
θmin2m1i∑m(hθ(x(i))−y(i))2+λθ32+λθ42(2-1)
這個公式在最小化代價函數的時候,也使得θ3和θ4縮小到近乎等於0。
因爲我們不知道哪個參數對模型有效果,所以可以把整體的參數都進行縮小,借鑑公式(2-1)可以把代價函數改寫成:
J(θ)=2m1i∑m(hθ(x(i))−y(i))2+λj∑nθj2(2-2)
- 其中λ是用來平衡“原始代價函數的值”和“參數和”之間的關係。
2.3 線性迴歸的正則化
根據公式(2-2),當使用梯度下降算法更新參數θ時,2m1∑im(hθ(x(i))−y(i))2對θj求偏導數還是和原來的一樣,而λ∑jnθj2對θj求偏導數:
∂θj∂λ∑jnθj2=2λθj→λθj(2-3)
最後公式(1-1)更新爲:
hθ(x)=θ0x0+θ0x1+...+θnxnθj:=θj−α[m1i=1∑m(hθ(xj(i))−y(i))xj(i)+λθj](2-4)
2.4 邏輯斯特迴歸的正則化
同理,邏輯斯特迴歸加上正則項後,公式(1-2)更新爲:
hθ(x)=g(θ0x0+θ0x1+...+θnxn)θj:=θj−α[m1i∑m(hθ(x(i))−y(i))xj(i)+λθj](2-5)