一、過擬合問題
1.1 問題定義
過擬合(overfitting)是指在模型參數擬合過程中的問題,由於訓練數據包含抽樣誤差,訓練時,復雜的模型將抽樣誤差也考慮在內,將抽樣誤差也進行了很好的擬合。具體表現就是最終模型在訓練集上效果好;在測試集上效果差。模型泛化能力弱。
1.2 出現過擬合的原因
1. 訓練集的數量級和模型的復雜度不匹配。訓練集的數量級要小於模型的復雜度;
2. 訓練集和測試集特征分布不一致;
3. 樣本里的噪音數據干擾過大,大到模型過分記住了噪音特征,反而忽略了真實的輸入輸出間的關系;
4. 權值學習迭代次數足夠多(Overtraining),擬合了訓練數據中的噪聲和訓練樣例中沒有代表性的特征。
1.3 避免此類問題的手段
- simpler model structure(簡化模型):調小模型復雜度,使其適合自己訓練集的數量級(縮小寬度和減小深度)
- data augmentation(增加數據):訓練集越多,過擬合的概率越小。在計算機視覺領域中,增廣的方式是對圖像旋轉,縮放,剪切,添加噪聲等
- regularization(正則化):參數太多,會導致我們的模型復雜度上升,容易過擬合,也就是我們的訓練誤差會很小。 正則化是指通過引入額外新信息來解決機器學習中過擬合問題的一種方法。這種額外信息通常的形式是模型復雜性帶來的懲罰度。 正則化可以保持模型簡單,另外,規則項的使用還可以約束我們的模型的特性。有L1和L2兩種形式
- dropout(丟失):這個方法在神經網絡里面很常用。dropout方法是ImageNet中提出的一種方法,通俗一點講就是dropout方法在訓練的時候讓神經元以一定的概率不工作
- early stopping(提前停止):對模型進行訓練的過程即是對模型的參數進行學習更新的過程,這個參數學習的過程往往會用到一些迭代方法,如梯度下降(Gradient descent)學習算法。Early stopping便是一種迭代次數截斷的方法來防止過擬合的方法(當accuracy不再提高時,就停止訓練),即在模型對訓練數據集迭代收斂之前停止迭代來防止過擬合。
- ensemble(集成學習算法):也可以有效的減輕過擬合。Bagging通過平均多個模型的結果,來降低模型的方差。Boosting不僅能夠減小偏差,還能減小方差。
- 重新清洗數據:數據清洗從名字上也看的出就是把"臟"的"洗掉",指發現並糾正數據文件中可識別的錯誤的最后一道程序,包括檢查數據一致性,處理無效值和缺失值等。導致過擬合的一個原因也有可能是數據不純導致的,如果出現了過擬合就需要我們重新清洗數據。
二、欠擬合((高偏差))
2.1 問題定義
欠擬合是指模型在訓練集、驗證集和測試集上均表現不佳的情況
2.2 避免此類問題的手段
- 模型復雜化:對同一個算法復雜化。例如回歸模型添加更多的高次項,增加決策樹的深度,增加神經網絡的隱藏層數和隱藏單元數等;棄用原來的算法,使用一個更加復雜的算法或模型。例如用神經網絡來替代線性回歸,用隨機森林來代替決策樹等
- 增加更多的特征:使輸入數據具有更強的表達能力:特征挖掘十分重要,尤其是具有強表達能力的特征,往往可以抵過大量的弱表達能力的特征
- 調整參數和超參數:超參數包括:神經網絡中:學習率、學習衰減率、隱藏層數、隱藏層的單元數、Adam優化算法中的β1和β2參數、batch_size數值等其他算法中:隨機森林的樹數量,k-means中的cluster數,正則化參數λ等
- 增加訓練數據往往沒有用:欠擬合本來就是模型的學習能力不足,增加再多的數據給它訓練它也沒能力學習好
- 降低正則化約束:正則化約束是為了防止模型過擬合,如果模型壓根不存在過擬合而是欠擬合了,那么就考慮是否降低正則化參數λλ或者直接去除正則化項