4

データを2つのクラスに分類するためにチュートリアルで書かれているように、SVM-lightを使用しています。

トレーニング ファイル:

 +1 6357:1 8984:1 11814:1 15465:1 16031:1
 +1 6357:1 7629:0.727 7630:42 7631:0.025
 -1 6357:1 11814:1 11960:1 13973:1
 ...

そしてテストファイル:

 0 6357:1 8984:1 11814:1 15465:1
 0 6357:1 7629:1.08 7630:33 7631:0.049 7632:0.03
 0 6357:1 7629:0.069 7630:6 7631:0.016
 ...

実行することでsvm_learn.exe train_file model->svm_classify.exe test_file model outputで予期しない値が得られますoutput:

 -1.0016219
 -1.0016328
 -1.0016218
 -0.99985838
 -0.99985853

列車ファイルのクラスとして正確に +1 または -1 である必要はありませんか? または、-1 と +1 の間のある種の浮動小数点数を使用して、分類または別の数値の解決策として 0 を手動で選択しますが、私にとっては、すべての数値が -1 に近く、一部が -1 に近い場合はかなり予期しない状況です。少ないも。

UPD1:結果の数値が負の場合はそのクラス-1、正の場合は -と言われてい+1ます。記号の後のこの値が何を意味するのか、まだ疑問がありますか? 私は SVM の探索を始めたばかりなので、簡単な、または愚かな質問かもしれません :) そして、かなり悪い予測が得られた場合、どのような手順を踏む必要がありますか - 別のカーネルですか? または、SVM-light を私のデータにより関連性のあるものにするための他のオプションはありますか?

4

1 に答える 1

3

簡単な答え: 結果の符号を取るだけです

より長い答え: SVM は入力を受け取り、実数値の出力を返します(これが表示されているものです)。

トレーニング データでは、学習アルゴリズムは出力をすべての正の例で >= +1、すべての負の例で <= -1 に設定しようとします。そのような点は間違いありません。この -1 と +1 の間のギャップが「マージン」です。-1 と +1 の間の「無人地帯」のポイントと、完全に間違った側のポイント (出力が +1 を超える負のポイントなど) はエラーです (学習アルゴリズムがトレーニング データで最小化しようとしています)。 .

したがって、テスト時に結果が -1 未満の場合、それが負の例であると合理的に確信できます。+1 より大きい場合、それが正の例であると合理的に確信できます。その中間にある場合、SVM はそれについてかなり不確実です。通常、決定を下さなければならない (そして「わからない」とは言えない) ため、人々は肯定的なラベルと否定的なラベルの間のカットオフとして 0 を使用します。

于 2014-05-27T22:52:28.323 に答える