之前我們討論了幾個機器學習的模型,線性迴歸模型(Linear Regression)和邏輯迴歸模型(Logistic Regression),這一次我們討論一下關於模型數據擬合的問題以及歸一化方法(Regularization)。
過擬合問題(The Problem of Overfitting)
如果我們有非常非常多的特徵,我們通過學習得到的假設可能會非常適應訓練集(代價函數的值可能幾乎爲0),但是這樣的假設能不能推廣使用到新的數據呢?下面有一些例子:
從左至右來看,第一個模型是一個線性模型,擬合度很低,也稱作低度擬合(Underfitting),不能很好地適應我們的訓練集;第三個模型,是一個四次方的模型,屬於過度擬合,雖然能夠很好地適應我們的訓練集數據,但是在新輸入變量進行預測的時候,可能效果會很差;而第二個模型,似乎是最合適的模型。
在分類問題(Classification)中,也存在這樣的問題:
最後一個模型就是過度擬合的情況。
那麼問題出現了,如果我們發現了這樣過度擬合的情況,如何處理?
思考後,有兩種方式:
1,丟棄一些不能幫助我們正確預測的特徵。
- 可能是手工選擇保留哪些特徵
- 或者使用一些模型選擇的算法來幫忙(例如 PCA)
- 保留所有的特徵,但是減少參數的大小(Magnitude)
歸一化代價函數(Regularization Cost Function)
上面的迴歸問題中,如果我們使用的模型是:
我們決定要減小ø3和ø4的大小,我們需要做的就是修改代價函數,在其中ø3和ø4的身上,設置一些懲罰(Punishment)。這樣做的話,我們在嘗試最小化代價時,也需要將這個懲罰代入考慮中,並最終導致選擇小一些的ø3和ø4 。 修改之後的代價函數如下:
這樣,通過代價函數選擇出的ø3和ø4對整個預測結果的影響就比之前小了很多。
加入我們有非常多的特徵,我們並不知道其中哪些特徵是我們要懲罰的,我們將對所有特徵進行懲罰,並且讓代價函數最優化的方法來選擇懲罰的程度。這樣的結果,就得到了一個較爲簡單的能夠防止過度擬合問題的假設:
其中λ又稱爲歸一化參數(Regularization Parameter)。
這裏注意:根據慣例,我們不會對ø0進行懲罰。
經過歸一化處理的模型與原模型的對比可能如下圖:
如果選擇的歸一化參數λ過大,就會把所有參數都最小化了,這樣導致模型hø(x)=ø0也就是上圖中的紅色直線的情況,數據就屬於低度擬合。
下回我們討論,線性邏輯模型的歸一化和邏輯迴歸模型的歸一化。