1. 程式人生 > >Overfitting-過擬合

Overfitting-過擬合

什麼是過擬合

過擬合:我們通過訓練集訓練的模型對於訓練樣本的的擬合程度十分高,就會放大一些不必要的特徵,再對測試集進行測試時,就容易造成測試精度很低,也就是模型的泛化能力很弱,這就是過擬合。

怎麼解決過擬合

對應導致過擬合發生的幾種條件,我們可以想辦法來避免過擬合。

(1) 假設過於複雜(excessive dvc) => start from simple model

(2) 隨機噪音 => 資料清洗         資料清洗(data ckeaning/Pruning) 將錯誤的label 糾正或者刪除錯誤的資料

(3) 資料規模太小 => 收集更多資料,或根據某種規律“偽造”更多資料

“偽造”更多資料, add "virtual examples" 例如,在數字識別的學習中,將已有的數字通過平移、旋轉等,變換出更多的資料。

(4)交叉驗證

在訓練的過程中驗證在測試集上的正確率,當正確率不再有明顯提升時停止訓練

(5)利用L1、L2正則化。利用懲罰機制,讓W引數變化不會過大,這些方法適用於大多數的機器學習, 包括神經網路. 

過擬合 (Overfitting)-4

(6)Dropout

僅適用於神經網路。在訓練的時候, 我們隨機忽略掉一些神經元和神經聯結 , 是這個神經網路變得”不完整”. 用一個不完整的神經網路訓練一次.到第二次再隨機忽略另一些, 變成另一個不完整的神經網路. 有了這些隨機 drop 掉的規則, 我們可以想象其實每次訓練的時候, 我們都讓每一次預測結果都不會依賴於其中某部分特定的神經元. 像l1, l2正規化一樣, 過度依賴的 W , 也就是訓練引數的數值會很大, l1, l2會懲罰這些大的 引數. Dropout 的做法是從根本上讓神經網路沒機會過度依賴.

過擬合擴充套件閱讀

1.泛化能力

機器學習的主要挑戰是我們的演算法必須能夠在先前未觀測的新輸入上表現良好,而不只是在訓練集上表現良好。在先前未觀測到的輸入上表現良好的能力被稱為 泛化( generalization)

2.資料噪音

就是雜七雜八的資料,沒反應資料的特徵、甚至干擾資料特徵的資料。

有噪音時,更復雜的模型會盡量去覆蓋噪音點,即對資料過擬合!這樣,即使訓練誤差很小(接近於零),由於沒有描繪真實的資料趨勢,測試誤差反而會更大。即噪音嚴重誤導了我們的假設