1. 程式人生 > >演算法工程師修仙之路:吳恩達機器學習(六)

演算法工程師修仙之路:吳恩達機器學習(六)

吳恩達機器學習筆記及作業程式碼實現中文版

第五章 正則化


過擬合問題

  • 線性迴歸和邏輯迴歸能夠有效地解決許多問題,但是當將它們應用到某些特定的機器學習應用時,會遇到過擬合(over-fitting)的問題,可能會導致它們效果很差。

  • 正則化(regularization)的技術,它可以改善或者減少過度擬合問題。

  • 如果我們有非常多的特徵,我們通過學習得到的假設可能能夠非常好地適應訓練集(代價函式可能幾乎為 0),但是可能會不能推廣到新的資料。

  • 如果我們發現了過擬合問題:

    • 丟棄一些不能幫助我們正確預測的特徵。可以是手工選擇保留哪些特徵,或者使用一些模型選擇的演算法來幫忙(例如 PCA)。
    • 正則化。保留所有的特徵,但是減少引數的大小。

代價函式

  • 一般來說,正是那些高次項導致了過擬合的產生,所以如果我們能讓這些高次項的係數接近於 0 的話,我們就能很好的擬合了。

  • 假如我們有非常多的特徵,我們並不知道其中哪些特徵我們要懲罰,我們將對所有的特徵進行懲罰,並且讓代價函式最優化的軟體來選擇這些懲罰的程度。這樣的結果是得到了一個較為簡單的能防止過擬合問題的假設: J (

    θ 0 , θ 1 , .
    . . , θ n ) = 1 2 m [ i = 1 m ( h θ ( x ( i ) ) y ( i ) ) 2 + λ j = 1 n θ j 2 ] J(\theta_0, \theta_1, ..., \theta_n)=\frac{1}{2m}[\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^n\theta_j^2] 。其中 λ \lambda 又稱為正則化引數( Regularization Parameter)。根據慣例,我們不對 θ 0 \theta_0 進行懲罰。

  • 如果選擇的正則化引數 λ \lambda 過大, 則會把所有的引數都最小化了,導致模型變成 h θ ( x ) = θ 0 ℎ_\theta(x)=\theta_0

  • 如果我們令 λ \lambda 的值很大的話,為了使 Cost Function 儘可能的小,所有的 θ \theta 的值(不包括 θ 0 \theta_0 )都會在一定程度上減小。

  • λ \lambda 的值太大了, 那麼 θ \theta (不包括 θ 0 \theta_0 )都會趨近於 0,這樣我們所得到的只能是一條平行於x軸的直線。所以對於正則化,我們要取一個合理的 λ \lambda 的值,這樣才能更好的應用正則化。

線性迴歸的正則化

  • 正則化線性迴歸的代價函式為: J ( θ 0 , θ 1 , . . . , θ n ) = 1 2 m [ i = 1 m ( h θ ( x ( i ) ) y ( i ) ) 2 + λ j = 1 n θ j 2 ] J(\theta_0, \theta_1, ..., \theta_n)=\frac{1}{2m}[\sum_{i=1}^m(h_\theta(x^{(i)})-y^{(i)})^2+\lambda\sum_{j=1}^n\theta_j^2]

  • 如果我們要使用梯度下降法令這個代價函式最小化,因為我們未對 θ 0 \theta_0 進行正則化,所以梯度下降演算法將分兩種情形:

    • θ 0 = θ 0 α 1 m i = 1 m [ h θ ( x ( i ) ) y ( i ) ] x 0 ( i ) \theta_0=\theta_0-\alpha*{\frac{1}{m}\sum_{i=1}^m}[h_\theta({x^{(i)}})-y^{(i)}]x_0^{(i)}
    • θ j = θ j α [ 1 m i = 1 m [ h θ ( x ( i ) ) y ( i ) ] x j ( i ) + λ m θ j ] \theta_j=\theta_j-\alpha*[{\frac{1}{m}\sum_{i=1}^m}[h_\theta({x^{(i)}})-y^{(i)}]x_j^{(i)}+\frac{\lambda}{m}\theta_j]
  • 對上面的演算法中 j = 1 , 2 , . . . , n j = 1, 2, . . . , n 時的更新式子進行調整可得:
    θ j = θ j ( 1 λ m α ) α 1 m i = 1 m [ h θ ( x ( i ) ) y ( i ) ] x j ( i ) \theta_j=\theta_j(1-\frac{\lambda}{m}\alpha)-\alpha*{\frac{1}{m}\sum_{i=1}^m}[h_\theta({x^{(i)}})-y^{(i)}]x_j^{(i)}