过拟合现象,原因,以及降低过拟合的方法
一、什么是過擬合,為什么要避免過擬合
圖1.1 Overfit&Normal 上圖是一張使用線性回歸擬合二維樣本數據的matlab輸出圖片,其中Normal曲線是使用使用了帶參數空間限制的最小二乘法進行求解的模型,Overfit曲線是使用最小二乘法直接求解得到的。 可以看到虛線輸出的模型可能并不是我們現實生活中所想要的模型,當我們得到Overfit所學的模型后,用于實際回歸任務中,可能對于驗證集、測試集、預測集效果并不好。它會產生這樣一種現象:**一個假設在訓練數據上能夠獲得比其他假設更好的擬合,但是在訓練數據外的數據集上卻不能很好的擬合數據**。此時我們就叫這個假設出現了**過擬合**的現象。 圖1.2 隨著多項式維數的增加交叉驗證集經驗誤差的變化 如圖1.2所示,以多項式擬合舉例,其隨著多項式維數的增加,模型在訓練集上的表現越來越好,但在交叉驗證集上的誤差卻越來越大,這顯然不是我們想要的,因為其泛化能力和魯棒性也越來越差。二、過擬合產生的原因
圖2.1 Bias/Variance偏差/方差與欠擬合/過擬合有著密不可分的關系,我們現在討論如圖2.1中右下角的低偏差高方差即只有過擬合現象的原因。
1.數據集樣本數過少
如圖2.1右下圖所示,當樣本較少且不是簇型的時候,此時的模型可能因四周“對稱”帶來的誤差累積為0,也就是對測試樣本擬合的很“完美”,但若再增加一個樣本,則可能模型的誤差會增加很多,擬合效果會很差。
2.算法模型為了更好的擬合樣本集,使其模型的擬合能力超過遠遠超過了問題復雜度,也就是學習模型過于復雜。
對于線性回歸問題來說,也就是多項式次數過高的問題;對于神經網絡來說,網絡結構過于復雜,單層節點數過多等也可能造成過擬合,以做過的一個圖像識別項目舉例,如圖2.2所示,原學習目標是想檢測完整的轎車,但分類器訓練的結果卻是將后視鏡部分當作了轎車,原因是當時訓練的stage過多,將轎車的細化特征學習過多以至于出現過擬合現象。
3.樣本中數據噪聲干擾過大,大到模型過分記住了噪聲特征,而忽略了真實的輸入輸出間的關系。
三、如何降低過擬合
1.(針對問題1)解決過擬合的根本方法是增加數據集的規模,理論上只要樣本數足夠多,即使模型足夠復雜,有一定的噪聲,模型也會收斂到一個比較好的結果。
實際中由于數據集采集成本過高,通常使用一些退而求其次的方法來制造數據集,比如在圖像處理中,可以利用反轉、平移、切割、調整光亮,使用不同濾波來擴充數據集。
而在模型的訓練階段,為了節省數據成本,我們會采取諸如留一法、交叉驗證法、自助法等用于數據采樣。
2.(針對問題2)對于模型過于復雜,我們可以做的事情很多。
2.1使模型本身簡單化
對于線性回歸我們可以降低多項式的次數,對于神經網絡我們可以減少隱藏層層數,節點數等,對于決策樹,我們可以進行剪枝操作等。
2.2正則化
正則化是解決過擬合最常用的方法之一,最為常用的用為L1正則化與L2正則化。L0可以最自然的實現“稀疏約束”,但其求解性質不太良好,利用L1范數是L0范數的最優凸近似,又有較好的求解特性(可利用近端梯度下降求解),因此可以得到較為稀疏的解,利用L2范數進行正則化則可以大大降低計算量,擁有計算方便的特性。
2.3 對于神經網絡,我們可以采用增加Drop層(在每層中隨機選取一些節點使其不工作),或是添加Batch Normalization來減輕過擬合現象。
2.4進行特征選擇與稀疏學習,常見的特征選擇可分為分為1)過濾式,2)包裹式,3)嵌入式。稀疏表示可以使大多數問題變得線性可分,且稀疏樣本可以給存儲帶來方便,稀疏表示可以通過字典學習等方式得到,它可以將樣本轉化為合適的稀疏表示,從而使學習任務得以簡化,模型復雜度降低。
3.(針對問題三)在進行數據訓練進行之前進行數據清洗,即在回歸任務中刪除異常的噪聲點,在分類任務中將錯誤的label進行糾正。
以上為個人在機器學習、深度學習以及代碼實現中關于過擬合現象的一些淺薄認識,如有不妥之處肯請各位包涵指正。
總結
以上是生活随笔為你收集整理的过拟合现象,原因,以及降低过拟合的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WRF系列教程3:嵌套方式总结
- 下一篇: 详解中断系统