【機器學習基礎】過擬合
泛化能力差和過擬合問題

以一維的回歸分析為例,輸出為目標函數加上一點噪聲yn=fn(xn)+noise。如果用高階多項式去擬合數據的話(比如有五個數據 點,用四次多項式去擬合的話,如果讓該多項式曲線均通過這幾個數據點的話,則只有唯一解),這種情況可能使得訓練誤差Ein很小,但是實際的真實誤差就可 能很大,這說明我們求解的模型的泛化能力很差(bad generalization),這在訓練誤差很小的情況下推論到未知的數據的話預測結果就會很糟。
VC bound告訴我們,當vc維很高的時候,就會發生Ein很低,但Eout很高的情形。

從上面這個圖可以看出,真實誤差Eout有一個先降后升的趨勢,如果定義Eout這個曲線的最低點為dvc star為最好的vc維的地方,如果橫坐標向右移,這時候Ein下降,但是Eout上升,這種情況我們把fitting做的很好,不過做的太過頭了,就產 生了過擬合的現象(over fitting);而如果從dvc star向左移,這樣造成了欠擬合(under fitting)。
這里過擬合是很常見,而且很不容易解決的問題。
造成過擬合的原因
過擬合其中一個可能的成因就是模型的vc維過高,使用了過強的模型復雜度(model complexity)的能力。
還有一個原因是數據中的噪聲,造成了如果完全擬合的話,也許與真實情景的偏差更大。
最后還有一個原因是數據量有限,這使得模型無法真正了解整個數據的真實分布。
學習曲線(Learning curves)

我們以二次多項式和十次多項式的曲線來對比,由之前了解的學習曲線(learning curves)顯示隨著數據量的增加,誤差是如何變化的。
如果是二次多項式的學習曲線,Ein會比期望誤差(expected error)效果好一點,因為我們可以在已知的數據上做優化,Eout要比期望誤差高一點,因為有噪聲的印象,有可能是兩倍噪聲的效果。
如果是十次多項式的學習曲線,由于模型復雜度增大(vc維變大),在數據量很小的情況下該假設集合的泛化誤差較大。
如果兩張圖比較,我們可以看出在數據量較小的情況下,H10的圖形有較高的Eout,即出現過擬合。
這里告訴我們,在數據量不太多的情況下,比較簡單的模型(含有較少的假設)也許不太完美,但泛化效果可能會更好一點。
隨機性噪聲和決定性噪聲(stochastic noise and deterministic noise)
我們把數據分成兩個部分,一部分是目標函數,另一部分是高斯噪聲。構造數據的影響因素有噪聲的強度、目標函數的復雜度、數據量。我們要探討這三個變量對過擬合有什么影響?

下圖中,左圖是固定的模型復雜度情況下,噪聲和數據量的關系,這里表示的是隨機性噪聲(stochastic noise)的影響。圖形中紅色區域是過擬合情況比較嚴重的,藍色區域是擬合情況比較好的。圖形紅色區域集中在左上角,噪聲很大且數據量很少的情況;而圖 形藍色區域集中在右下角,是數據很多且噪聲很小的情況。
右圖是固定噪聲的影響,橫軸是數據量,縱軸是目標函數的復雜度,顏色的表示意義同左圖一 樣,在數據量少且模型更復雜的情況容易出現過擬合的現象,在數據量足夠且目標函數不太復雜的話擬合效果會比較好,這里表示的是決定性噪聲 (deterministic noise)的影響。
從以下這兩個圖可以看出,在數據量較小、隨機性噪聲太高、決定性噪聲太多(目標函數很復 雜)、dv維太高(例如目標函數是低次多項式,而假設是高次多項式,用這種高次多項式去擬合低次多項式,在有噪聲的情況下,高次多項式有可能去擬合這些噪 聲,從而造成過擬合現象,這解釋了下圖右圖中左下角的紅色區域的過擬合的成因)都會造成過擬合現象。

對付過擬合
為了避免過擬合現象有以下幾種可能的解決方式:
- start form simple model,使用簡單一點的模型
- data clearning/pruning,做數據的情形和修整,確保數據準確
- data hinting,從現有的數據中獲取更多的數據或者提示
- regularization,規則化
- validation,檢驗
補充:
關于數據的提示(data hinting)的解釋,比如手寫識別中,可以通過將原來的數據圖片做一點旋轉,再進行訓練來規避數據不夠多的情況,但這里要注意的是這里的數據不是獨立同分布于一個原始的分布的。
轉載請注明作者Jason Ding及其出處
Github博客主頁(http://jasonding1354.github.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
簡書主頁(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)