理解 Bias 和 Variance

在用機器學習算法對數據進行擬合的過程當中,每每一開始得不到滿意的結果,例如 AUC 值不夠高,此時咱們就須要對模型進行調優,那麼調優的方向是什麼?有沒有調優方法論可遵循?答案固然是有的,bias 和 variance 這兩個指標就能起到指導調優的做用。html

Bias

咱們先來看一個例子,假設實驗室收集了老鼠的體重和大小的數據,咱們能夠創建一個模型,經過輸入老鼠的大小來預測老鼠的體重,部分數據散點圖以下。在訓練以前,咱們仍是將數據拆分爲兩部分,紅色的點爲訓練集,綠色的點表示測試集:算法

接着咱們用兩個模型來擬合訓練數據,第一個模型採用線性算法,以下:機器學習

能夠看到,線性模型並不能很好的描繪真實數據,咱們通常使用 MSE (Mean Squared Error) 來量化這種擬合能力,即預測值和實際值之間的差值的平方的均值。post

接下來咱們訓練第二個較複雜的模型,該模型的曲線以下:學習

第二個模型完美的貼合了訓練數據,即用這個模型來預測訓練數據,得到的預測值與實際值相等。測試

至此,咱們再給出 bias 的定義就不難理解了:cdn

Bias 指標衡量了在訓練階段,機器學習算法和真實數據之間的差別。htm

從上面的例子能夠看出,模型二的 bias 遠遠低於模型一的 bias。blog

Variance

訓練完模型後,咱們還須要使用測試集對模型進行評估,下圖是模型一的評估結果,咱們用藍色虛線來表示測試結果中,預測值和實際狀況的差別(也可使用 MSE 來衡量):get

一樣,模型二的評估結果以下:

和 Bias 相反的是,模型一的預測效果卻遠遠好於模型二的,這說明模型二的預測能力並不穩定,咱們試着給 Variance 也下個定義:

Variance 表示在不一樣測試集間,預測效果間的誤差程度,誤差程度越大,variance 越大,反之越小。

顯然模型二的 variance 較大;而對於不一樣測試集,模型一預測的準確性很是接近,咱們能夠說模型一的 variance 較小。

Bias & Variance

下圖摘自 Scott Fortmann-Roe's 的博客,它可以很好的描繪咱們在機器學習中的調優方向,其中左上角是最理想的模型,它是終極目標,若是實在作不到,你應該朝着左下角的 High Bias + Low Variance 努力。

上圖中,右上角的狀況又被稱爲過擬合 (Overfit),它表示你的模型在訓練時的表現很是好,但在測試過程當中的表現又很是差,上文的模型二就是典型的過擬合狀況。有過擬合確定就有欠擬合 (Underfit),它表示你的模型沒法很好的刻畫樣本數據。同時,過擬合通常對應你使用了一個較複雜的模型,而欠擬合通常和簡單模型相對應。不少時候,咱們說模型調優,實際上指的是:

在簡單模型和複雜模型間尋求平衡

如何作到呢?這裏有一些經驗方法:

  • 如何處理 variance 較大的問題
    1. 減小特徵數量
    2. 使用更簡單的模型
    3. 增大你的訓練數據集
    4. 使用正則化
    5. 加入隨機因子,例如採用 bagging 和 boosting 方法
  • 如何處理 bias 較大的問題
    1. 增長特徵數量
    2. 使用更復雜的模型
    3. 去掉正則化

參考:

Machine Learning Fundamentals: Bias and Variance

相關文章:

相關文章
相關標籤/搜索