4

問題: ラベル 1、2、3 による 3 クラス分類。

ツール: MATLAB 用 LibSVM

svmModel = svmtrain(<Trainfeatures>, <TrainclassLabels>, '-b 1 -c <someCValue> -g <someGammaValue>');
[predLabels, classAccuracy, **probEstimates**] = svmpredict(<TestFeatures>, <TestClassLabels>, '-b 1');

このステップの後、probEstimates の最初の 10 行は次のようになります。

0.9129    0.0749    0.0122
0.9059    0.0552    0.0389
0.8231    0.0183    0.1586
0.9077    0.0098    0.0825
0.9074    0.0668    0.0257
0.8685    0.0146    0.1169
0.8962    0.0664    0.0374
0.9074    0.0548    0.0377
0.9474    0.0054    0.0472
0.9178    0.0642    0.0180

ただし、最初の 10 個の予測ラベルは次のようになります。

 2
 2
 2
 2
 2
 2
 2
 2
 2
 2

質問:

  1. 私の理解では、確率推定は、特定のアイテムがその特徴ベクトルを考慮して特定のクラスに属する確率であるということでした。しかし、それが本当なら、これらの項目はクラス 2 ではなくクラス 1 に属しているはずです。libsvm はクラスの順序を変更しますか? 私が間違っている場合、誰かが確率推定の実際の解釈が何であるかを説明できますか?

  2. クラス 1 の精度を高めるために決定境界を移動する必要がある場合 (クラス 1 であると予測されるアイテムが少なくなるため、決定境界でより保守的になります)、これらのクラス確率のどれをどのように処理する必要がありますか? ?

4

2 に答える 2

7

最近同じ問題に遭遇しました。その理由は、トレーニング データの順序に関連しています。事後確率ベクトルのインデックスをトレーニング データのラベルに対応させたい場合は、トレーニング データをラベルに従って並べ替える必要があります。

たとえば、最初のデータ ポイントのラベルが 4 の場合、事後確率ベクトルの最初のエントリは 4 というラベルの付いたデータ ポイントに関連付けられます。

于 2013-05-20T09:47:18.367 に答える
0

モデルに保存されているラベルの順序は、本来あるべきものとは異なる場合があります。svmModel.Label を使用して確認できます。そして、確率推定値は、この順序に従って出力されます。

于 2013-12-17T12:24:23.267 に答える