編輯:小舟
正如巴菲特所言:「近似的正确好過精确的錯誤。」
在機器學習中,過拟合(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 是一種正則化方法,用于随機禁用神經網絡單元。它可以在任何隐藏層或輸入層上實現,但不能在輸出層上實現。該方法可以免除對其他神經元的依賴,進而使網絡學習獨立的相關性。該方法能夠降低網絡的密度,如下圖所示:
總結
過拟合是一個需要解決的問題,因為它會讓我們無法有效地使用現有數據。有時我們也可以在構建模型之前,預估到會出現過拟合的情況。通過查看數據、收集數據的方式、采樣方式,錯誤的假設,錯誤表征能夠發現過拟合的預兆。為避免這種情況,請在建模之前先檢查數據。但有時在預處理過程中無法檢測到過拟合,而是在構建模型後才能檢測出來。我們可以使用上述方法解決過拟合問題。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!