1. 程式人生 > >交叉驗證思想

交叉驗證思想

避免 實用 utm -o val 出現 循環 集合 階段

交叉驗證

寫一個函數,實現交叉驗證功能,不能用sklearn庫。

交叉驗證(Cross-Validation): 有時亦稱循環估計, 是一種統計學上將數據樣本切割成較小子集的實用方法。於是可以先在一個子集上做分析, 而其它子集則用來做後續對此分析的確認及驗證。 一開始的子集被稱為訓練集。而其它的子集則被稱為驗證集或測試集。常見交叉驗證方法如下:

Holdout Method(保留)

  • 方法:將原始數據隨機分為兩組,一組做為訓練集,一組做為驗證集,利用訓練集訓練分類器,然後利用驗證集驗證模型,記錄最後的分類準確率為此Hold-OutMethod下分類器的性能指標.。Holdout Method相對於K-fold Cross Validation 又稱Double cross-validation ,或相對K-CV稱 2-fold cross-validation(2-CV)
  • 優點:好處的處理簡單,只需隨機把原始數據分為兩組即可
  • 缺點:嚴格意義來說Holdout Method並不能算是CV,因為這種方法沒有達到交叉的思想,由於是隨機的將原始數據分組,所以最後驗證集分類準確率的高低與原始數據的分組有很大的關系,所以這種方法得到的結果其實並不具有說服性.(主要原因是 訓練集樣本數太少,通常不足以代表母體樣本的分布,導致 test 階段辨識率容易出現明顯落差。此外,2-CV 中一分為二的分子集方法的變異度大,往往無法達到「實驗過程必須可以被復制」的要求。)

K-fold Cross Validation(k折疊)

  • 方法:作為Holdout Methon的演進,將原始數據分成K組(一般是均分),將每個子集數據分別做一次驗證集,其余的K-1組子集數據作為訓練集,這樣會得到K個模型,用這K個模型最終的驗證集的分類準確率的平均數作為此K-CV下分類器的性能指標.K一般大於等於2,實際操作時一般從3開始取,只有在原始數據集合數據量小的時候才會嘗試取2. 而K-CV 的實驗共需要建立 k 個models,並計算 k 次 test sets 的平均辨識率。在實作上,k 要夠大才能使各回合中的 訓練樣本數夠多,一般而言 k=10 (作為一個經驗參數)算是相當足夠了。
  • 優點:K-CV可以有效的避免過學習以及欠學習狀態的發生,最後得到的結果也比較具有說服性.
  • 缺點:K值選取上

Leave-One-Out Cross Validation(留一)

  • 方法:如果設原始數據有N個樣本,那麽留一就是N-CV,即每個樣本單獨作為驗證集,其余的N-1個樣本作為訓練集,所以留一會得到N個模型,用這N個模型最終的驗證集的分類準確率的平均數作為此下LOO-CV分類器的性能指標.
  • 優點:相比於前面的K-CV,留一有兩個明顯的優點:
    • a.每一回合中幾乎所有的樣本皆用於訓練模型,因此最接近原始樣本的分布,這樣評估所得的結果比較可靠。
    • b. 實驗過程中沒有隨機因素會影響實驗數據,確保實驗過程是可以被復制的.
  • 缺點:計算成本高,因為需要建立的模型數量與原始數據樣本數量相同,當原始數據樣本數量相當多時,LOO-CV在實作上便有困難幾乎就是不顯示,除非每次訓練分類器得到模型的速度很快,或是可以用並行化計算減少計算所需的時間。



http://www.jianshu.com/p/48d391dab189

交叉驗證思想