2012-07-22 33 views
0

我正在研究需要應用支持向量迴歸(SVR)的論文,最好使用高斯內核。搜索了一下後,我發現LibSVM可以幫助完成這項任務。然而,我面臨着很多困難:我不確定如何做到這一點,使用這個或任何其他類似的庫,如何根據經驗決定SVR參數(內核帶寬,成本和epsilon(鬆弛變量)),以及如何繪製訓練和測試錯誤。如何使用(或不使用)LibSVM執行支持向量迴歸

歡迎您提出任何建議。

回答

5

最佳參數將取決於您的數據。您最好的(也可能是唯一的)選項是連續嘗試多個參數集,並根據您選擇的任何一種度量標準查看哪一個能夠爲您提供最佳性能。

至於繪製訓練和測試錯誤 - 評估分類器的一種好方法是使用F-measure作爲性能指標。這可以讓您考慮誤報和誤報兩種錯誤,並根據您的特定領域對其進行適當的權衡。如果你的意思是繪製訓練和測試錯誤,請澄清。

編輯:響應您的評論

LIBSVM不知道如何優化自己的參數,或者 - 這就是爲什麼你需要爲它提供的參數作爲參數傳遞給svm_train功能。您需要通過實驗優化您自己的參數,並且要做到這一點,您需要對性能進行單一的定量測量。我不確定30值問題是什麼意思,但是您應該能夠通過創造性地重新定義真正的積極的,錯誤的積極的,真實的消極的和錯誤的消極的方式來使用F-measure。

您有兩種選擇:一種更全面,另一種計算更便宜。您可以使用三層嵌套循環來測試gamma,C和epsilon的各種可能組合,選擇導致測試數據性能最高的參數(我建議使用交叉驗證以避免過度擬合到特定測試數據),或者你可以連續地優化每一個 - 首先,給定一些平淡的,默認的C和epsilon,迭代許多gamma值直到你找到最好的;然後對C和epsilon執行相同操作。

如果您想增強第二種方法,使其在優化每個參數時使用所有其他參數的最佳值而不是某些默認值,並多次優化每個參數(以便它們可以在其他參數中依次運行更好的值)。

爲了使任何一種方法更加精確(儘管總是以潛在的過度擬合爲代價,記住這一點),使用伸縮式搜索 - 比如說第一次從1到101搜索,步長爲10,所以你搜索1,11,21 ... 101。在你獲得了51的最佳價值後,在下一次嘗試中,通過搜索46,47,48,49,50,51,52,53,54,55,56,以便重複使用相同的信息,但變得更加精確。

爲了使任一方法對隨機波動(例如在交叉驗證中產生的隨機褶皺)較不敏感,請使用默認參數運行多個交叉驗證測試(好的默認值,我想可能是1.0對於C,1E-9對於epsilon,我不確定伽瑪),並獲得您使用的性能測量的均值和標準偏差。然後,您可以判斷給定的績效指標在統計​​上是否明顯優於次優,或者僅使用默認參數。

+0

你能幫我一下如何使用這個庫嗎?我現在只是有點專注於......另外,你有沒有提示如何讓應用程序自動選擇最佳值(例如,通過編寫一個特殊的設計迭代過程)。最後,關於繪圖問題,我不確定F-measure會如我所料,因爲我正在尋找30值解決方案,而不僅僅是一個值。你怎麼看? – user706838 2012-07-22 01:32:50

相關問題