2014-01-26 25 views
0

在使用SVM時,我發現在原始數據集上執行三向拆分是一種很好的做法, ,70/15/15分裂。如何在sklearn中使用支持向量機時實際使用驗證集

這個分割將對應於訓練的%70,測試的%15和被稱爲「驗證」的%15。

我很清楚爲什麼這是一個很好的做法,但我不確定實際執行此操作所需的細節。許多在線資源都討論了這個過程的重要性,但我似乎無法找到一個明確的(或者至少是算法的)過程描述。例如,sklearn討論它here,但在提供任何可靠工具之前停止。

這裏是我的想法:

  • 列車的算法,利用訓練集
  • 查找錯誤率,使用測試設置
  • ?再次調整參數
  • 得到錯誤率,使用驗證設置

如果任何人都可以在一個良好的資源的方向指向我,我會很感激。

回答

2

驗證集在所有監督學習算法中的作用是找到算法參數的最佳值(如果有的話)。

您的數據分割成國家隊訓練/檢驗/試驗數據後,訓練的算法最好的做法是這樣的:

  1. 選擇初始學習參數
  2. 列車使用訓練集的算法和參數
  3. 使用驗證集(交叉驗證測試)
  4. 改變參數獲得(驗證)精度,並繼續2,直到找到參數得到最好的驗證準確性
  5. 使用測試集獲得(測試)準確性,該測試集表示您的訓練算法對新的未見數據的實際預期準確度。

有一些進行交叉驗證測試的高級方法。一些類似libsvm的庫包含它們:k倍交叉驗證

在k倍交叉驗證中,您可以將您的火車數據隨機分爲k個相同大小的部分。您使用k-1部分進行訓練,並與剩餘部分進行交叉驗證。你用不同的子集做k次,最後使用平均值。

維基百科是一個很好的來源: