k折交叉驗證
參考: 求解神經網絡做十字交叉驗證k=10,這種方法到底是得到十個模型還是一個模型。? - 王赟 Maigo的回答 - 知乎 https://www.zhihu.com/question/29350545/answer/44043075和下面的評論
五折交叉驗證就是將訓練集分為5份,然后分別在每四份上訓練得到一個模型,在剩下一份上預測,得到一個結果,這樣會訓練得到5個模型,可以預測得到5個結果,得到的平均值,可以反映一定程度上反映這組超參的效果。
在現實中,我們往往在比賽中使用k折交叉驗證,這是因為比賽賽方只提供訓練集,測試集用于檢驗我們的模型不會提供。
為了讓我們的模型普適性很強,又可以充分使用訓練集數據,我們可以使用k折交叉驗證,得到平均結果最高的模型結構和對應超參。然后再把對應超參在所有的數據集上訓練一遍。【想一想真的好費GPU】
這樣得到的模型可以傾向于是會得到較好結果的模型。
→求解神經網絡做十字交叉驗證k=10,這種方法到底是得到十個模型還是一個模型。? - 王赟 Maigo的回答 - 知乎 https://www.zhihu.com/question/29350545/answer/44043075下面的評論,感覺解釋的很好。
1、在訓練模型時,如果已經預先指定好超參數了,這時候k交叉驗證訓練出來的模型只是不同數據訓練出來的參數不同的相同結構的模型。一些文章中預先指定了超參數,再用k交叉驗證只能單單說明在這組超參數下,模型的準確率是這樣的,并不能說明當下的這組超參數是比其他的好。
2、k交叉驗證的用法是分別對自己想要嘗試的n組超參數進行k交叉驗證訓練模型,然后比較n組超參數下用k交叉驗證方法得到的n個平均誤差,然后選出誤差較小的那組超參數。
3、在做實驗時,比如要比較不同學習算法的效果,要先分別對不同算法用k交叉驗證方法確定一組較好的超參數,然后在測試集上比較他們的準確率。
可以得到較為穩定的k折超參數,然后用這個超參數在整個數據集上訓練。