機器學習之欠擬合和過擬合(一)

1.欠擬合(underfitting)與過擬合(overfitting)

在機器學習中,咱們的主要思想是經過對數據集的學習來生成咱們的假設模型。在對數據集進行擬合的過程當中,咱們可能會遇到欠擬合和過擬合的問題。以身高預測的例子爲例,這裏給出7-18歲男生的身高標準(數據來源:7 歲~18 歲兒童青少年身高發育等級評價),如圖1:html

7-18歲男生的身高標準

將中位數隨年齡的變化繪製成散點圖,如圖2:算法

圖2

由圖2中的散點可知,先開始身高隨年齡幾乎成一條直線關係,後來增加率逐漸降低。若是咱們採用線性函數取擬合,這顯然是不合理的(線性函數的增加率不會發生變化)。若是咱們用一個多項式函數去擬合,雖然這個多項式可能會很複雜,可是咱們總可能找到一個多項式函數使得該函數完美通過圖中的散點,如圖3:機器學習

圖3

如今,咱們來看一下線性擬合(圖3紅線):年齡大於18歲之後,按照散點圖的趨勢,身高應該逐漸趨於穩定,可是線性擬合的結果是身高隨年齡增加依舊保持很高的增加率。顯然這並非一種很好的擬合方式,對於這種狀況,咱們稱之爲欠擬合,即高誤差(high bias)。函數

接下來,咱們來看一下「完美的多項式擬合」(圖3藍線):藍線的損失函數爲0,在迴歸問題中,咱們求解參數矩陣的方法就是儘量地讓損失函數的值最小化。這是否意味着當損失函數爲0時,這時咱們的學習模型最好呢?並非這樣子的。在」完美的多項式擬合「當中,咱們的假設函數一般狀況下會很是複雜,通常會涉及到高次多項式,函數圖像會很是扭曲。以五次多項式爲例,即使咱們的自變量之間的誤差數量級爲10,但對應輸出結果的誤差會達到\(10^5\)數量級。圖3的例子可能還不明顯,圖4很好的說明了「完美擬合」的扭曲狀況。對於這種爲了最小化損失函數,而將假設函數「過分扭曲」的狀況,咱們稱之爲過擬合,即高方差(high variance)。圖4學習

2.誤差(bias)和方差(variance)
2.1誤差和偏差的概念

誤差(bias),是不一樣數據集在特定模型上預測值的指望與實際值之間的差值。若是平均預測值與實際值相差甚遠,則誤差較高。高誤差致使算法沒法正確表示輸入和輸出變量之間的相關關係。當模型具備較高的誤差時,則表示該模型過於簡單,沒法捕獲數據的複雜性,所以沒法擬合數據。測試

方差(variance),指的是不一樣數據集在特定模型上的預測值的方差。當模型在訓練後的數據集上表現良好但在未訓練的數據集(例如測試數據集或驗證數據集)上表現不佳時,就會發生方差。 方差反映了預測值與實際值之間的分散程度。高方差會致使過分擬合,這代表該算法對訓練數據中存在的隨機噪聲也進行了建模。當模型具備較高的方差時,該模型將變得很是複雜,並將「完美擬合」訓練集的數據點。 當高方差模型遇到還沒有學習的其餘數據點時,就沒法作出正確的預測。大數據

圖5

圖5顯示了誤差和偏差,其中藍色點表示咱們的預測值,紅色點表示咱們的真實值。能夠看到,誤差越高,預測值離真實值越遠;方差越高,預測值越分散。spa

2.2.用數學公式表示誤差和偏差

咱們用\(Y\)表示咱們要預測的值(樣本真實值),\(X\)表示咱們的自變量。考慮到樣本數據實際上是採樣,\(Y\)並非真實值,假設真實模型是\(f\),則有這樣的關係:\(Y=f(X)+\epsilon\),其中\(\epsilon\)表示噪音,服從均值爲0的正態分佈,即\(\epsilon\sim N(\mu,\sigma_\epsilon)\)。用\(\hat f\)來表示咱們的模型(即擬合函數),則咱們的預測值爲\(\hat f(X)\),則在點\(x\)處的平方偏差的指望爲:htm

\[\begin{align}Err(x)& =E\left[(Y -\hat f(x))^2\right] = E\left[(\epsilon + f(x) -\hat f(x))^2\right]\\&=E[f(x)^2] + E[\hat f(x)^2] + E(\epsilon^2) -2E[f(x)]E[\hat f(x)]-2E(\epsilon)E[f(x)]-2E(\epsilon)E[\hat f(x)]\\& = f(x)^2+(E[\hat f(x)])^2 + Var[\hat f(x)] -2f(x)E[\hat f(x)] + Var[\epsilon] + E(\epsilon) \\& = \left(E[\hat{f}(x)]-f(x)\right)^2 + E\left[\left(\hat{f}(x)-E[\hat{f}(x)]\right)^2\right] +\sigma_e^2\\&= \mathrm{Bias}^2 + \mathrm{Variance} + \mathrm{Irreducible\ Error} \end{align}\]blog

注意:\(f(x),\hat f(x), \epsilon\)三者獨立,且\(f(x)\)不是變量,是固定值。因此\(E[f(x)] = f(x),E[f(x)^2] = f(x)^2\)

偏差的指望值 = 預測值相對真實值的誤差的平方 + 模型預測值的方差 + 噪音的方差

上式中的第三項,爲不可減小的偏差,是真實模型和樣本值的關係中的噪聲項,任何模型都沒法從根本上減小噪聲項。 給定真實模型和無窮大數據進行校準,理論上能夠將誤差項和方差項都減小到0。可是,在模型和有限數據不完善的現實狀況下,須要在最小化誤差和最小化方差之間進行權衡 。

關於誤差和方差的更多內容能夠參見:

誤差Bias和方差Variance--機器學習中的模型選擇(中文)

Understanding the Bias-Variance Tradeoff(英文)

3.解決方法

模型的效果一般是:方差小,誤差小 > 方差小,誤差大 > 方差大,誤差小 > 方差大,誤差大。因此,咱們儘可能減小模型的誤差和方差。若是出現了欠擬合和過擬合的狀況,咱們應該怎麼解決呢?

對於欠擬合而言,咱們有以下解決方案:

  1. 增長新的特徵,能夠考慮加入進特徵組合、高次特徵,來增大假設空間
  2. 採用非線性模型,好比核SVM 、決策樹、DNN等模型
  3. Boosting,Boosting 每每會有較小的 Bias,好比 Gradient Boosting 等
  4. 若是已正則化,嘗試減小正則化程度\(\lambda\)

對於過擬合而言,咱們有以下解決方案:

  1. 交叉檢驗,經過交叉檢驗獲得較優的模型參數
  2. 特徵選擇,減小特徵數或使用較少的特徵組合,對於按區間離散化的特徵,增大劃分的區間
  3. 正則化,經常使用的有 L一、L2 正則
  4. 若是已正則化,嘗試增大正則化程度\(\lambda\)
  5. 增長訓練數據能夠有限的避免過擬合
  6. Bagging,將多個弱學習器Bagging 一下效果會好不少,好比隨機森林等

參考連接:

誤差Bias和方差Variance——機器學習中的模型選擇

Understanding the Bias-Variance Tradeoff

機器學習防止欠擬合、過擬合方法

相關文章
相關標籤/搜索