1. 程式人生 > >模型過擬合與欠擬合

模型過擬合與欠擬合

機器學習中,經常討論到的一個話題就是泛化能力。泛化能力的強弱決定了模型的好壞,而影響泛化能力的則是模型的擬合問題。

欠擬合

機器學習的目的並不是為了對訓練集的做出正確的預測,而是對沒有在訓練集中出現的資料進行正確的預測。但是對訓練集之外的資料預測的前提是,模型在訓練集上的表現很好,基本可以滿足大部分資料的預測,這樣才會被用在訓練集之外的資料。而當模型對訓練集預測的結果準確率很低時,說明模型的學習能力很弱,無法學習到資料中的一定“規律”,這樣模型就處於欠擬合狀態。

欠擬合的解決方法比較容易,常用的方法有:

  • 原資料的特徵向量太少、增加樣本特徵,也可以加入特徵組合。
  • 避免使用線性模型,例如決策樹,SVM,深度學習等模型。
  • 增加模型的複雜度,減少正則化係數。

欠擬合的問題解決起來比較簡單,較為困難的並且是大部分機器學習都會遇到的則是過擬合問題。

過擬合

模型在訓練集上表現很好,而預測除訓練集以外的資料時,表現卻不盡人意,這種問題十有八九便是模型過擬合,意味著模型不僅學習了資料中的一定“規律”,還將各類噪聲、波動也學習了進去,相應的處理方法則比欠擬合複雜了許多:

  • 增加樣本量,對資料清洗過後在進行訓練,避免學入噪聲。
  • 如果資料中存在正負樣本,儘可能保證正負樣本的佔比均勻或者訓練集覆蓋所有的資料型別。
  • 選擇相對簡單的模型,補充特徵不要太多,模型引數不要太複雜
  • 驗證模型時儘量採用交叉檢驗的驗證方法。
  • 正則化方法,有L1正則化和L2正則化,原則就是讓得到的模型複雜度趨於最小。
  • 深度學習中還可以採用dropout,batch normalization, early stop等方法。
  • 模型融合/整合學習方法也是很好的防止過擬合方法。

(需要注意的是,降維並不能有效的抑制過擬合,它只是降低了特徵的維度,並沒有減少特徵的資訊。)

總結如下:

欠擬合:在訓練資料表現都很差,在未知資料上也是一樣。

過擬合:在訓練資料上表現較好,在未知資料上表現較差。 

其中每一條解決方法拓展出來都很多,想要了解具體步驟的同學可自行搜尋,或者期待後續的更新 -_ - ~~~!