過擬合、欠擬合及其解決辦法


1.什么是過擬合?

過擬合(overfitting)是指在模型參數擬合過程中的問題,由於訓練數據包含抽樣誤差,訓練時,復雜的模型將抽樣誤差也考慮在內,將抽樣誤差也進行了很好的擬合。

具體表現就是最終模型在訓練集上效果好;在測試集上效果差。模型泛化能力弱。

 

2、產生過擬合根本原因:

     (1)觀察值與真實值存在偏差
   訓練樣本的獲取,本身就是一種 抽樣。抽樣操作就會存在誤差, 也就是你的訓練樣本 取值 X, X = x(真值) + u(隨機誤差),機器學習的 優化函數 多為 min Cost函數,自然就是盡可能的擬合 X,而不是真實的x,所以 就稱為過擬合了,實際上是學習到了真實規律以外的 隨機誤差。舉個例子說,你想做人臉識別,人臉里有背景吧,要是你這批人臉背景A都相似,學出來的模型,見到背景A,就會認為是人臉。這個背景A就是你樣本引入的誤差。
  (2)訓練數據不足,數據太少,導致無法描述問題的真實分布
      舉個例子,投硬幣問題 是一個 二項分布,但是如果 你碰巧投了10次,都是正面。那么你根據這個數據學習,是無法揭示這個規律的,根據統計學的大數定律(通俗地說,這個定理就是,在試驗不變的條件下,重復試驗多次,隨機事件的頻率近似於它的概率),當樣本多了,這個真實規律是必然出現的。
   為什么說 數據量大了以后 就能防止過擬合,數據量大了,
     問題2,不再存在,
     問題1,在求解的時候因為數據量大了, 求解min Cost函數時候, 模型為了求解到最小值過程中,需要兼顧真實數據擬合 和 隨機誤差擬合,所有樣本的真實分布是相同的(都是人臉),而隨機誤差會一定程度上抵消(背景),

     另外:維度災難與過擬合請移步:https://www.cnblogs.com/CJT-blog/p/10422923.html

  (3)數據有噪聲(類似(1))

   我們可以理解地簡單些:有噪音時,更復雜的模型會盡量去覆蓋噪音點,即對數據過擬合。這樣,即使訓練誤差Ein 很小(接近於零),由於沒有描繪真實的數據趨勢,Eout 反而會更大。
   即噪音嚴重誤導了我們的假設。還有一種情況,如果數據是由我們不知道的某個非常非常復雜的模型產生的,實際上有限的數據很難去“代表”這個復雜模型曲線。我們采用不恰當的假設去盡量擬合這些數據,效果一樣會很差,因為部分數據對於我們不恰當的復雜假設就像是“噪音”,誤導我們進行過擬合。

   如下面的例子,假設數據是由50次冪的曲線產生的(下圖右邊),與其通過10次冪的假設曲線去擬合它們,還不如采用簡單的2次冪曲線來描繪它的趨勢。

 (4)訓練模型過度,導致模型非常復雜

     有點像原因(3),模型強大到連噪聲都學會了。

 

3、抑制過擬合的幾種方法

(1)數據處理:清洗數據、減少特征維度、類別平衡;

1、清洗數據:糾正錯誤的label,或者刪除錯誤數據

2、降維:

維數約減(移步:https://www.cnblogs.com/CJT-blog/p/10253853.html)

特征選擇(移步:https://www.cnblogs.com/CJT-blog/p/10286574.html)

3、類別平衡:

請移步:https://www.cnblogs.com/CJT-blog/p/10223157.html

 

(2)輔助分類節點(auxiliary classifiers)

在Google Inception V1中,采用了輔助分類節點的策略,即將中間某一層的輸出用作分類,並按一個較小的權重加到最終的分類結果中,這樣相當於做了模型的融合,同時給網絡增加了反向傳播的梯度信號,提供了額外的正則化的思想.

 

(3)正則化:

 

獲取更多數據:從數據源獲得更多數據,或數據增強;

 

L2、L1、BN層等;

 

使用合適的模型(減少網絡的層數、神經元個數等,限制權重過大),限制網絡的擬合能力,避免模型過於復雜;

 

增加噪聲:輸入時+權重上(高斯初始化);

 

多種模型結合:集成學習的思想;

 

Dropout:隨機從網絡中去掉一部分隱神經元;

 

限制訓練時間、次數,及早停止

 

········

 

詳細請移步:https://www.cnblogs.com/CJT-blog/p/10424060.html

 

 4、欠擬合

現象:訓練的模型在訓練集上面的表現很差,在驗證集上面的表現也很差。

原因:模型發生欠擬合的最本質原因是“訓練的模型太簡單,最通用的特征模型都沒有學習到”;

措施:

方案1:做特征工程,添加更多的特征項。即提供的特征不能表示出那個需要的函數;

方案2:減少正則化參數。即使得模型復雜一些;

方案3:使用更深或者更寬的模型。

方案4:使用集成方法。融合幾個具有差異的弱模型,使其成為一個強模型;

 

 

參考資料:

https://www.cnblogs.com/eilearn/p/9203186.html

https://blog.csdn.net/u012457308/article/details/79577340

https://blog.csdn.net/taoyanqi8932/article/details/71101699

https://blog.csdn.net/liuy9803/article/details/81611402

https://blog.csdn.net/chen645096127/article/details/78990928


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM