K層交叉檢驗就是把原始的數據隨機分紅K個部分。在這K個部分中,選擇一個做爲測試數據,剩下的K-1個做爲訓練數據。html
交叉檢驗的過程其實是把實驗重複作K次,每次實驗都從K個部分中選擇一個不一樣的部分做爲測試數據(保證K個部分的數據都分別作過測試數據),剩下的K-1個看成訓練數據進行實驗,最後把獲得的K個實驗結果平均。post
http://www.ilovematlab.cn/thread-49143-1-1.html性能
交叉驗證(CrossValidation)方法思想簡介
如下簡稱交叉驗證(Cross Validation)爲CV.CV是用來驗證分類器的性能一種統計分析方法,基本思想是把在某種意義下將原始數據(dataset)進行分組,一部分作爲訓練集(train set),另外一部分作爲驗證集(validation set),首先用訓練集對分類器進行訓練,在利用驗證集來測試訓練獲得的模型(model),以此來作爲評價分類器的性能指標.常見CV的方法以下:
1).Hold-Out Method
將原始數據隨機分爲兩組,一組作爲訓練集,一組作爲驗證集,利用訓練集訓練分類器,而後利用驗證集驗證模型,記錄最後的分類準確率爲此Hold-OutMethod下分類器的性能指標.此種方法的好處的處理簡單,只需隨機把原始數據分爲兩組便可,其實嚴格意義來講Hold-Out Method並不能算是CV,由於這種方法沒有達到交叉的思想,因爲是隨機的將原始數據分組,因此最後驗證集分類準確率的高低與原始數據的分組有很大的關係,因此這種方法獲得的結果其實並不具備說服性.
2).K-fold Cross Validation(記爲K-CV)
將原始數據分紅K組(通常是均分),將每一個子集數據分別作一次驗證集,其他的K-1組子集數據做爲訓練集,這樣會獲得K個模型,用這K個模型最終的驗證集的分類準確率的平均數做爲此K-CV下分類器的性能指標.K通常大於等於2,實際操做時通常從3開始取,只有在原始數據集合數據量小的時候纔會嘗試取2.K-CV能夠有效的避免過學習以及欠學習狀態的發生,最後獲得的結果也比較具備說服性.
3).Leave-One-Out Cross Validation(記爲LOO-CV)
若是設原始數據有N個樣本,那麼LOO-CV就是N-CV,即每一個樣本單獨做爲驗證集,其他的N-1個樣本做爲訓練集,因此LOO-CV會獲得N個模型,用這N個模型最終的驗證集的分類準確率的平均數做爲此下LOO-CV分類器的性能指標.相比於前面的K-CV,LOO-CV有兩個明顯的優勢:
①
a.每一回閤中幾乎全部的樣本皆用於訓練模型,所以最接近原始樣本的分佈,這樣評估所得的結果比較可靠。
②
b.實驗過程當中沒有隨機因素會影響實驗數據,確保實驗過程是能夠被複制的。
但LOO-CV的缺點則是計算成本高,由於須要創建的模型數量與原始數據樣本數量相同,當原始數據樣本數量至關多時,LOO-CV在實做上便有困難幾乎就是不顯示,除非每次訓練分類器獲得模型的速度很快,或是能夠用並行化計算減小計算所需的時間.
若是你理解 k-fold cross validation的話,其實這個和它的意思是差很少的。k-fold,就是取整個樣本的1/k做爲預測樣本,(k-1)/k做爲訓練樣本。當用訓練樣本對數據做出模型後,再用預測樣原本預測。
leave-one-out就是把n-1個樣本做爲訓練集,剩下一個樣本做爲預測集。而且循環,使得每一個樣本都做爲一次預測集,而後計算交叉驗證的正確率。
http://blog.xuite.net/x5super/studyroom/61471385-%E4%B8%80%E7%AF%87%E5%BE%88%E6%A3%92%E7%9A%84%E6%B8%AC%E8%A9%A6%28%E5%9B%9E%E6%B8%AC%29%E6%8A%80%E8%A1%93%E6%96%87%E7%AB%A0