交叉驗證主要分成以下幾類:
1)k-folder cross-validation:k個子集,每個子集均做一次測試集,其余的作為訓練集。交叉驗證重復(fù)k次,每次選擇一個子集作為測試集,并將k次的平均交叉驗證識別正確率作為結(jié)果。優(yōu)點:所有的樣本都被作為了訓練集和測試集,每個樣本都被驗證一次。10-folder通常被使用。
2)K * 2 folder cross-validation是k-folder cross-validation的一個變體,對每一個folder,都平均分成兩個集合s0,s1,我們先在集合s0訓練用s1測試,然后用s1訓練s0測試。優(yōu)點是:測試和訓練集都足夠大,每一個個樣本都被作為訓練集和測試集。一般使用k=10
3)least-one-out cross-validation(loocv)假設(shè)dataset中有n個樣本,那LOOCV也就是n-CV,意思是每個樣本單獨作為一次測試集,剩余n-1個樣本則做為訓練集。
優(yōu)點:
1)每一回合中幾乎所有的樣本皆用于訓練model,因此最接近母體樣本的分布,估測所得的generalization error比較可靠。
2)實驗過程中沒有隨機因素會影響實驗數(shù)據(jù),確保實驗過程是可以被復(fù)制的。但LOOCV的缺點則是計算成本高,為需要建立的models數(shù)量與總樣本數(shù)量相同,當總樣本數(shù)量相當多時,LOOCV在實作上便有困難,除非每次訓練model的速度很快,或是可以用平行化計算減少計算所需的時間。
-------十折交叉驗證:10-fold cross validation-------
英文名叫做10-fold cross-validation,用來測試算法準確性。是常用的測試方法。將數(shù)據(jù)集分成十分,輪流將其中9份作為訓練數(shù)據(jù),1份作為測試數(shù)據(jù),進行試驗。每次試驗都會得出相應(yīng)的正確率(或差錯率)。10次的結(jié)果的正確率(或差錯率)的平均值作為對算法精度的估計,一般還需要進行多次10折交叉驗證(例如10次10折交叉驗證),再求其均值,作為對算法準確性的估計。
之所以選擇將數(shù)據(jù)集分為10份,是因為通過利用大量數(shù)據(jù)集、使用不同學習技術(shù)進行的大量試驗,表明10折是獲得最好誤差估計的恰當選擇,而且也有一些理論根據(jù)可以證明這一點。但這并非最終診斷,爭議仍然存在。而且似乎5折或者20折與10折所得出的結(jié)果也相差無幾。