【機器學習(李巨集毅)】 三、Bias and Variance
阿新 • • 發佈:2018-12-31
本講核心問題:Where does the error come from?
Review:
- 更復雜的模型不一定在測試集上有更好的表現
- 誤差由偏差“bias”導致
- 誤差由方差“variance”導致
Estimator:
f^ 是計算pokemon真正的函式,只有Niantic公司知道- 從訓練集上,我們得出
f∗ ,f∗ 是f^ 的一個估計 - 故像射擊一樣,靶心為
f^ ,f∗ 是我們射中的地方,會由於“bias”和“variance”導致射偏。
Bias and Variance of Estimator:
- 估測均值
μ :用m來估計均值μ 是unbiased的(注意理解下其中公式)
- 估計方差
σ2 :用s2 來估計σ2 是biased的(同樣注意理解其中公式)
形象解釋Bias和Variance
- 就像射擊一樣,你瞄準點同靶心的距離就是Bias;你實際射在靶心上的位置與你瞄準點的距離就是Variance。
Parallel Universes
- 蒐集多個訓練集
- 在所有訓練集上,用相同的模型,得到不同的
f∗
三種模型,每種模型在一百個資料集上得到的
f∗ 的情況
Variance
- 較簡單的模型在受不同樣本的影響較小,有更小的方差。(聚集在靶上瞄準的位置)
- 較複雜模型有較大的方差。(分佈在靶心周圍,分散的很開)
Bias
- 用
f∗ 的期望去衡量Bias,用f¯ 與f^ 的近似程度來衡量偏差 - 大的偏差(見圖):瞄的就不準,偏靶心一段距離。
- 小的偏差(見圖):瞄的準,圍繞靶心。
- 黑色曲線:假定的
f^ ; - 紅色曲線:5000個不同資料集下的
f∗ ; - 藍色曲線:5000個
f∗ 的平均f¯ - 三種不同模型,1次、3次、5次。
可以看出:
- 簡單模型,大的偏差。(上圖:
f¯ 與f^ 近似度小;下圖:偏離靶心。) - 複雜模型,小的偏差。(上圖:
f¯ 與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∗ ,分別在自己的測試集上得出error,選擇此時error最小的f∗ ,然後就把它放在真正的測試集上測試。(下圖繼續解釋為何這樣不好,以及該怎樣做)
- 以Homework為例,如果用上面的做法,會導致你在真正的測試集上表現很差。(下面會繼續介紹正確做法)
Cross Validation
- 將訓練集分成兩部分,一部分為訓練集,另一部分為驗證集;
- 用訓練集分別訓練三種模型,在驗證集上得出error,選取error最小的模型;
- 用整個原始的訓練集,去訓練得出來的模型,在測試集上得出error;
- 在真正的測試集上得出error,這樣的話效果好,才是真的好。
不建議做的事:
- 看到在測試集上(自己的)的效果不好,然後反過來去調整模型。這樣做雖然對於人之常情或者發paper來說是不可避免的,但要強調的是:這樣做了,也只是在你自己的測試集上的效果好,在真正的測試集上的效果不一定會變好。
N-fold Cross Validation
- 將訓練集分成三部分,取其中一份為驗證集,有三種組合情況;
- 用三種模型在這三種情況下進行訓練,然後在驗證集上得出error,取三種情況下error的均值,均值error最小的情況作為選定的最好的模型;
- 將選出的模型,用原始的整個訓練集訓練,然後在測試集上得出error;
- 在真正的測試集上得出error。