機器學習——過擬合問題(線性迴歸+邏輯斯特迴歸的正則化推導)

1.前言

前面已經推導過線性迴歸和邏輯斯特迴歸的梯度下降算法。

它們各自的梯度下降算法公式爲:

  • 線性迴歸:
    hθ(x)=θ0x0+θ0x1+...+θnxnθj:=θjα1mi=1m(hθ(xj(i))y(i))xj(i)(1-1) h_{\theta}(x) = \theta_0 x_0 + \theta_0 x_1 + ... + \theta_n x_n \\ \theta_j := \theta_j - \alpha \frac{1}{m} \sum^{m}_{i=1} (h_{\theta}(x^{(i)}_j) - y^{(i)}) x^{(i)}_j \tag{1-1}
  • 邏輯斯特迴歸:
    hθ(x)=g(θ0x0+θ0x1+...+θnxn)θj:=θjα1mim(hθ(x(i))y(i))xj(i)(1-2) h_{\theta}(x) = g(\theta_0 x_0 + \theta_0 x_1 + ... + \theta_n x_n) \\ \theta_j:=\theta_j- \alpha \frac{1}{m} \sum_i^{m}(h_\theta(x^{(i)}) - y^{(i)})x^{(i)}_j \tag{1-2}
    其中gg爲sigmoid函數

2.過擬合問題及其解決方法

過擬合和欠擬合
如上圖,左圖展示了一個擬合曲線不能很好的擬合數據,這個現象被稱爲“欠擬合問題(underfitting)”;而最右圖雖然能夠很好的擬合數據,但是曲線過於複雜,當需要預測新數據時,可能會有偏差,這時候被稱爲“過擬合問題(overfitting)

2.1 擬合問題中偏差和方差

  • 偏差和方差
    評價數據擬合程度好壞,通常用代價函數JJ。如果只關注JtrainJ_{train}(訓練集誤差)的話,通常會導致過擬合,因此還需要關注JcvJ_{cv}(交叉驗證集誤差)。
  • 高偏差JtrainJ_{train}JcvJ_{cv}都很大,並且JtrainJcvJ_{train} \approx J_{cv}。對應欠擬合。
  • 高方差JtrainJ_{train}較小,JcvJ_{cv}遠大於JtrainJ_{train}。對應過擬合。

如何理解高偏差和高方差?
(1)高偏差對應着欠擬合,此時JtrainJ_{train}也較大,可以理解爲對任何新數據(不論其是否屬於訓練集),都有着較大的JcvJ_{cv}誤差,偏離真實預測較大。

(2)高方差對應着過擬合,此時JtrainJ_{train}很小,對於新數據來說,如果其屬性與訓練集類似,它的JcvJ_{cv}就會小些,如果屬性與訓練集不同,JcvJ_{cv}就會很大,因此有一個比較大的波動,因此說是高方差。

偏差和方差

就像打靶一樣,偏差描述了我們的射擊總體是否偏離了我們的目標,而方差描述了射擊準不準。

對於 多項式迴歸,當次數選取較低時,我們的 訓練集誤差 和 交叉驗證集誤差 都會很大;當次數選擇剛好時,訓練集誤差 和 交叉驗證集誤差 都很小;當次數過大時會產生過擬合,雖然 訓練集誤差 很小,但 交叉驗證集誤差 會很大( 關係圖如下 )。

誤差
所以我們可以計算 Jtrain(θ)J_{train}(θ)Jcv(θ)J_{cv}(θ),如果他們同時很大的話,就是遇到了高偏差問題,而 Jcv(θ)J_{cv}(θ)Jtrain(θ)J_{train}(θ) 大很多的話,則是遇到了高方差問題。

2.2 正則化(regulization)

正則化主要是用來解決過擬合問題。

正則化
右圖因爲比左圖增加了兩個參數θ3\theta_3θ4\theta_4,所以造成了過擬合現象。而如果我們在最小化代價函數J(θ)J(\theta)的時候,也同時把θ3\theta_3θ4\theta_4縮小到近乎等於0,這時候就可以變爲左圖的曲線,從而解決過擬合問題。

實際上,最小化公式可以變爲:
minθ12mim(hθ(x(i))y(i))2+λθ32+λθ42(2-1) \mathop{min} \limits_{\theta} \frac{1}{2m} \sum_i^{m}(h_\theta(x^{(i)}) - y^{(i)})^2 + \lambda \theta_3^2 + \lambda \theta_4^2 \tag{2-1}
這個公式在最小化代價函數的時候,也使得θ3\theta_3θ4\theta_4縮小到近乎等於0。

因爲我們不知道哪個參數對模型有效果,所以可以把整體的參數都進行縮小,借鑑公式(2-1)可以把代價函數改寫成:
J(θ)=12mim(hθ(x(i))y(i))2+λjnθj2(2-2) J(\theta) = \frac{1}{2m} \sum_i^{m}(h_\theta(x^{(i)}) - y^{(i)})^2 + \lambda \sum_j^{n} \theta_j^2 \tag{2-2}

  • 其中λ\lambda是用來平衡“原始代價函數的值”和“參數和”之間的關係。

2.3 線性迴歸的正則化

根據公式(2-2),當使用梯度下降算法更新參數θ\theta時,12mim(hθ(x(i))y(i))2\frac{1}{2m} \sum_i^{m}(h_\theta(x^{(i)}) - y^{(i)})^2θj\theta_j求偏導數還是和原來的一樣,而λjnθj2\lambda \sum_j^{n} \theta_j^2θj\theta_j求偏導數:

λjnθj2θj=2λθjλθj(2-3) \frac{\partial \lambda \sum_j^{n} \theta_j^2}{\partial \theta_j} = 2 \lambda \theta_j \to \lambda \theta_j \tag{2-3}

  • 其中2可以融合到λ\lambda中.

最後公式(1-1)更新爲:
hθ(x)=θ0x0+θ0x1+...+θnxnθj:=θjα[1mi=1m(hθ(xj(i))y(i))xj(i)+λθj](2-4) h_{\theta}(x) = \theta_0 x_0 + \theta_0 x_1 + ... + \theta_n x_n \\ \theta_j := \theta_j - \alpha [\frac{1}{m} \sum^{m}_{i=1} (h_{\theta}(x^{(i)}_j) - y^{(i)}) x^{(i)}_j + \lambda \theta_j] \tag{2-4}

2.4 邏輯斯特迴歸的正則化

同理,邏輯斯特迴歸加上正則項後,公式(1-2)更新爲:
hθ(x)=g(θ0x0+θ0x1+...+θnxn)θj:=θjα[1mim(hθ(x(i))y(i))xj(i)+λθj](2-5) h_{\theta}(x) = g(\theta_0 x_0 + \theta_0 x_1 + ... + \theta_n x_n) \\ \theta_j:=\theta_j- \alpha [\frac{1}{m} \sum_i^{m}(h_\theta(x^{(i)}) - y^{(i)})x^{(i)}_j + \lambda \theta_j]\tag{2-5}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章