2013-10-14 119 views
0

我很抱歉提出這樣一個愚蠢的問題!我認爲我們需要將數據集劃分爲svm中的訓練和測試,然後使用訓練集來找到模型。然後使用測試集檢查此模型的準確性。 在libsvm數據集「​​」中有些數據集有訓練和測試,其他的沒有訓練和測試,因此根據libsvm網站中的libsvm指南,上述代碼是不同的。例如在svmguide2數據集中沒有指定的測試集。所以我們如何測試模型的準確性。我們是否需要將數據集劃分爲測試和培訓?

回答

0

至少有兩個重要的方面這裏,首先,你需要自己創造這樣spliutting的事實。

的第二件事情是,僅僅分裂組分成兩個部分是相當不夠的,因爲你仍然可以找到完全無用的模型,這對於這一塊,特別是分裂將產生良好的效果。這就是像交叉驗證這樣的概念/策略發揮作用的地方。在CV設置中,您將數據分成K個相等大小的塊(其中k取自間隔[1,n],其中n是數據大小),然後在每個塊上測試k次模型,同時對其進行訓練其餘的部分。這樣,從有限的例子中,您可以生成k個獨特的測試用例,每個測試用例都有非重疊的訓練和測試子集。特別是在設置k = n時,您會測試所謂的「離開一個人」場景,這通常是在理論研究中提到的。 k最常見的選擇是10,5或3.

-1

你必須自己劃分整個數據。我實際上建議有兩套以上。一旦你完成了訓練和測試,有一個額外的設置來檢查你是否沒有受到以前的訓練 - 測試 - 再培訓迭代的偏見是有幫助的。

此外,如果你要使用交叉驗證,以找到您的參數,你將需要更多的數據集。

相關問題