機器學習中模型的診斷、改進、選擇——偏差、方差、欠擬合、過擬合、交叉驗證
阿新 • • 發佈:2021-01-12
資料來源:臺大 李巨集毅 2020機器學習深度學習課程
文章目錄
0、知識點
- 偏差bias
- 方差variance
- 過擬合 Overfitting
- 欠擬合 Underfitting
- N折交叉驗證 N-fold Cross Validation
一、偏差和方差
為什麼學習bias和variance?
瞭解average error 產生的原因,進而挑選適當的方法improve自己的model
- average error來自兩部分:
偏置bias
和方差variance
(橫軸表示Model多項式的次數,縱軸表示testing data上的平均誤差)
從訓練資料中我們找到
f
∗
f^*
f∗,它是
f
^
\hat{f}
f^(實際上的函式)的估計(estimator)
那
f
∗
f^*
f∗和
f
^
\hat{f}
f^的差別來自於兩方面bias+variance
f*的bias和variance
bias
樣本均值和總體均值
樣本均值是總體均值的無偏估計
左邊是比較小的N,散得比較開;右邊是比較大的N,比較緊密
variance
模型與bias & variance的關係
bias表示離中心點的偏移程度,variance表示點的離散程度
- 求 f ∗ f^* f∗的期望 E [ f ∗ ] E[f^*] E[f∗]需要找多個 f ∗ f^* f∗(前面迴歸那一節只找了一個 f ∗ f^* f∗)
- 不同的訓練資料,同樣的模型,最後產生的
f
∗
f^*
f∗會不同,因此可以用不同的資料集來訓練同一個模型得到多個
f
∗
f^*
(不同batch中的sample不同)
- 模型越簡單,其variance越小,函式越集中(簡單的model越不容易受到sampled data的影響)
- 模型越簡單,其bias越大(如圖,model越簡單,其function set包含的function越少,包含的範圍越小,做平均後的平均值( E [ f ∗ ] E[f^*] E[f∗])與真實值( f ^ \hat{f} f^)的偏差大)
模型越複雜:狙擊手用了霰彈槍,瞄得越來越準(small bias),但越來越抖,落點越分散(large variance)
二、欠擬合和過擬合
如果error來自於variance很大 —— Overfitting 過擬合
如果error來自於bias很大 —— Underfitting 欠擬合
對模型的診斷和改進
診斷:
- 如果你的model
不能fit訓練資料
,那麼你有large bias
——欠擬合
- 如果你的model
可以fit訓練資料
,但在測試資料上有較大的error
,那很可能是你有large variance
——過擬合
改進:
- error主要來自bias
- 增加
更多的feature
作為輸入 - 設計一個
更加複雜的model
- error主要來自variance
增加訓練資料
(非常有效,但大多數情況下不實際;不會傷害bias)正則化
(曲線越平滑越好,但可能會傷害bias)
下圖是沒加正則項、正則項比重加大的情況:
三、選擇模型
在bias和variance之間做權衡
,使得total error最小
在public testing set上得到較好的結果,通常在private testing set上得到的結果會更差一些
所以不能完全相信public testing set上的結果,我們需要做 交叉驗證
交叉驗證(Cross Validation)
- 將總的測試集分為測試集和驗證集,
測試集
用來訓練模型
,驗證集
用來選擇模型
- 首先用訓練集訓練得到3個model,然後將其運用到驗證集上得出各個model的error,由於Model 3的error最小。所以我們選定Model 3,然後我們可以用全部的訓練集再次訓練Model 3. 之後將訓練好的Model 3運用到public Testing set上,一般得到的error 會大於驗證集上的error,但此時在private testing set上的error才可能真正和public testing set上的差別不大。