2013-05-20 61 views
2

大家,當我使用libSVM做出一些預測時,這是一個奇怪的現象。SVM的gamma和cost參數

當我沒有設置SVM的參數時,我會在測試集上獲得99.9%的性能。而如果我設置了參數'-c 10 -g 5',那麼測試集的精確度就會提高大約33%。

順便說一句,我使用的SVM工具包是LibSVM。

我想知道數據集是否有問題。我無法弄清楚哪個結果更具說服力。

+0

除了Marc的回答,您應該使用單獨的驗證集來爲C和g選擇合適的值。或者使用grid.py(隨libsvm提供)通過交叉驗證獲取這些參數。 – Bull

+2

這是強烈建議閱讀:http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf – Bull

+0

LIBSVM指南確實是一個非常好的初始參考。 –

回答

10

你恰好碰到一個問題,其中Cgamma的默認值很好地工作(分別爲1和1/num_features)。

gamma=5明顯大於默認值。當默認值接近最佳時,gamma=5導致非常差的結果是完全合理的。大型gamma和大型C的組合是過度擬合的完美配方(例如高訓練集性能和低測試集性能)。

+1

你的意思是默認的'C'和'gamma'碰巧工作正常嗎?考慮到現實世界的問題,我認爲太高的準確性是不合適的。那麼我應該檢查是否有任何功能失敗? – Peiyun

+0

是的,默認的'C'和'gamma'恰好是很好的值。您可以在許多現實世界問題中獲得非常高的準確性。只要確保你沒有評估訓練集上的分類器。通過檢查是否有任何功能失敗,你的意思是什麼? –

+2

評估訓練集上的分類器實際上是一個好主意(只要您還在驗證集和測試集上進行),因爲它可以幫助您判斷更多的訓練數據或更好的特徵是否有助於獲得更好的模型,但這超出了問題的範圍。 – Bull