3

私は LibSVM 分類子を使用して、2、1、-1 というラベルの付いた 3 つの異なるクラスを分類しています。

MATLAB を使用して、LibSVM を使用して生成されたデータの Roc 曲線グラフを生成しようとしていますが、実行に必要なパラメーターを理解するのに問題があります。

私はそれを仮定します:

labels は、生成されたラベルのベクトルで、データが属するクラスを示します (私のデータは 1、-1、および 2 で構成され、サイズは 60x1 です)。

スコアは、「accuracy_score」と呼ばれる LibSVM によって作成された変数です (サイズは 60x3)。

しかし、posclassが何であるかわかりませんか?

また、私の仮定が正しいかどうかを調べていただければ幸いです。そうでない場合は、なぜですか?

4

2 に答える 2

4

明確な説明については、こちらを参照してください。

次の命令が与えられた場合: [X,Y] = perfcurve(labels,scores,posclass); labelsはデータの真のラベル、 はscores分類器からの出力スコア (しきい値の前)、posclassはラベルの陽性クラスです。

于 2014-05-30T13:55:17.050 に答える
3

percurve のドキュメントを参照してください。posclass は正のクラスのラベルです。この場合、1、-1、または 2 でなければなりません http://www.mathworks.com/help/stats/perfcurve.html

ROC 曲線には、x 軸に「偽陽性率」、y 軸に「真陽性率」があります。posclass を指定することで、偽陽性率と真陽性率を計算するクラスを指定します。たとえば、posclass を 2 と指定すると、真のラベルが 2 の場合、1 または -1 のいずれかを予測すると、偽の予測 (偽陰性) と見なされます。

編集: あなたが言及した accuaracy_score (ドキュメントの私のバージョン (3.17、matlab フォルダー内) では、decision_values/prob_estimates と呼ばれます) には 3 つの列があり、各列は 1 つのクラスに属するデータの確率に対応します。

例えば

model=svmtrain(train_label,train_data);
[predicted_label, accuracy, decision_values]=predict(test_label,test_dat,model);

model.Label にはクラス ラベルが含まれ、decision_values の個々の列には model.Label で指定されたクラスに属するテスト ケースの確率が含まれます。( http://www.csie.ntu.edu.tw/~b91082/SVM/READMEを参照) )。

purfcurve を使用してクラス m の ROC を計算するには:

[X,Y] = perfcurve(truelabels, decision_values(:,m)*model.Label(m),model.Label(m));

decision_values(:,m)*model.Label(m)クラスのラベルが負の数である場合は特に、これを行うことが不可欠です。

于 2014-05-16T19:31:30.137 に答える