機器學習中的Bias(偏差),Error(誤差),和Variance(方差)有什麼區別和聯絡?

MachineLP發表於2017-07-30

MachineLP的Github(歡迎follow):https://github.com/MachineLP

首先 Error = Bias + Variance + Noise
Error反映的是整個模型的準確度,Bias反映的是模型在樣本上的輸出與真實值之間的誤差,即模型本身的精準度,Variance反映的是模型每一次輸出結果與模型輸出期望之間的誤差,即模型的穩定性。


我是這樣抽象理解這個問題的: 

:bias描述的是根據樣本擬合出的模型的輸出預測結果的期望與樣本真實結果的差距,簡單講,就是在樣本上擬合的好不好。要想在bias上表現好,low bias,就是複雜化模型,增加模型的引數,但這樣容易過擬合 (overfitting),過擬合對應上圖是high varience,點很分散。low bias對應就是點都打在靶心附近,所以瞄的是準的,但手不一定穩。 

:varience描述的是樣本上訓練出來的模型在測試集上的表現,要想在varience上表現好,low varience,就要簡化模型,減少模型的引數,但這樣容易欠擬合(unfitting),欠擬合對應上圖是high bias,點偏離中心。low varience對應就是點都打的很集中,但不一定是靶心附近,手很穩,但是瞄的不準。

所以bias和variance的選擇是一個tradeoff,過高的varience對應的概念,有點『劍走偏鋒』『矯枉過正』的意思,如果說一個人varience比較高,可以理解為,這個人性格比較極端偏執,眼光比較狹窄,沒有大局觀。而過高的bias對應的概念,有點像『面面俱到』『大巧若拙』的意思,如果說一個人bias比較高,可以理解為,這個人是個好好先生,誰都不得罪,圓滑世故,說話的時候,什麼都說了,但又好像什麼都沒說,眼光比較長遠,有大局觀。

注:關於這個偏執和好好先生的表述,不是非常嚴謹,對這兩個詞的不同理解會導致截然相反的推理,如果你看完這段覺得有點困惑,可以去看評論區的討論,不得不感嘆一下,在準確描述世界執行的規律這件事上,數學比文學要準確且無歧義的多。

在林軒田的課中,對bias和variance還有這樣一種解釋,我試著不用數學公式抽象的簡單概括一下: 

我們訓練一個模型的最終目的,是為了讓這個模型在測試資料上擬合效果好,也就是Error(test)比較小,但在實際問題中,test data我們是拿不到的,也根本不知道test data的內在規律(如果知道了,還machine learning個啥 ),所以我們通過什麼策略來減小Error(test)呢? 

分兩步: 

讓Error(train)儘可能小 

讓Error(train)儘可能等於Error(test) 

三段論,因為A小,而且A=B,這樣B就小。 

那麼怎麼讓Error(train)儘可能小呢?——》把模型複雜化,把引數搞得多多的,這個好理解,十元線性迴歸,肯定error要比二元線性迴歸低啊。——》low bias 

然後怎麼讓Error(train)儘可能等於Error(test)呢?——》把模型簡單化,把引數搞得少少的。什麼叫Error(train)=Error(test)?就是模型沒有偏見,對train test一視同仁。那麼怎樣的模型更容易有這這種一視同仁的特性,換句話說,更有『通用性』,對區域性資料不敏感?那就是簡單的模型。——》low varience



如果幫到你了,請讚賞支援:



相關文章