一文了解什麼方差偏差均衡

“偏差-方差”是解釋學習算法泛化性能的重要方式,我們時常通過方差、偏差的角度去理解一個模型,那麼,到底什麼是方差偏差均衡(bias variance trade off)?

一、定義

偏差度量了學習算法的期望預測與真實結果的偏離程度,即刻畫了學習算法本身的擬合能力;方差度量了同樣大小的訓練集的變動所導致的學習性能的變化,即刻畫了數據擾動所造成的影響;噪聲則表達了學習問題本省的難度。偏差-方差分解說明,泛化能力是由學習算法的能力、數據的充分性以及學習任務本身的難度所共同決定的,給定學習任務,為了取得好的泛化性能,需使偏差較小,即能夠充分擬合數據,並使方差較小,使數據擾動產生的影響最小。

比如,要預測一個給定點的值,用n份有差異的數據集訓練,訓練了n個模型,結果這n個模型對該點的預測值的差異浮動很大,此時該模型的variance就偏高了。對應了下圖中右2和右4。

一文了解什麼方差偏差均衡

我們訓練模型的摸底是降低模型的泛化誤差,variance強調了模型的泛化能力,bias強調了模型的誤差能力。如果一個模型variance和bias都很低,它就能獲得較低的泛化誤差。

許多模型在設計的時候,都強調避免過擬合,像普遍存在的正則項。在ensemble類模型中,隨機森林基於bagging方法,通過樣本採樣和特徵採樣,使得每顆樹都各有特色。gbdt基於boosting方法,在每一輪訓練,通過擬合殘差,也訓練出了各有特色的樹。這些方式在保證bias的基礎上,使得模型具有良好的泛化能力。

在一個實際系統中,Bias與Variance往往是不能兼得的。如果要降低模型的Bias,就一定程度上會提高模型的Variance,反之亦然。造成這種現象的根本原因是,我們總是希望試圖用有限訓練樣本去估計無限的真實數據。當我們更加相信這些數據的真實性,而忽視對模型的先驗知識,就會盡量保證模型在訓練樣本上的準確度,這樣可以減少模型的Bias。但是,這樣學習到的模型,很可能會失去一定的泛化能力,從而造成過擬合,降低模型在真實數據上的表現,增加模型的不確定性。相反,如果更加相信我們對於模型的先驗知識,在學習模型的過程中對模型增加更多的限制,就可以降低模型的variance,提高模型的穩定性,但也會使模型的Bias增大。Bias與Variance兩者之間的trade-off是機器學習的基本主題之一,機會可以在各種機器模型中發現它的影子。

一文了解什麼方差偏差均衡

二、數學含義

我們定義需要預測的真實結果Y,與其對應的自變量X(訓練樣本),之間有這樣的關係:

Y = f(X) + ϵ (ϵ滿足正態分佈ϵ∼N(0,σϵ) )

令yD為x在測試樣本中的值,y為真實的值。有可能出現噪音使得yD != y

為了方便討論,這裡假定E[ yD - y ] = 0。

假設,fD(x)為訓練集X上學得模型f在x上的預測輸出,學習算法的期望預測為:

fExpectedD(x) = E[ fD(x) ]

統計學習中有一個重要概念叫做residual sum-of-squares:

一文了解什麼方差偏差均衡

RSS看起來是一個非常合理的統計模型優化目標。但是考慮K-NN的例子,在最近鄰的情況下(K=1),RSS=0,是不是KNN就是一個完美的模型了呢,顯然不是,KNN有很多明顯的問題,比如對訓練數據量的要求很大,很容易陷入維度災難中。KNN的例子說明僅僅優化RSS是不充分的,因為針對特定訓練集合擬合很好的model,並不能說明這個model的泛化能力好,而泛化能力恰恰又是機器學習模型的最重要的要求。真正能說明問題的不是RSS,因為它只是一個特定訓練集合,而是在多個訓練結合統計得出的RSS的期望,MSE(mean squared error),即期望泛化誤差。

基於假設,我們可以得到關於測試集x的MSE(mean squared error):

MSE(x) = E[( fD(x) - yD)2]

MSE(x) = E[( fD(x) - fExpectedD(x) + fExpectedD(x) - yD)2]

MSE(x) = E[(fD(x)- fExpectedD(x))2]+E[(fExpectedD(x)-yD)2]+E[2×(fD(x)-f

ExpectedD(x) )×(fExpectedD(x) - yD)]

第三項需要注意:由於訓練集已知,所以這裡的fExpectedD(x) - E[(fExpectedD(x) - yD)2]實際上是一個常數,可以拿到外部。

fD(x) - fExpectedD(x) 根據上面學習算法的期望預測的式子,可以知道其差值為0

即是:

MSE(x) = E[(fD(x) - fExpectedD(x))2] + E[(fExpectedD(x) - yD)2]

MSE(x) = E[(fD(x) - fExpectedD(x) )2] + E[(fExpectedD(x) - y + y - yD)2]

MSE(x) = E[(fD(x) - fExpectedD(x))2]+E[(f

ExpectedD(x) - y)2]+E[(y - yD)]2+2×E[(fExpectedD(x) - y)×(y - yD)]

噪聲期望為0,因此最後一項為0

MSE(x) = E[(fD(x) - fExpectedD(x))2] + (fExpectedD(x) - y)2 + E[(y - yD)]2

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

var(x) = E[(fD(x) - fExpectedD(x))2]

期望輸出與真實值的差別稱之為偏差,即:

bias2(x) = (fExpectedD(x) - y)2

噪聲為:

ϵ2 = E[(y - yD)]2

即是:

MSE(x) = var(x) + bias2(x) + ϵ2

從上面的推導我們可以看出,期望泛化誤差可以分解為方差,偏差與噪聲之和。

三、總結

模型過於簡單時,容易發生欠擬合(high bias);模型過於複雜時,又容易發生過擬合(high variance)。為了達到一個合理的 bias-variance 的平衡,此時需要對模型進行認真地評估。這就是所謂的偏差方差均衡。


分享到:


相關文章: