機器學習中的Bias(偏差),Error(誤差),和Variance(方差)有什麼區別和聯絡?
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
如果幫到你了,請讚賞支援:
相關文章
- 機器學習中偏差bias和方差variance區別機器學習
- 機器學習《Machine Learning》筆記--偏差(Bias)和方差(Variance)機器學習Mac筆記
- AI學習筆記——Bias and Variance tradeoff (方差偏差的平衡)AI筆記
- 區塊鏈和挖礦有什麼聯絡?區塊鏈
- HDC,CDC,CClientDC的區別和聯絡是什麼?client
- 什麼是BSS/OSS,及區別和聯絡
- Linux中軟連結和硬連結之間有什麼區別和聯絡?Linux
- Centos和Redhat有什麼關係?Centos和Redhat的區別與聯絡介紹CentOSRedhat
- Oracle中User和Schema的區別和聯絡Oracle
- 雲端計算和區塊鏈有什麼聯絡?區塊鏈
- File、Blob、ArrayBuffer等檔案類的物件有什麼區別和聯絡物件
- 知識點,JavaScript與Java之間有什麼區別和聯絡?JavaScript
- 網路安全和資訊保安有什麼聯絡?差異在哪裡?
- 中斷和異常,陷阱的區別和聯絡
- javaSE中的==和equals的聯絡與區別Java
- C#專案obj和bin檔案什麼區別和聯絡C#OBJ
- OA、CRM、ERP之間的區別和聯絡是什麼?
- tcp/ip和http的區別和聯絡TCPHTTP
- orcle pfile和spfile的區別和聯絡
- NET|Ref 和out 的區別和聯絡
- Instruction和Question的區別和聯絡Struct
- 分散式機器學習、聯邦學習、多智慧體的區別和聯絡分散式機器學習聯邦學習智慧體
- c++中&和&&有什麼區別C++
- hive中order by、distribute by、sort by和cluster by的區別和聯絡Hive
- 統計學和機器學習到底有什麼區別?機器學習
- 詳解CALayer 和 UIView的區別和聯絡UIView
- 今日面試題分享:解決bias和Variance問題的方法是什麼?面試題
- ORACLE中的兩個概念:user和schema的區別和聯絡Oracle
- http、socket、tcp的區別和聯絡?HTTPTCP
- SCADA和PLC的區別聯絡
- Session和Cookie的聯絡與區別SessionCookie
- CGI與Servlet的區別和聯絡Servlet
- Session和Cookie的區別與聯絡SessionCookie
- 資料變異性的度量 - 極差、IQR、方差和標準偏差
- Linux 下nohup 和 &有什麼聯絡呢?Linux
- WPF中的StaticResource和DynamicResource有什麼區別
- C# 中的 == 和 equals()有什麼區別?C#
- 轉:IDOCBAPIRFC區別和聯絡API