1

私はSVMで遊んでいて、何か面白いものに出くわしました。

それは私が間違っているかもしれないことかもしれません、それ故にコメントと説明のための投稿。

私は約3000x30のデータセットを持っています。

各値は-100から100の範囲です。さらに、それらは整数ではありません。それらは浮動小数点数です。それらは均等に分散されていません。

数字は-99.659、-99.758、-98.234で、-1.234、-1.345などになるまではありません。

そのため、範囲が広い場合でも、データはいくつかのポイントでクラスター化され、通常は小数値で異なります。
(私は、私の読みと理解から、これはSVM分類の精度に理想的に影響を与えるべきではないと考えました。間違っている場合は訂正してください。これについて、「はい」または「いいえ」でコメントしてください。

分類のラベルは0と1です。

そこで、30 x 30のテストデータを取得して、SVMをテストしようとしました。

kernel_functionがmlpの場合、約50%の精度が得られます。

他の方法では、結果として0とNaNを取得するだけですが、出力に1がなく、出力ラベルのNaNがわからなかったため、奇妙な結果になりました。

つまり、mlpは基本的に私に最高の結果をもたらし、それも50%に過ぎません。

次に、このメソッドを「QP」として使用し、「mlp」をkernel_functionとして使用しました。コードは、現在8時間ほど実行されています。私は思いませんが、3400x30の小さなものはそれだけの時間がかかるはずです。

だから問題は本当に、SVMは私が持っているデータに対して間違った選択ですか?(上記のように)。それとも、精度が大幅に低下する原因となっている、私が見逃しているものがありますか?

また、ニューラルネットワークを使用して同じものをテストし、非常に高い精度を得ることができたため、入力データが台無しになっていないこともわかっています。

SVMを機能させる方法はありますか?なぜなら、私がインターネットで読んだことから、このラベル決定の問題では、SVMは一般的にニューラルネットワークよりもうまく機能するはずです。

4

2 に答える 2

1

データクラスターのサイズが小さいことが原因で数値安定性の問題が発生しているようです (理由はわかりませんが、実際にはそうすべきではありません)。SVM は、記述している分布についてアルゴリズムとして気にする必要はありません。実際、非常に明確に分離されたものが提示された場合、通常の状況ではかなりうまく機能するはずです。

調査すべきことの 1 つは、列のいずれかが非常に強く相関しているかどうかです。パフォーマンス上の理由から、非常に強い相関を持つ列グループは単一の列に置き換える必要があります。列のほぼ完全な相関に直面すると、実装が数値的に不安定になるのを見てきました。

于 2012-07-31T17:18:49.473 に答える
0

独立した機能は優れていますが、アルゴリズムには必要ありません。結局のところ、どの機能がデータにをもたらすのかわからないということです。データをスケーリングしていますか?また、トレーニングセットを作成するには、30個のデータポイントはおそらく少し小さいでしょう。あなたのコードを見ることができますか?

于 2012-08-01T19:22:18.033 に答える