2012-01-23 16 views
1

私はマルチクラスのSVM分類(6クラス)を持っています。 LIBSVMを使って分類したいと思います。以下は、私が試したことであり、私はそれらに関するいくつかの質問があります。LIBSVMを使用したマルチクラス

方法1(1対1):この方法について

model = svmtrain(TrainLabel, TrainVec, '-c 1 -g 0.00154 -b 0.9'); 
[predict_label, accuracy, dec_values] = svmpredict(TestLabel, TestVec, model); 

つの質問:1)それは-b」はnに私はマルチクラス問題 2のために行うために必要なすべての)どのような値でなければならないということですn 'である。第二の方法については

u=unique(TrainLabel); 
N=length(u); 
if(N>2)  
    itr=1;  
    classes=0; 
    while((classes~=1)&&(itr<=length(u))) 
     c1=(TrainLabel==u(itr));  
     newClass=double(c1); 
     tst = double((TestLabel == itr)); 
     model = svmtrain(newClass, TrainVec, '-c 1 -g 0.00154'); 
     [predict_label, accuracy, dec_values] = svmpredict(tst, TestVec, model);  
     itr=itr+1; 
    end 
    itr=itr-1; 
end 

、私は分類のスコアを添付しない方法:私は

方法2(残り対1)が分かりません。私は投票することができません。

これ以外にも、私が試した2つの方法です。どの方法が良いですか?

コメントがありますか?私が間違っていれば私を修正してください。 '-b' パラメータについて

+0

非常に不均衡なセット(いくつかの「1つ」と「多くの「休憩」)と「休憩」の例の間に多くの違いがある場合、「1対vs」で良い結果が得られたのか不思議です。 – Matthieu

答えて

3

、LIBSVMのREADMEに、それは言う:

-b probability_estimates:確率推定、0または1(デフォルト0)

用SVCやSVRモデルを訓練するかどうかしたがって、訓練されたモデルがクラス確率を返すようにするには '-b 1'を、そうでない場合は-b 0を指定する必要があります。 svmtrainに一度だけ電話する必要があります。また、トレーニングに '-b 1'を指定する場合は、それを予測用にも指定する必要があります。

+0

Uは方法1を参照していますか?私は正しい?これは、私がやっている2番目の方法が1対1であるからです。それで、私は何度か電話しています。 – lakesh

+0

はい、私は方法1を指しています。 – carnieri

関連する問題