簡體   English   中英

如何使用(或不使用)LibSVM執行支持向量回歸

[英]How to perform Support Vector Regression with (or without) LibSVM

我正在研究需要應用支持向量回歸(SVR)的論文,最好使用高斯內核。 經過一番搜索,我發現LibSVM可以幫助完成此任務。

但是,我面臨許多困難:我不確定使用該庫或任何其他類似的庫該如何做到這一點,如何憑經驗確定SVR參數(內核帶寬,成本和epsilon(松弛變量)),如下所示:以及如何繪制訓練和測試錯誤。

歡迎所有建議。

最佳參數將取決於您的數據。 最好的(也許也是唯一的)選擇是依次嘗試多個參數集,並根據選擇的任何指標查看哪一個參數給您帶來最佳性能。

至於繪制訓練誤差和測試誤差-評估分類器的一種好方法是使用F量度作為性能指標。 這樣,您就可以考慮誤報和誤報錯誤,並根據您的特定域對它們進行加權。 如果您通過繪制培訓和測試錯誤來表示其他含義,請進行說明。

編輯:回應您的評論

LibSVM也不知道如何優化自己的參數-這就是為什么您需要為其提供參數作為svm_train函數的參數的原因。 您需要通過實驗來優化自己的參數,而這樣做則需要一些量化的性能指標。 我不確定您所說的30值問題是什么意思,但是您應該能夠通過創造性地重新定義真實肯定,錯誤肯定,真實否定和錯誤否定來使用F度量。

您有兩種選擇:一種更全面,另一種在計算上更便宜。 您可以使用三層嵌套循環來測試gamma,C和epsilon的各種可能組合,選擇可以使測試數據具有最高性能的參數(我建議使用交叉驗證以避免對特定測試過度擬合數據),或者您可以連續優化每個參數-首先,給定一些乏味,默認的C和epsilon,然后遍歷許多伽瑪值,直到找到最佳值為止; 然后對C和epsilon做同樣的事情。

如果要增強第二種方法,請使其在優化每個參數時,對所有其他參數使用最佳值(而不是默認值),然后對每個參數進行多次優化(以便它們可以連續運行)其他參數的值更好)。

為了使這兩種方法更精確(盡管總是以潛在的過度擬合為代價,請記住),使用伸縮搜索-假設您第一次從1到101搜索,步長為10,所以搜索1,11 ,21 ... 101。 在獲得最佳價值(例如51)之后的下一個遍歷中,搜索46、47、48、49、50、51、52、53、54、55、56,以便您重復使用相同的信息,變得更加精確。

為了使這兩種方法對隨機波動的敏感性降低(例如,在生成用於交叉驗證的隨機折疊中),請使用默認參數運行多個交叉驗證測試(對於C,好的默認值可能是1.0,並且1E-9(適用於epsilon,我不確定gamma),並獲取您使用的性能指標的平均值和標准偏差。 然后,您可以判斷給定的性能指標在統計​​上是否比第二好,或者僅使用默認參數要好得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM