防止模型過擬合的必備方法!

  來自|機器之心   作者|Mahitha

正如巴菲特所言:「近似的正確好過精確的錯誤。」

在機器學習中,過擬合(overfitting)會使模型的預測性能變差,通常發生在模型過於複雜的情況下,如參數過多等。本文對過擬合及其解決方法進行了歸納闡述。

在機器學習中,如果模型過於專注於特定的訓練數據而錯過了要點,那麼該模型就被認爲是過擬合。該模型提供的答案和正確答案相距甚遠,即準確率降低。這類模型將無關數據中的噪聲視爲信號,對準確率造成負面影響。即使模型經過很好地訓練使損失很小,也無濟於事,它在新數據上的性能仍然很差。欠擬合是指模型未捕獲數據的邏輯。因此,欠擬合模型具備較低的準確率和較高的損失。

**   如何確定模型是否過擬合?**

構建模型時,數據會被分爲 3 類:訓練集、驗證集和測試集。訓練數據用來訓練模型;驗證集用於在每一步測試構建的模型;測試集用於最後評估模型。通常數據以 80:10:10 或 70:20:10 的比率分配。

在構建模型的過程中,在每個 epoch 中使用驗證數據測試當前已構建的模型,得到模型的損失和準確率,以及每個 epoch 的驗證損失和驗證準確率。模型構建完成後,使用測試數據對模型進行測試並得到準確率。如果準確率和驗證準確率存在較大的差異,則說明該模型是過擬合的。

如果驗證集和測試集的損失都很高,那麼就說明該模型是欠擬合的。

**   如何防止過擬合**

交叉驗證

交叉驗證是防止過擬合的好方法。在交叉驗證中,我們生成多個訓練測試劃分(splits)並調整模型。K - 折驗證是一種標準的交叉驗證方法,即將數據分成 k 個子集,用其中一個子集進行驗證,其他子集用於訓練算法。

交叉驗證允許調整超參數,性能是所有值的平均值。該方法計算成本較高,但不會浪費太多數據。交叉驗證過程參見下圖:

用更多數據進行訓練

用更多相關數據訓練模型有助於更好地識別信號,避免將噪聲作爲信號。數據增強是增加訓練數據的一種方式,可以通過翻轉(flipping)、平移(translation)、旋轉(rotation)、縮放(scaling)、更改亮度(changing brightness)等方法來實現。

移除特徵

移除特徵能夠降低模型的複雜性,並且在一定程度上避免噪聲,使模型更高效。爲了降低複雜度,我們可以移除層或減少神經元數量,使網絡變小。

早停

對模型進行迭代訓練時,我們可以度量每次迭代的性能。當驗證損失開始增加時,我們應該停止訓練模型,這樣就能阻止過擬合。

下圖展示了停止訓練模型的時機:

正則化

正則化可用於降低模型的複雜性。這是通過懲罰損失函數完成的,可通過 L1 和 L2 兩種方式完成,數學方程式如下:

L1 懲罰的目的是優化權重絕對值的總和。它生成一個簡單且可解釋的模型,且對於異常值是魯棒的。

L2 懲罰權重值的平方和。該模型能夠學習複雜的數據模式,但對於異常值不具備魯棒性。

這兩種正則化方法都有助於解決過擬合問題,讀者可以根據需要選擇使用。

Dropout

Dropout 是一種正則化方法,用於隨機禁用神經網絡單元。它可以在任何隱藏層或輸入層上實現,但不能在輸出層上實現。該方法可以免除對其他神經元的依賴,進而使網絡學習獨立的相關性。該方法能夠降低網絡的密度,如下圖所示:

**   總結**

過擬合是一個需要解決的問題,因爲它會讓我們無法有效地使用現有數據。有時我們也可以在構建模型之前,預估到會出現過擬合的情況。通過查看數據、收集數據的方式、採樣方式,錯誤的假設,錯誤表徵能夠發現過擬合的預兆。爲避免這種情況,請在建模之前先檢查數據。但有時在預處理過程中無法檢測到過擬合,而是在構建模型後才能檢測出來。我們可以使用上述方法解決過擬合問題。

原文鏈接:https://mahithas.medium.com/overfitting-identify-and-resolve-df3e3fdd2860

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/bbkMBleyeUtGLtJlqB4yDg