2

svm http://www.mathworks.com/help/bioinfo/ref/svmclassify.htmlに関連するこの例を理解しようとしています。

虹彩データを取得して例を実行し、例に示されているように svm をプロットしました。ただし、svmstruct でサポート ベクターを表示すると、多くの新しい値が得られます。私の知る限り、サポートベクターはサンプル自体であり、マージンにあるものでなければなりません。ただし、svmStruct.SupportVectors を印刷すると、次のような異なる値が得られます

-0.0073   -0.4143
   -0.3706   -0.4143
   -0.2495   -0.1789
   -0.1284    0.2919
   -0.0073   -0.4143
   -0.1284   -0.6498
    0.1139    0.0565
    0.2350   -0.1789
   -0.4918   -0.1789
   -0.2495   -0.4143
   -0.4918    0.0565
    0.1139   -0.4143
   -0.0073    0.2919
   -0.1284    0.2919
   -0.0073    0.2919
    0.2350   -0.4143
    0.8406   -0.6498
   -0.1284    0.2919
    0.2350    0.2919

これらはサンプル ポイントではありません。明確化

また、私は自分の例を実行しようとしましたが、これが得られたものです。

分離境界がサンプル ポイントの 1 つに正確にあることがわかりません。それが最高の超平面だとは思いません。決定境界をやや低く定義する必要があったと思います。また、サポート ベクターを丸で囲んでいますが、それらがサポート ベクターであるべきかどうかはわかりません。最も奇妙なことは、超平面から点までのマージンが大きくないことです。なぜそうなのですか?

ここに画像の説明を入力

4

2 に答える 2

2

私は数学をまったく知りませんが、あなたのリンクによると、svmtrain()関数を使用しています(ここで説明されています):

SupportVectors— 各行が正規化されたデータ空間のサポート ベクターに対応するデータ ポイントの行列。この行列は、'AutoScale' 引数に従って正規化が適用された後のトレーニング入力データ行列のサブセットです。

したがって、データポイントは正規化されます。設定してみてくださいautoscale=false

于 2012-12-09T12:44:46.330 に答える
0

はい、snørevenは正しいです。私はそれをより一般的にします:

すべてのML問題には2つの段階があります。

  1. モデルをトレーニングする
  2. トレーニング済みモデルをテスト/使用する

さらに良いのは、3つの段階がある場合です。

  1. モデルをトレーニングする
  2. モデルを評価します(私の目的には十分ですか?)
  3. トレーニング済みモデルをテスト/使用する

MLの非常に短く基本的な紹介

MLコース

特定のケースでは、MatlabでSVM分類のモデルをトレーニングする必要があります。そうすれば、関数を介してそれを使用できますsvmclassify

于 2012-12-11T16:24:02.960 に答える