在機器學習裡面,有一個很重要的概念,叫做training 和 testing
training: 我們利用已有的資料來訓練模型,進而得到目標函數
testing: 把training 後的目標函數, 拿去應用在現實例子中
其中training 會得到 in-sample error; testing 會得到out-sample error
舉例來說,我們想利用病人的檢查結果來預測癌症, 於是我們會先把手上有的資料拿來訓練模型(training); 之後訓練好再把它丟出來給大家拿來預測(testing)
那這些error 是怎麼來的呢, 我們知道在機率與統計裡有一個概念,也就是variance 和 bias
以下用打靶來比喻:
variance :指得是每次射擊的彈孔間的差異
bias :指的是彈孔離靶心有多遠
今天我們如果模型越簡單, 其variance會越小,因為data 對模型的影響越小
反之,如果模型越複雜,其bias 會越小, 因為模型越複雜,越有可能逼近真正的情況
所以綜上所述,我們可以發現 bias 和variance 有tradeoff
當模型太簡單,導致bias 太大 => 被稱作 underfitting
=> 解決方法:
1. 修改模型
當模型太複雜,導致variance太大=> 被稱作 overfitting
p.s. 有些書上有另外一種定義方法, 也就是因為模型太複雜,所以in-sample error會很小,但是out-sample error 會很大 (其實意思差不多, 因為 variance 一變大, out-off sample error 和 in-sample error 的差別會變大, 所以最後得到的 out-sample error 可能比簡單模型還大)
=> 解決方法:
1. 蒐集更多資料
2. regularization
reference:
1. 李宏毅教授 youtube
2. learning from data
沒有留言:
張貼留言