你真的理解機器學習中偏差 - 方差之間的權衡嗎?

weixin_34166847發表於2017-12-18

作者:chen_h
微訊號 & QQ:862251340
微信公眾號:coderpai
我的部落格:請點選這裡

我認為對偏差 - 方差之間的權衡判讀對學習機器學習是非常重要的。那麼為什麼這麼說呢?因為這個現象的背後是所有引數,效能和幾乎所有機器學習模型的深層原因。如果你能很深刻的理解這個,我保證你能很好的理解機器學習的每一個模型。

所以,我們就不浪費時間在無聊的介紹中,直接深入挖掘吧。理論講解可能有一點枯燥,但我希望你能耐心看完本文。

機器學習中的偏差 - 方差之間的權衡

機器學習全部是關於給定輸入資料(X)和給定輸出資料(Y),然後去尋找一個最佳對映函式(F),這個對映函式通常也被叫做目標函式。

任何機器學習演算法的預測誤差可以分解為三部分,即:偏差誤差+方差誤差+不可約的誤差(對於給定的模型,我們不能進一步減少的誤差)。在這個文章中,我們將重點來討論機器學習中的前兩個誤差。我們按照如下目錄來進行講解:

1)偏差誤差;

2)方差誤差;

3)偏差 - 方差之間的權衡;

4)一些想法的總結;

1. 偏差誤差

用簡單的話來說,這個誤差是由於簡單的假設所造成的,因為我們的假設越簡單,那麼我們的模型更加容易去訓練。

一般而言,引數化演算法具有較高的偏差,使得學習速度非常快,而且非常容易去理解,但是通常不太靈活。

注意:對於引數化演算法和非引數化演算法之間的區別,簡單來說,引數化演算法對資料進行引數化,形成很多的特徵,這種方法訓練速度非常快,而且也不需要很多的資料,但是他不是很靈活。非引數化演算法對目標函式做出很少或者根本不做任何假設,但是它需要更多的資料,訓練速度非常慢,模型複雜度非常高,但是模型非常強大。

低偏差:對目標函式提出更少的假設;

高偏差:對目標函式提出更多的假設;

低偏差模型例子:KNN 和 SVM;

高偏差模型例子:線性迴歸和邏輯斯特迴歸;

2. 方差誤差

1)如果我們使用不同的資料去訓練同一個模型,那麼最後我們得到的目標函式估計也是會改變的。

2)目標函式是由機器學習的訓練資料所估計得到的,所以我們期望訓練資料擁有一定的方差。理想情況下,我們不希望目標函式從一個訓練資料集到另一個訓練資料集有太大的變化,也就是說我們的演算法需要很好的從訓練資料中找到一些對映的特徵關係,這樣可以保證不同訓練集都有一個差不多的目標函式。

低方差:隨著訓練資料集的變化,對目標函式估計值的變化非常小;

高方差:隨著訓練資料集的變化,對目標函式估計值的變化非常大;

一般而言,具有很大靈活性的非引數學習演算法都具有很高的方差。

高方差例子:KNN 和 SVM。

3. 偏差 - 方差之間的權衡

在上面的例子中我們可以看到一個趨勢:引數或者線性的機器學習演算法一般都會有一個很高的偏差和一個很低的方差。但是,非引數或者非線性的機器學習演算法一般都有一個很低的偏差和一個很高的方差。所有,我們需要在這兩者之間找到一個平衡點,來優化我們的演算法。

比如,KNN 演算法有很低的偏差和很高的方差,但是我們可以通過調整 k 的值來改變偏差和方差之間的權衡關係,從而達到一個比較平衡的狀態。

因此,我們增加偏差會導致方差的減少,同理,我們增加方差會導致偏差的減少。但在實踐中,我們無法去計算真正的偏差和方差值,因為我們不知道實際的目標函式。但是,作為一種方法,偏差和方差為我們提供了一種去判斷機器學習演算法效能的方法。

4. 一些想法的總結

1)機器學習是去找到一個對映函式(F),這個函式也經常被稱之為目標函式;

2)偏差是模型所做的簡化假設,使得目標函式更加容易求解;

3)方差是在給定不同訓練資料集的情況下,目標函式估計值所改變的量;

4)權衡是去調整一些引數使得偏差和方差之間相對平衡;


CoderPai 是一個專注於演算法實戰的平臺,從基礎的演算法到人工智慧演算法都有設計。如果你對演算法實戰感興趣,請快快關注我們吧。加入AI實戰微信群,AI實戰QQ群,ACM演算法微信群,ACM演算法QQ群。詳情請關注 “CoderPai” 微訊號(coderpai)。


相關文章