Cross Validation(交叉驗證)


交叉驗證(Cross Validation)方法思想

Cross Validation一下簡稱CV。CV是用來驗證分類器性能的一種統計方法。

思想:將原始數據進行分組,一部分作為訓練集,另一部分作為驗證集,首先用訓練集對分類器進行訓練,然后利用驗證集來測試訓練得到的模型(model),以此來作為評價分類器的性能指標。

 

常用CV方法:

1. Hold-Out Method

將原始數據隨機分為兩組,一組作為訓練集,一組作為驗證集,利用訓練集訓練分類器,然后利用驗證集驗證模型,記錄最后的分類准確率為Hold-OutMethod下分類器的性能指標。

由於是隨機的將原始數據分組,所以最后驗證分類准確率的高低與原始數據的分組有很大關系,這種方法 得到的結果不具有說服性。

 

2. K-fold Cross Validation(記為K-CV)

k折交叉驗證:將原始數據分為K組(一般是均分),將每個子集數據分別做一次驗證集,其余的K-1組子集數據作為訓練集,這樣會得到K個模型,用這K個模型的驗證集的分類准確率的平均數作為K-CV分類器的性能指標。

 

3. Leave-One-Out Cross Validation(記為LOO-CV)

留一驗證(LOOCV)意指只使用原本樣本中的一項來當做驗證集, 而剩余的則留下來當做訓練集。 這個步驟一直持續到每個樣本都被當做一次驗證集。

LOO-CV有兩個明顯的優點:

  • 每一回合中幾乎所有的樣本皆用於訓練模型,因此最接近原始樣本的分布,這樣評估所得的結果比較可靠。
  • 實驗過程中沒有隨機因素會影響實驗數據,確保實驗過程是可以被復制的。

LOO-CV的缺點:

計算成本高,因為需要建立的模型數量與原始數據樣本數量相同。

 

主要函數:

函數:

sklearn.cross_validation.cross_val_score

調用形式:

sklearn.cross_validation.cross_val_score(estimator, X, y=None, scoring=None, cv=None,n_jobs=1, verbose=0, fit_params=None, pre_dispatch='2*n_jobs')

返回值就是對於每次不同的划分raw data(未加工的數據)時,在test data上得到的分類的准確率。

參數解釋:

estimator:不同的分類器,可以是任何分類器。比如支持向量機分類器:estimator = svm.SVC(kernel = 'linear', C = 1)

(kernel:核心    linear:直線)

cv:代表不同的cross validation的方法。如果cv是一個int值,並且提供rawtarget參數,那么就代表使用StratifiedKFold分類方式;如果cv是一個int值,並且沒有提供rawtarget參數,那么就代表使用KFold分類方式;也可以給它一個cv迭代策略生成器,指定不同的cv方法。

scoring:默認None,准確率的算法,可以通過score_func參數指定;如果不指定的話,是用estimator默認自帶的准確率方法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM