1. 程式人生 > >偏差(bias)和方差(variance)——KNN的K值、RF樹的數量對bias和variance的影響

偏差(bias)和方差(variance)——KNN的K值、RF樹的數量對bias和variance的影響

機器 image str 領域 什麽 認識 綜合 10個 機器學習算法

1.前言:為什麽我們要關心模型的bias和variance?

  大家平常在使用機器學習算法訓練模型時,都會劃分出測試集,用來測試模型的準確率,以此評估訓練出模型的好壞。但是,僅在一份測試集上測試,存在偶然性,測試結果不一定準確。那怎樣才能更加客觀準確的評估模型呢,很簡單,多用幾份測試數據進行測試,取多次測試結果的均值,這樣就可以平衡不同測試集帶來的“偶然性”。就像跳水運動員比賽,都要經過第一跳、第二跳。。最後取總成績來比高低,從而更加客觀公正。

  我們以跳水運動員來舉例,假設運動員A,經過5次跳水(總分為10分),成績分別為:9.0,8.8,9.1,8.6,8.9;運動員B,5次跳水成績為:9.8,7.5,9.9,8.0,8.8。通過這兩組數據,我們可以看出:

  1. 運動員A的平均成績在8.9左右,距離總分的偏差為1.1,每次的成績相差不大,也就是方差較小;

  2. 運動員B的平均成績在8.8左右,距離總分的偏差為1.2,但是每次成績相差很大,也就是方差較大;

  我們可以得出以下結論:

  1. A和B的平均成績差不多,兩個人水平可能不相上下;

  2. A的發揮比較穩定,說明可能基本功紮實,綜合素質較好,而B發揮不穩定,一會一鳴驚人,一會大跌眼鏡,神經質一樣。

  如果讓你選一個人作為代表去參加比賽,你會選誰?我想,一般教練都會選運動員A。當然,運動員B也是可塑之材,只要訓練得當,可能比A更優秀。

  其實,我們在測試集上評估的模型準確率,就如跳水運動員每次跳水的成績。運動員A代表的模型,健壯性較好,泛化能力強;運動員B代表的模型,泛化能力差,有可能是過擬合。因此,我們不僅關心每一次評估結果的好壞,還要關心多次評估結果是否相差太大。我們不僅希望模型的準確率高(低bias),還希望模型能夠表現的穩定(低variance)。所以,這就是為什麽我們要關心模型的這兩個指標。

2.偏差(bias)和方差(variance)

  • 概念

  通過上面的敘述,想必你對模型的bias和variance已有了一定的認識。接下來,我們用“行話“解釋一下,什麽是bias和variance。

  所謂 bias,即模型的期望預測與真實預測的偏離程度。通俗講,就是模型的預測誤差。

  所謂variance,即模型在不同訓練樣本上學習性能的變化,受數據擾動造成的影響。通俗講,就是模型預測的穩定性,在不同數據集上的表現是否相差較大。

  • 如何計算

  如何計算一個模型的偏差和方差呢?舉例來談,假設我們利用訓練樣本訓練出了一個模型M,接下來,我們準備5份不同的數據集作為測試數據,計算出5個測試誤差率,分別為:e1,e2,e3,e4,e5。這5個值的均值就是bias,這5個值得方差就是various。bias = mean (e1,e2,e3,e4,e5),variance = var (e1,e2,e3,e4,e5)。

  • 應用

  bias 和 variance 通常用來輔助判斷模型的擬合狀態,是欠擬合還是過擬合?下面還是通過經典的學習曲線圖來加以說明吧。

技術分享圖片

  左上角的圖,訓練集和驗證集的準確率都很低,為高bias,模型為欠擬合;

  右上角的圖,訓練集和驗證集的準確率較高,為低bias,但是訓練集合驗證集準確率相差較大(一般都是訓練集準確率比驗證集高),為高variance,模型過擬合;

  右下角的圖,訓練集和驗證集的準確率都較高、且兩個值相差較小,為低bias,低variance,模型預測準確率高,泛化能力強,這就是我們的理想模型。

3. KNN的k值,RF樹的數量對 bias 和 variance 的影響

  • KNN

  KNN中的k值,表示所取近鄰樣本的個數。首先我們看兩個極端,當k值取1時,為最近鄰算法, 新樣本S的預測分類,取決於與它相似度最高的那一個樣本所屬的類別;當k取N時(N為樣本數量),新樣本的預測分類,取決於樣本數據中哪一個類別的樣本數量最多,已經跟樣本記錄間的相似度沒有關系了。

  當k取1時,根據最相似的一個樣本判斷分類,很有可能預測準確,為低bias,但是不同數據集中,與新樣本S相似度最高的那個樣本可能屬於不同分類,那麽預測結果則各不相同,為高variance。

  當k取N時,完全根據樣本數據的分布進行預測,不管新樣本什麽樣,全部都會預測成樣本數據中樣本數量最多的那個類別。例如,有100個樣本,60個屬於A類,30個屬於B累,10個屬於C類,那麽所有的新樣本都會被預測為A類。此時為高bias,高variance。

  當k值在1到N之間變化時,一定存在一個最優的k值,使得bias和variance最低,當大於或小於這個最優k值時,都會造成bias和variance變大。

  • RF

  首先,RF模型中各個樹是“並聯”關系,互不相關,每棵樹都是“某個領域”的“分類專家”。當樹的棵樹較少時,模型的擬合效果不好,表現出高bias;逐漸增加樹的數量,模型學習能力逐漸增強,bias和variance都會逐漸降低;當再繼續增加樹的數量時,這時對模型的bias和variance其實沒什麽影響,因為模型的bias已經趨於收斂,任你再怎麽增加樹的數量,只是增加了計算成本和訓練時間,對模型精度的提高並沒有多大影響。

  

  以上是鄙人對bias和variance的一點拙見,如果有理解錯誤或表達錯誤的地方,希望不吝賜教,歡迎指正,謝謝!

偏差(bias)和方差(variance)——KNN的K值、RF樹的數量對bias和variance的影響