我有一個三類問題與不平衡的數據(90%,5%,5%)。現在我想用LIBSVM來訓練一個分類器。使用LIBSVM grid.py獲取不平衡數據?
問題是,LIBSVM優化其參數伽馬和成本的最佳準確性,這意味着100%的例子被歸類爲1類,這當然不是我想要的。
我試着修改重量參數-w沒有太大的成功。
所以我想要的是,修改grid.py的方式,它優化成本和伽瑪精度和召回分類,而不是整體的準確性。有沒有辦法做到這一點?或者有其他可以做這種事情的腳本嗎?
我有一個三類問題與不平衡的數據(90%,5%,5%)。現在我想用LIBSVM來訓練一個分類器。使用LIBSVM grid.py獲取不平衡數據?
問題是,LIBSVM優化其參數伽馬和成本的最佳準確性,這意味着100%的例子被歸類爲1類,這當然不是我想要的。
我試着修改重量參數-w沒有太大的成功。
所以我想要的是,修改grid.py的方式,它優化成本和伽瑪精度和召回分類,而不是整體的準確性。有沒有辦法做到這一點?或者有其他可以做這種事情的腳本嗎?
-w參數是您需要的不平衡數據。你試過什麼了?
如果你的類是:
你應該通過以下PARAMS支持向量機:
-w0 5 -w1 90 -w2 90
如果你想嘗試一種替代方案, svmlight系列中的一個程序http://www.cs.cornell.edu/people/tj/svm_light/svm_rank.html可直接最小化ROC曲線下的面積。
最小化AUC可能會比重新加權訓練實例獲得更好的結果。
svmlight是商業不友好的;它僅供學術使用。 – JDonner 2013-03-20 23:14:59
您可以使用grid.py
優化任何精度,召回率,F分數和AUC。調整是你必須改變LIBSVM中svm-train
使用的交叉驗證評估測量。按照procedure given on LIBSVM website。
如果你有不平衡的數據,你可能不應該優化精度。相反,優化f-score(或回憶,如果這對你更重要)。您可以按照here所述更改評估功能。
我認爲你還應該優化伽瑪和成本,同時使用不同的類別重量配置。我通過爲此目的傳遞不同的類權重(-wi weight)來修改grid.py中的「get_cmd」函數。根據我的經驗,課堂加權並不總是有幫助。
謝謝,但我認爲它應該是相反的方向:-w0 5 -w1 90 -w2 90,因爲較小的班級應該有更多與他們相關的成本..這一個幫助! – Damnum 2012-07-11 10:25:30
是的,我認爲你是對的。我剛剛編輯了我的問題。謝謝! – 2012-07-11 13:26:51
而當你有3個以上的課程,你怎麼能把每個w的價值歸功於? – lilouch 2017-01-11 13:50:57