在使用機器學習模型進行預測時,一個不可避免的問題是我們始終會遇到誤差。那麼誤差到底是怎麼產生的呢?

其實誤差的來源有兩方面:

偏差(Bias):數據偏離平均值的差。

方差(Variance):隨機變數和其數學期望(即均值)之間的偏離程度,多指數據的波動。

1、偏差與方差的估計

對於樣本 x ,假設其均值為 mu ,方差為 sigma^{2} ,下面對這兩個兩進行估計。

從樣本 x中取N個樣本{ x^{1},x^{2},x^{3}......x^{N} }

計算N個點的平均值m,用m來估計mu,顯然平均值m並不等於mu

接著,計算m的期望

E(m)  = E(frac{1}{N}sum_{n=1}^{N}{x^{n}}) = frac{1}{N}N.E(x^{n}) = mu

可以看出,m是mu的無偏估計(估計量的期望與樣本的期望相等)。

再來看m的方差

Var(m) = frac{sigma^{2}}{N}

即,樣本量越大,m的方差就越小。

再來用 s^{2} 估計sigma^{2}

s^{2}  = frac{1}{N}sum_{n = 1}^{N}({x^{n}-m)^{2}}

來看s^{2}的期望

E(s^{2}) = frac{N-1}{N}sigma^{2} (具體推導過程可參照概率論裡面相關章節)

可見,E(s^{2})是比樣本方差 sigma^{2} 小,二者並不相等,屬於有偏估計。

2、方差與偏差的四種狀態

偏差與方差有以下4中不同的存在狀態。

考慮不同的訓練集,假設有100個數據集。採用 y = b+wx 和考慮複雜一點的模型 y = b+w_{1}x+w{2}x^{2}+w{3}x^{3}+w{4}x^{4}+w{5}x^{5}他們的偏差和方差如下圖所示:

只採用一次項來擬合的時候,可以看到條線較集中,即方差較小,但是藍色的那條直線並不能較好地擬合樣本數據(黑色的線),即偏差較大。

當模型變得複雜,採用五次項之後,得到的紅線變得非常雜亂,即方差較大,但是平均起來藍色的線能夠較接近黑色的樣本數據(黑色的線),即偏差較小。

簡單的模型受到數據的影響較小。

綜合來講

簡單模型是高偏差、低方差的

複雜模型是低偏差、高方差的

在模型變複雜的過程中,需要找到一個臨界點,平衡方差與偏差。

在模型逐漸複雜的過程中,一般情況下會越來越接近實際情況,偏差會越來越小,即曲線越描越準,但與此同時,每一次描的線的差別也會越來越大,即方差越變越大。

3、偏差與方差的處理

模型過於簡單時,不能較好的擬合數據,此時的誤差主要取決於偏差,此時稱模型為欠擬合;隨著模型越來越複雜,會越傾向於擬合更多的數據點,甚至是一些離羣的點,波動較大,,誤差主要取決於方差。這種模型往往在訓練集上表現得非常良好,但是到了測試集,誤差會明顯變大,此時稱模型為過擬合

對於偏差大,即欠擬合的情況:

(1)選取更多的特徵加入訓練;

(2)選取更加複雜的模型

對於方差大,即過擬合的情況:

(1)增加訓練集的數據量,不會影響偏差,但有時候獲取數據很難。

(2)正則化,模型過於偏向正則項可能影響偏差。

(3)使用多種模型訓練數據,採用交叉驗證等方式選取最終模型。

本文參考國立臺灣大學2017年機器學習第二課(錯誤來自於哪裡?)

推薦閱讀:

相關文章