k-摺疊交叉驗證

k-Fold Cross Validation


不管是哪種超參數優化,依賴的都是在調整完超參數之後,把訓練完的結果跟測驗數據做比較,以測驗的結果評斷超參數選擇的好壞。最簡單的測驗集取得方法就是把數據集切割成訓練集和測驗集。但是,這樣單一一個測驗集的效果有限。最常碰到的問題是擬合過度。因為是以套用到測驗集的結果為衡量標準。模型改進的結果有可能會只適用於測驗集裡的數據。

交叉驗證的使用就是為了能更準確的測驗模型的泛化能力,是否能有效的套用模型到其他未見過的資料集上。最簡單的交叉驗證方法就是把數據集分成訓練集,驗證集,和測驗集。以驗證集來優化超參數,再以模型完全沒見過的測驗集來確認模型的表現。但是,這種簡單的方法有幾個問題。第一,因為數據集被分成三份,模型在用訓練集訓練時,很多數據,甚至有可能有特別的數據,不會在訓練集中。第二,驗證和測驗的結果

圖一

跟驗證集和測驗集是如何產生的息息相關。而通常使用的是隨機的切割方式,因此無法保證如此做一定會得出好結果。

k-摺疊交叉驗證是要在有限的樣本資料中有效的評估模型的訓練成果。它有一個唯一的參數k,代表共要把資料集分成幾組。這個驗證法容易理解,可用來求出較低偏差的結果。基本上有四個步驟。一,隨機打亂數據。二,把數據集分成k個大致上大小一致的組別。三,每次保留一組來驗證模型,其他的k-1組用來訓練模型。保留訓練結果,不用保留模型。重複k遍讓每次訓練的驗證集都不一樣。四,把k次的訓練數據平均起來成為總訓練成果(圖一)。這樣可以避免掉隨機做資料集切割的不確定性。訓練模型時也有機會用到所有的資料集。


參考文獻:

https://towardsdatascience.com/cross-validation-430d9a5fee22

https://www.knowledgehut.com/blog/data-science/k-fold-cross-validation-in-ml

https://en.wikipedia.org/wiki/Cross-validation_(statistics)

http://www.cs.nthu.edu.tw/~shwu/courses/ml/labs/08_CV_Ensembling/08_CV_Ensembling.html