當我們使用前面部落格所講述的線性迴歸和羅吉斯迴歸時,經常會出現一種過擬合(over-fitting)問題。下面對過擬合下一個定義:
過擬合(over-fitting):
所謂的過擬合就是:如果我們有非常多的特徵時,通過使用這些特徵學習得到的假設可能非常好地適應訓練集(代價函數很小,幾乎為零),但是可能這種假設不能推廣到新的資料(對於新的資料預測的結果不好,也就是我們所說的泛化能力不強)。
下面我們從例子中理解什麼是過擬合、欠擬合等概念:
上面三組都是對於樓價的預測,對於第一組來說採用的是線性模型,明顯可以看出擬合的效果不是很好,誤差還是很大,這種現象叫做欠擬合(有時候也稱為高偏差);第三組模型採用的是四次方模型,對於訓練樣本來說,擬合的效果很好,損失幾乎為零,但是這種擬合過於注重擬合訓練資料,而忘記了訓練模型的意義,即對新的資料的預測,這種模型對於新的資料預測的效果不好,這種現象稱為過擬合(高方差)。顯然,中間的二次方模型可以很好的擬合訓練資料(雖然損失相對第三個模型較大,但是它能夠很好的表徵資料的特性,同時對於資料有很好的魯棒性,但資料受到某種因素影響導致其中的少數資料偏離未經處理資料,該模型仍然能夠很好的擬合)。
上述從迴歸問題中討論了過擬合和欠擬合的現象,對於分類問題同樣適用。
解決過擬合的方法: 去除一些不能協助我們正確預測的特徵。一般當特徵數目比較多,訓練樣本比較少時,容易出現過擬合。所以可以手動選擇一些相關的特徵,去除一些不相關的特徵,同時我們也可以使用一些演算法來進行選擇,如PCA等(後續講解)。 正則化。該方法保留所有的特徵,只是減少參數的大小。正則化的方法對於特徵比較多時,效能也會很好,每個特徵都能夠對預測結果產生一點影響。
下面我們從一個例子中來理解什麼是正則化的思想:
還是從上面的例子出發,我們看第三幅映像,該擬合明顯出存在過擬合現象,它的假設為:
hθ(x)=θ0+θ1(x1)+θ2x22+θ3x33+θ4x44 h_{\theta }(x)=\theta _{0}+\theta _{1}(x_{1})+\theta _{2}x_{2}^{2}+\theta _{3}x_{3}^{3}+\theta _{4}x_{4}^{4}
正則化在代價函數中實現的過程:
我們通過比較這三幅圖不難發現,過擬合現象產生的原因是由於高次的特徵引起的,所以我們應該減小高次特徵的權值 θ3、θ4 \theta _{3}、\theta _{4},我們可以從代價函數入手,對於參數 θ3、θ4 \theta _{3}、\theta _{4}加入懲罰,使得參數 θ3、θ4 \theta _{3}、\theta _{4}減小,修改後的代價函數可以為:
我們來分析一下實現的過程,對於上述運算式,我們的目的是最小化損失函數,但是對於 θ3、θ4 \theta _{3}、\theta _{4}來說,前面的係數很大,要想最小化損失函數,必須使 θ3、θ4 \theta _{3}、\theta _{4}的值很小,達到減小 θ3、θ4 \theta _{3}、\theta _{4}的目的。
上述只是從具體的例子出發,實現正則化的過程,但是在一般情況下,特徵的數目比較多,我們並不知道應該對哪些參數進行懲罰,所以我們將對所有參數進行懲罰,並且讓代價函數最下來選擇懲罰的程度,所以存在正則化的損失函數的定義如下:
前面一部分代表資料擬合的損失最小,後面一項代表參數疊加後最下。 λ \lambda稱為正則化參數,它控制著二者之間的平衡。
值得注意的是:我們一般不對 θ0 \theta _{0}進行懲罰。
對於上述執行個體,經過正則化和未經過正則化的比較如下:
下面我們來說明一下 λ