交叉檢驗---訓練數據,驗證數據和測試數據


最近在Coursera上學習Data Analysis課程,課程論壇中有個帖子針對交叉檢驗(Cross Validation)中訓練數據集(train dataset),驗證數據集(Validate dataset)和測試數據集(test dataset)展開討論,內容挺好的,記錄到這里,作為備忘。

 

交叉檢驗(Cross Validation)

在數據分析中,有些算法需要利用現有的數據構建模型,比如貝葉斯分類器,決策樹,線性回歸等,這類算法統稱為監督學習(Supervisied Learning)算法。構建模型需要的數據稱之為訓練數據(Train Data)。

模型構建完后,需要利用數據驗證模型的正確性,這部分數據被稱為測試數據(Test Data)。測試數據不能用於模型構建之中,只能用於最后檢驗模型的准確性。

 

訓練數據,驗證數據和測試數據

一般做預測分析時,會將數據分為兩大部分。一部分是訓練數據,用於構建模型,一部分是測試數據,用於檢驗模型。但是,有時候模型的構建過程中也需要檢驗模型,輔助模型構建,所以會將訓練數據在分為兩個部分:1)訓練數據;2)驗證數據(Validation Data)。驗證數據用於負責模型的構建。典型的例子是用K-Fold Cross Validation裁剪決策樹,求出最優葉節點數,防止過渡擬合(Overfitting)。下面形式的描述一下前面提到的3類數據:

  • 訓練數據(Test Data):用於模型構建
  • 驗證數據(Validation Data):可選,用於輔助模型構建,可以重復使用。
  • 測試數據(Test Data):用於檢測模型構建,此數據只在模型檢驗時使用,用於評估模型的准確率。絕對不允許用於模型構建過程,否則會導致過渡擬合。

 

K次交叉檢驗(K-Fold Cross Validation)

K次交叉檢驗的大致思想是將數據大致分為K個子樣本,每次取一個樣本作為驗證數據,取余下的K-1個樣本作為訓練數據。模型構建后作用於驗證數據上,計算出當前錯誤率。重復K次,將K次錯誤率平均,得到一個總體的錯誤率。可以通過整體錯誤率,估計當前整體數據用於建模的錯誤率。

舉個例子,K = 10(常見情況),求出總體錯誤率為8.7%。那么將當前的所有數據全部作為訓練數據,得到的模型的錯誤率90%的可能在9.7%左右。

 

參考資料


免責聲明!

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



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