在建立分類模型時,交叉驗證(Cross Validation)簡稱為CV,CV是用來驗證分類器的性能。它的主體思想是將原始數據進行分組,一部分作為訓練集,一部分作為驗證集。利用訓練集訓練出模型,利用驗證集來測試模型,以評估分類模型的性能。
訓練數據上的誤差叫做訓練誤差,它對算法模型的評價過於樂觀。利用測試數據測量的是測試誤差,我門報告的是測試誤差。有的時候訓練集上的正確率可能達到100%,但是在測試集上可能和隨機猜測差不多。
交叉驗證常用的幾種方法:
1.去一法 Leave-One-Out Cross Validation(記為LOO-CV)
它的做法是,從訓練集中拿出一個樣本,並在缺少這個樣本的數據上訓練出一個模型,然后看模型是否能對這個樣本正確分類。假設樣本個數有N個,則該方法一共要訓練出N個模型,利用這N個模型最終的驗證集的分類准確率的平均數作為此下LOO-CV分類器的性能指標。然而隨着數據量的增大,工作量會劇增,在時間是處於劣勢。但是它具有顯著德爾優點:
1)每一回合中幾乎所有的樣本皆用於訓練模型,因此最接近原始樣本的分布,這樣評估所得的結果比較可靠。
2)實驗過程中沒有隨機因素會影響實驗數據,確保實驗過程是可以被復制的。
2 k折交叉驗證 K-fold Cross Validation(記為K-CV)
K折交叉驗證是以部分代價去獲得去一法的大部分收益,這里的k折是吧數據分為k組。它的做法是將k-1組作為訓練集訓練出一個模型,然后將剩下的一組用做測試集。利用這k個模型最終的平均正確率來衡量模型的正確率。常使用的一般是5折10折,5折交叉驗證是將數據分為5組。實際做法是把20%的數據拿出去作為測試集,將剩下的80%數據訓練模型。使用80%或者90%的數據與使用所有數據的效果比較接近。
使用交叉驗證時,需要謹慎保持數數據的分布平衡,不能在某一折中全部是一類的數據。