簡單的驗證 single validation這個與以前的想法有些出入 交叉驗證 cross validation 留一法 k-fold 交叉驗證 總結
這些知識點以前大部分都知道,就簡單記一下。 簡單的驗證 single validation(這個與以前的想法有些出入)
我們並不能完全依靠我們的 Ein E_{in}來評價模型的好壞,一因為僅僅靠 Ein E_{in}會很容易過擬合
所以,想法就是 留出一部分資料集作為test_data,以免他被汙染。
我們有很多的H,通過train_data 得到一系列的 g− g^-,然後用test_data得到 g− g^-對應的 E,選出最小E對應的 Hm∗ H_{m^*}。
注意:是選出 Hm∗ H_{m^*},而不是 g− g^-。
然後,我們用總資料集D去訓練 Hm∗ H_{m^*},再才得到最好的 gm∗ g_{m^*}
原因: g− g^-與 gm∗ g_{m^*}其實並不一定相等。因為, gm∗ g_{m^*}是通過總資料量D訓練得到的,而 g− g^-是通過train_data得到的。那麼普遍情況下, gm∗ g_{m^*}要比 g− g^-好。只有當test_data很小,train_data接近D時,才差不多。
一般情況下,我們的test_data選取總資料的20%.即N/5 . 交叉驗證 cross validation 留一法
留一個作為test_data,其餘都作為train_data.迴圈N次,再把N個error取平均.
該方法理論上很好,但是實際上,並不常用.一般再資料量很小的時候用.
缺點有:
1.可能計算量很大
2.穩定性不是很好,因為每次僅僅留一個點作為test_data k-fold 交叉驗證
一般K取10. 也有取5的.k越大,越精確.但是運算量大. 總結 交叉驗證其實對結果還是有一些樂觀成分. 只要計算量允許,就用10折交叉驗證,10折效果一般比5折好. cross validation 比single validation(普通驗證法) 好,只要計算量允許,一定要用cross validation