【機器學習(李巨集毅)】 三、Bias and Variance

【機器學習(李巨集毅)】 三、Bias and Variance

本講核心問題:Where does the error come from?

Review:

  • 更復雜的模型不一定在測試集上有更好的表現
  • 誤差由偏差“bias”導致
  • 誤差由方差“variance”導致

這裡寫圖片描述

Estimator:

  • f^\hat{f}是計算pokemon真正的函式,只有Niantic公司知道
  • 從訓練集上,我們得出f∗f^{*},f∗f^{*}是f^\hat{f}的一個估計
  • 故像射擊一樣,靶心為f^\hat{f},f∗f^{*}是我們射中的地方,會由於“bias”和“variance”導致射偏。

這裡寫圖片描述

Bias and Variance of Estimator:

  • 估測均值μ\mu:用m來估計均值μ\mu是unbiased的(注意理解下其中公式)

這裡寫圖片描述

這裡寫圖片描述

  • 估計方差σ2\sigma ^{2}:用s2s^{2}來估計σ2\sigma ^{2}是biased的(同樣注意理解其中公式)

6??

形象解釋Bias和Variance

  • 就像射擊一樣,你瞄準點同靶心的距離就是Bias;你實際射在靶心上的位置與你瞄準點的距離就是Variance。

這裡寫圖片描述

Parallel Universes

  • 蒐集多個訓練集

這裡寫圖片描述

  • 在所有訓練集上,用相同的模型,得到不同的f∗f^{*}

這裡寫圖片描述

  • 三種模型,每種模型在一百個資料集上得到的f∗f^{*}的情況

    這裡寫圖片描述

Variance

  • 較簡單的模型在受不同樣本的影響較小,有更小的方差。(聚集在靶上瞄準的位置)
  • 較複雜模型有較大的方差。(分佈在靶心周圍,分散的很開)

這裡寫圖片描述

Bias

  • 用f∗f^{*}的期望去衡量Bias,用f¯\bar{f}與f^\hat{f}的近似程度來衡量偏差
  • 大的偏差(見圖):瞄的就不準,偏靶心一段距離。
  • 小的偏差(見圖):瞄的準,圍繞靶心。

這裡寫圖片描述

  • 黑色曲線:假定的f^\hat{f};
  • 紅色曲線:5000個不同資料集下的f∗f^{*};
  • 藍色曲線:5000個f∗f^{*}的平均f¯\bar{f}
  • 三種不同模型,1次、3次、5次。

這裡寫圖片描述
可以看出:

  • 簡單模型,大的偏差。(上圖:f¯\bar{f}與f^\hat{f}近似度小;下圖:偏離靶心。)
  • 複雜模型,小的偏差。(上圖:f¯\bar{f}與f^\hat{f}很近似;下圖:圍繞靶心。)

這裡寫圖片描述

Bias vs Variance

  • 隨著模型變複雜,Bias導致的error下降;
  • 隨著模型變複雜,Variance導致的error上升;
  • 隨著模型變複雜,error由下降到上升。
  • 模型較簡單時,大的Bias,小的Variance,Underfitting!
  • 模型過於複雜時,小的Bias,大的Variance,Overfitting!

這裡寫圖片描述

What to do with large bias?

診斷:

  • 如果模型甚至不能夠擬合訓練集,那有大的Bias,Underfitting!
  • 如果模型能夠擬合訓練集,但是在測試集上有很大的error,那可能有大的Variance,Overfitting!

對於Bias,重新設計模型:

  • 增加更多的特徵作為輸入;
  • 一個更復雜的模型。

這裡寫圖片描述

What to do with large variance?

  • 更多的data(效果見圖):非常有效,但不是都很實際,因為有可能沒有條件蒐集更多的data;
  • 正則化(效果見圖)

這裡寫圖片描述

Model Selection

  • 通常在Bias和Variance之間有一個權衡;
  • 平衡兩種誤差,選擇一個模型,使得總誤差最小;
  • 不該做得事:用三種模型在訓練集上訓練,得出三種f∗f^{*},分別在自己的測試集上得出error,選擇此時error最小的f∗f^{*},然後就把它放在真正的測試集上測試。(下圖繼續解釋為何這樣不好,以及該怎樣做)

這裡寫圖片描述

  • 以Homework為例,如果用上面的做法,會導致你在真正的測試集上表現很差。(下面會繼續介紹正確做法)

這裡寫圖片描述

Cross Validation

  • 將訓練集分成兩部分,一部分為訓練集,另一部分為驗證集;
  • 用訓練集分別訓練三種模型,在驗證集上得出error,選取error最小的模型;
  • 用整個原始的訓練集,去訓練得出來的模型,在測試集上得出error;
  • 在真正的測試集上得出error,這樣的話效果好,才是真的好。

不建議做的事:

  • 看到在測試集上(自己的)的效果不好,然後反過來去調整模型。這樣做雖然對於人之常情或者發paper來說是不可避免的,但要強調的是:這樣做了,也只是在你自己的測試集上的效果好,在真正的測試集上的效果不一定會變好。

這裡寫圖片描述

N-fold Cross Validation

  • 將訓練集分成三部分,取其中一份為驗證集,有三種組合情況;
  • 用三種模型在這三種情況下進行訓練,然後在驗證集上得出error,取三種情況下error的均值,均值error最小的情況作為選定的最好的模型;
  • 將選出的模型,用原始的整個訓練集訓練,然後在測試集上得出error;
  • 在真正的測試集上得出error。

這裡寫圖片描述