交叉驗證

交叉驗證(Cross-validation)主要用於建模應用中,例如PCR 、PLS迴歸建模中。在給定的建模樣本中,拿出大部分樣本進行建模型,留小部分樣本用剛建立的模型進行預報,並求這小部分樣本的預報誤差,記錄它們的平方加和。這個過程一直進行,直到所有的樣本都被預報了一次而且僅被預報一次。把每個樣本的預報誤差平方加和,稱爲PRESS(predictedError Sum of Squares)。

  用交叉驗證的目的是爲了得到可靠穩定的模型。在建立PCR 或PLS模型時,一個很重要的因素是取多少個主成分的問題?用cross validation校驗每個主成分下的PRESS值,選擇PRESS值小的主成分數。或PRESS值不在變小時的主成分數。
  常用的精度測試方法有交叉驗證,例如10倍交叉驗證(10-fold crossvalidation),將數據集分成十分,輪流將其中9份做訓練1份做測試,10次的結果的均值作爲對算法精度的估計,一般還需要進行多次10倍交叉驗證求均值,例如10次10倍交叉驗證,更精確一點。
交叉驗證有時也稱爲交叉比對,如:10倍交叉比對

交叉驗證包括兩個階段,即定型階段和生成結果階段。這些階段包括以下步驟:
  • 選擇目標挖掘結構。

  • 指定要進行測試的模型。

  • 指定要對結構數據進行分區的摺疊數。

  • Analysis Services 根據現有摺疊數量創建相同數量的模型並對這些模型進行定型。

  • 若要生成結果,必須指定用於對已定型的模型進行測試的參數。

  • 指定測試數據的源。(這項功能只有在使用存儲過程時纔可用。)

  • 指定可預測屬性、預測值以及準確性閾值。

  • Analysis Services隨後會爲每個模型中的每個摺疊返回一組準確性度量。您還可以爲整個數據集返回準確性度量。

交叉驗證(Cross Validation)CV.CV是用來驗證分類器的性能一種統計分析方法,基本思想是把在某種意義下將原始數據(dataset)進行分組,一部分做爲訓練集(trainset),另一部分做爲驗證集(validationset),首先用訓練集對分類器進行訓練,在利用驗證集來測試訓練得到的模型(model),以此來做爲評價分類器的性能指標.常見CV的方法如下:




1).Hold-Out Method




將原始數據隨機分爲兩組,一組做爲訓練集,一組做爲驗證集,利用訓練集訓練分類器,然後利用驗證集驗證模型,記錄最後的分類準確率爲此Hold-OutMethod下分類器的性能指標.此種方法的好處的處理簡單,只需隨機把原始數據分爲兩組即可,其實嚴格意義來說Hold-Out Method並不能算是CV,因爲這種方法沒有達到交叉的思想,由於是隨機的將原始數據分組,所以最後驗證集分類準確率的高低與原始數據的分組有很大的關係,所以這種方法得到的結果其實並不具有說服性.






2).K-fold CrossValidation(記爲K-CV)




將原始數據分成K(一般是均分),將每個子集數據分別做一次驗證集,其餘的K-1組子集數據作爲訓練集,這樣會得到K個模型,用這K個模型最終的驗證集的分類準確率的平均數作爲此K-CV下分類器的性能指標.K一般大於等於2,實際操作時一般從3開始取,只有在原始數據集合數據量小的時候纔會嘗試取2.K-CV可以有效的避免過學習以及欠學習狀態的發生,最後得到的結果也比較具有說服性.






3).Leave-One-Out CrossValidation(記爲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在實作上便有困難幾乎就是不顯示,除非每次訓練分類器得到模型的速度很快,或是可以用並行化計算減少計算所需的時間.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章