- 本文介紹了欠擬合、過擬合相關概念,分析形成它們的緣由,總結了防止過擬合的通常策略。
1 損失函數
- 損失函數(loss function):是用來度量模型預測值f(x)與樣本真實標籤值y的不一致程度。
- 給定輸入的樣本數據x,模型函數輸出一個f(x),這個輸出的f(x)與樣本的真實值標籤值y多是相同的,也多是不一樣的,爲了表示咱們擬合的好壞,就用一個函數來度量擬合的程度。有平方差損失函數、交叉熵損失函數,對比損失函數,合頁損失函數等。
- 損失函數是一個實值函數,它的值越小,表示模型在訓練樣本集上擬合地越好。是否是訓練集損擬合的越好,模型的效果會更好呢? 答案是No。因爲訓練樣本集和測試數據集是不同的,在訓練集上損失函數越小,並不表明測試集損失函數越小,咱們但願模型在訓練集上有高準確率的同時在測試集上也有高準確率。衡量這種能力的指標就是泛化能力,這時候不得不提過擬合和欠擬合的概念。
2 學習
- 學習:找到一組模型參數,使得在給定的訓練數據樣本和對應的目標值上的損失函數最小化。
3 過擬合與欠擬合
- 欠擬合(under-fitting):也稱爲欠學習,它的直觀表現是算法訓練獲得的模型在訓練集上表現差(測試集表現也差),沒有學到數據的規律。
- 引發欠擬合的緣由:
- 模型自己過於簡單,例如數據自己是非線性的但使用了線性模型;
- 特徵數太少沒法正確的創建統計關係。
- 過擬合(over-fitting):也稱爲過學習,它的直觀表現是算法在訓練集上表現好,但在測試集上表現很差,泛化性能差。過擬合是在模型參數擬合過程當中因爲訓練數據包含抽樣偏差,在訓練時複雜的模型將抽樣偏差也進行了擬合致使的。所謂抽樣偏差,是指抽樣獲得的樣本集和總體數據集之間的誤差。
- 引發過擬合的可能緣由:
- 模型自己過於複雜,以致於擬合了訓練樣本集中的噪聲。此時須要選用更簡單的模型,或者對模型進行裁剪。
- 訓練樣本太少或者缺少表明性。此時須要增長樣本數,或者增長樣本的多樣性。
- 訓練樣本噪聲的干擾,致使模型擬合了這些噪聲,這時須要剔除噪聲數據或者改用對噪聲不敏感的模型。
4 方差與誤差
- 模型的泛化偏差來自於兩部分,分別稱爲誤差和方差。
- 誤差(bias)是模型自己致使的偏差,即錯誤的模型假設所致使的偏差,它是模型的預測值的數學指望和真實值之間的差距。
- 方差(variance)是因爲對訓練樣本集的小波動敏感而致使的偏差。它能夠理解爲模型預測值的變化範圍,即模型預測值的波動程度。
- 誤差、方差、錯誤率與模型複雜度的關係以下圖所示。一般隨着模型的複雜度增長,誤差也會跟着逐漸增大。

5 如何避免過擬合
5.1 正則化
爲了防止過擬合,能夠爲損失函數加上一個懲罰項對複雜的模型進行懲罰,即強制讓模型的參數值儘量小。加上正則化項的目標是讓它的值儘量小,即參數等於0或者接近於0。\(\lambda\)爲懲罰項係數,是人工設定的大於0的參數。算法
5.2 剪枝
剪枝是決策樹類算法防止過擬合的方法。若是決策樹的結構過於複雜,可能會致使過擬合問題,此時須要對樹進行剪枝,消掉某些節點讓它變得更簡單。剪枝的關鍵問題是肯定減掉哪些樹節點以及減掉它們以後如何進行節點合併。決策樹的剪枝算法能夠分爲兩類,分別稱爲預剪枝和後剪枝。前者在樹的訓練過程當中經過中止分裂對樹的規模進行限制;後者先構造出一棵完整的樹,而後經過某種規則消除掉部分節點,用葉子節點替代。網絡
5.3 數據增廣
數據增廣是解決過擬閤中思想比較樸素的方法。訓練集越多,過擬合的機率越小,數據增廣是一個比較方便有效屢試不爽的方法,但各種領域的增廣方法都不一樣。機器學習
- 1 在計算機視覺領域中,增廣的方式是對圖像旋轉,縮放,剪切,添加噪聲等。
- 2 在天然語言處理領域中,能夠作同義詞替換擴充數據集。
- 3 語音識別中能夠對樣本數據添加隨機的噪聲。
5.4 dropout
Dropout是神經網絡中防止過擬合的方法。dropout的作法是在訓練時隨機的選擇一部分神經元進行正向傳播和反向傳播,另一些神經元的參數值保持不變,以減輕過擬合。dropout機制使得每一個神經元在訓練時只用了樣本集中的部分樣本,這至關於對樣本集進行採樣,即bagging的作法。最終獲得的是多個神經網絡的組合。函數
5.5 Early Stopping
提早中止的策略是在驗證集偏差出現增大以後,提早結束訓練;而不是一直等待驗證集 偏差達到最小。提早中止策略十分簡單,執行效率高,但須要額外的空間備份參數。性能
5.6 集成學習
集成學習算法也能夠有效的減輕過擬合。Bagging經過平均多個模型的結果,來下降模型的方差。Boosting不只可以減少誤差,還能減少方差。學習
6 參考文獻
- [1] 雷明著.機器學習與應用[M].清華大學出版社,2019.