2018年6月6日 星期三

[機器學習] training v.s. testing

在機器學習裡面,有一個很重要的概念,叫做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

沒有留言:

張貼留言