2013-10-17 10 views
6

私は、KNNのalgoを使用して、私は90%の精度を得ているが、SVMを使用すると70%以上を得ることができます。 SVMはKNNよりも優れていません。私はこれが愚かであるかもしれないが、KNN algoとほぼ同じ結果を与えるSVMのパラメータは何かを知っています。私はmatlabでlibsvmパッケージを使用しています。R2008サポートベクターマシン対K最近隣の

+2

この質問は、機械学習に関するものであり、http://stats.stackexchange.com/ – Shai

+0

にもっと適しているので、話題にはならないと思われます。機械学習はコーディングの一部ではありませんか?これはオープンプラットフォームであり、誰もがコーディングに関連し、人々にブレーンストーミングを要求する限り、自由に質問できます。だから、もしあなたがこのディスカッションを離れて他の人が参加できるようにすることが有用であると分からなければ、 –

+0

私はそれがここに属していないと主張していません、私は単純にhttp://stats.stackexchange.comのような専用のフォーラムでより多くの情報に基づいた視聴者とより良い回答を見つけるだろうと考えています – Shai

答えて

8

kNNとSVMは学習のさまざまなアプローチを表しています。各手法は、基礎をなすデータに対して異なるモデルを意味します。

SVMは、データポイントを分離するハイプレーン(かなり限定的な仮定)が存在すると仮定しますが、kNNはノンパラメトリックな方法(パラセンウィンドウ推定の粗近似)でデータの基礎分布を近似しようとします。

アルゴリズムと構成が最もよく使用されているかどうかを判断するには、シナリオの詳細を確認する必要があります。

+2

"SVMは、データポイントを分離するハイパープレーンが存在することを前提としています(非常に限定的な仮定)"実際には限定されませんが、RBFカーネルを持つSVMは、 – Pedrom

+0

@Pedrom本当にカーネルSVMは非常に強力なツールです。 – Shai

+1

@ValentinHeinitzあなたは実際に10行で正確な説明を得ることを期待していませんか? – Shai

6

実際に使用しているデータセットによって異なります。この画像の最初の行(http://scikit-learn.org/stable/_images/plot_classifier_comparison_1.png)のようなものがあれば、kNNは本当にうまく動作し、Linear SVMは本当にひどく動作します。

SVMのパフォーマンスを向上させたい場合は、カーネルベースのSVMを画像のように使用できます(rbfカーネルを使用します)。

あなたはscikitは、学ぶのpythonのためにあなたがコードでビットを再生することができます使用している場合は、ここでカーネルSVMを使用する方法を確認しhttp://scikit-learn.org/stable/modules/svm.html

5

k最近傍は、基本的には、「あなたは座標xに近いなら、その分類を言いますxの観察結果に類似しています。 SVMでは、近似アナログは、SVMがより多くオーバーフィットするため、 "小さい"帯域幅パラメータを持つ高次元カーネルを使用しています。つまり、SVMは「あなたがxを座標に近づけているならば、その分類はxで観測されたものに似ています」に近づくでしょう。

ガウスカーネルを使い、さまざまなパラメータについて結果を確認することをお勧めします。私自身の経験(もちろん、特定のタイプのデータセットに焦点を当てて、あなたの走行距離が変わるかもしれない)から、チューニングされたSVMはチューニングされたkNNよりも優れています。あなたのための

質問:k最近傍で

1)どのように選択しているのk?

2)SVMでどのようなパラメータを試しましたか?

3)サンプル中またはサンプル外の精度を測定していますか?

関連する問題