私は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は一般的にニューラルネットワークよりもうまく機能するはずです。