1. 程式人生 > >機器學習中的過擬合和欠擬合現象,以及通過正則化的方式解決。

機器學習中的過擬合和欠擬合現象,以及通過正則化的方式解決。

圖解過擬合和欠擬合

過擬合:

過擬合(over-fitting)是所建的機器學習模型或者是深度學習模型在訓練樣本中表現得過於優越,導致在驗證資料集以及測試資料集中表現不佳的現象。就像上圖中右邊的情況。
過擬合的模型太過具體從而缺少泛化能力,過度的擬合了訓練集中的資料。出現的原因是模型將其中的不重要的變數(特徵)或者完全沒有用的變數(特徵)也當作了需要訓練的資料。當變數(特徵)過多,而訓練集較少的時候會出現過擬合的現象。

欠擬合:

欠擬合(underfitting)是模型在訓練集和測試集表現都不好的現象,模型沒有很好的擬合訓練資料。如上圖中左邊的情況。
欠擬合比較容易看出來,可新增特徵多項式解決,這個在機器學習演算法裡面用的很普遍,例如將線性模型通過新增二次項或者三次項使模型泛化能力更強。

過擬合的解決方案:正則化

以嶺迴歸為例:
懲罰係數
例如上圖,一個二次函式就能很好的擬合數據。
通過在損失函式中,給高次項係數新增一個比較大的懲罰係數(1000只是舉的例子),這樣對損失函式求最小值的時候,使得θ3θ4的值就會很小,接近於0但不會為0( 因為新增的是平方的形式)。
實際上,這些引數的值越小,通常對應于越光滑的函式,也就是更加簡單的函式。因此 就不易發生過擬合的問題。

在實際操作中,我們可以選擇一些變數(特徵)中影響比較小的新增懲罰係數就可以減少該變數(特徵)的影響。
一般我們不知道那些係數應該縮減,因此,我們需要修改代價函式,在這後面新增一項,就像我們在方括號裡的這項。當我們新增一個額外的正則化項的時候,我們收縮了每個引數。
這就是嶺迴歸的損失函式:
在這裡插入圖片描述


其中θ是從1開始的,沒有加第0項,慣例來講是不帶第0項。因為從第1項到第n項求和從第0項到第n項求和只有很小的差異。

L2正則化

這裡我們加的正則化項是L2正則化項
在這裡插入圖片描述

L1正則化項

在這裡插入圖片描述
L1正則化項也能起到縮減不必要係數的作用。θ會縮小到0

總結:

  • 嶺迴歸可以解決特徵數量比樣本量多的問題
  • 嶺迴歸作為一種縮減演算法可以判斷哪些特徵重要或者不重要,有點類似於降維的效果
  • 縮減演算法可以看作是對一個模型增加偏差的同時減少方差

嶺迴歸用於處理下面兩類問題:

  • 資料點少於變數個數
  • .變數間存在共線性(最小二乘迴歸得到的係數不穩定,方差很大)