機器學習中的偏差,誤差,方差有什麼區別和聯繫?

最近在準備過幾個月挖掘崗的面試,在瘋補知識中,剛好也補了這個問題,所以嘗試來答答。能力有限,有誤地方希望被指出。


聲明:本文內容是對網上優秀博客的一個彙總(會在結束附上博客地址),以及自己的一些思考。

目錄

1、方差、偏差、噪聲是什麼?

2、用圖形解釋方差與偏差。

3、方差與偏差與欠、過擬合的關係。

4、方差偏差與模型複雜度的關係。

5、如何處理方差與偏差問題?

6、Bias、Variance和K-fold的關係


1、方差、偏差、噪聲是什麼?

首先,我覺得需引出周志華《機器學習》對它們的定義:

偏差度量了學習算法的期望預測與真實結果的偏離程度,即刻畫了

算法本身的擬合能力。

方差度量了同樣大小的訓練集的變動所導致的學習性能變化,即刻畫了數據擾動所造成的影響。

噪聲則表達了在當前任務上任何學習算法所能達到的期望泛化誤差的下界,即刻畫了學習問題本身的難度。

在一開始學習的時候,偏差其實比較好理解,但方差一直雲裡霧裡的,直到看到了西瓜書的定義,一下子就對方差的定義清晰了起來。要進一步理解,我覺得還是要看看它們的數學公式。

機器學習中的偏差,誤差,方差有什麼區別和聯繫?


眾所周知,泛化誤差 = Error = Bias + Variance + Noise

以迴歸任務為例, 學習算法的平方預測誤差期望為:

機器學習中的偏差,誤差,方差有什麼區別和聯繫?

方差:在一個訓練集D上模型f對測試樣本x的預測輸出為f(x;D), 那麼學習算法f對測試樣本x的期望預測為:

機器學習中的偏差,誤差,方差有什麼區別和聯繫?

上面的期望預測也就是針對不同數據集D,f對x的預測值取其期望, 也被叫做 average predicted

使用樣本數相同的不同訓練集產生的方差為:

機器學習中的偏差,誤差,方差有什麼區別和聯繫?

看到這裡,突然方差感覺是這麼熟悉,原理模型的方差其實和統計學的方差根本是同一個東西!

統計學方差公式:

機器學習中的偏差,誤差,方差有什麼區別和聯繫?

偏差

期望預測與真實標記的誤差稱為偏差(bias), 為了方便起見, 我們直接取偏差的平方:

機器學習中的偏差,誤差,方差有什麼區別和聯繫?

噪聲

噪聲為真實標記與數據集中的實際標記間的偏差:

機器學習中的偏差,誤差,方差有什麼區別和聯繫?

往後,其實泛化誤差的公式可以通過一系列分解運算,證明Error = Bias + Variance + Noise

在此,就補貼這麼多公式啦,感興趣的同學可以移步結尾的博客。


2、用圖形解釋方差與偏差。

這裡使用經典的靶圖:

機器學習中的偏差,誤差,方差有什麼區別和聯繫?

假設紅色的靶心區域是學習算法完美的正確預測值, 藍色點為每個數據集所訓練出的模型對樣本的預測值, 當我們從靶心逐漸向外移動時, 預測效果逐漸變差。

它們描述的是方差的兩種情況.。比較集中的屬於方差小的,比較分散的屬於方差大的情況。

再從藍色點與紅色靶心區域的位置關係,,靠近紅色靶心的屬於偏差較小的情況,遠離靶心的屬於偏差較大的情況。


3、方差與偏差與欠、過擬合的關係。

一般來說,簡單的模型會有一個較大的偏差和較小的方差,複雜的模型偏差較小方差較大。

這也引申出欠擬合和過擬合的概念。

欠擬合:模型不能適配訓練樣本,有一個很大的偏差

過擬合:模型很好適配訓練樣本,但在測試集上表現很糟,有一個很大的方差


4、方差偏差與模型複雜度的關係。

複雜度高的模型通常對訓練數據有很好的擬合能力,但是對測試數據就不一定了。而複雜度太低又不能很好低擬合數據。模型複雜度和模型方差和偏差具有如下關係:

機器學習中的偏差,誤差,方差有什麼區別和聯繫?

5、如何處理方差與偏差問題?

整體思路:首先,要知道方差和偏差是無法完全避免的,只能儘量減少其影響。

(1)在避免偏差時,需儘量選擇正確的模型,一個非線性問題而我們一直用線性模型去解決,那無論如何,高偏差是無法避免的。

(2)有了正確了模型,我們還要慎重選擇數據集的大小,通常數據集越大越好,但大到數據集已經對整體所有數據有了一定的代表性後,再多的數據已經不能提升模型了,反而會帶來計算量的增加。而訓練數據太小一定是不好的,這會帶來過擬合,模型複雜度太高,方差很大,不同數據集訓練出來的模型變化非常大。

(3)最後,要選擇模型的複雜度,複雜度高的模型通常對訓練數據有很好的擬合能力。


針對偏差和方差的思路

偏差:實際上也可以稱為避免欠擬合。

1、尋找更好的特徵 -- 具有代表性。

2、用更多的特徵 -- 增大輸入向量的維度。(增加模型複雜度)


方差:避免過擬合

1、增大數據集合 -- 使用更多的數據,噪聲點比減少(減少數據擾動所造成的影響(緊扣定義))

2、減少數據特徵 -- 減少數據維度,高維空間密度小(減少模型複雜度)

3、正則化方法

4、交叉驗證法


6、Bias、Variance和K-fold的關係。

K-fold Cross Validation的思想:將原始數據分成K組(一般是均分),將每個子集數據分別做一次驗證集,其餘的K-1組子集數據作為訓練集,這樣會得到K個模型,用這K個模型最終的驗證集的分類準確率的平均數作為此K-CV下分類器的性能指標。


通過它的思想,我個人覺得交叉驗證相當於增大了數據集合,減少了訓練集的變動所導致的學習性能變化,所以解決了方差的問題(數據擾動所造成的影響)。交叉驗證後,模型的預測是所有數據訓練結果的平均值,這就解決了偏差的問題。


最後:

當K值大的時候, 我們會有更少的Bias(偏差), 更多的Variance。

當K值小的時候,我們會有更多的Bias(偏差),更少的Variance。


分享到:


相關文章: