10

分類する必要がある 7 つのクラスがあり、10 個の機能があります。この場合に使用する必要がある k の最適値はありますか、それとも 1 から 10 (約 10) の間の k の値に対して KNN を実行し、アルゴリズム自体の助けを借りて最適な値を決定する必要がありますか?

4

5 に答える 5

16

コメントに投稿した記事に加えて、次のことを示唆する記事もあります。

k の選択は非常に重要です。k の値が小さいと、ノイズが結果に与える影響が大きくなります。値が大きいと、計算コストが高くなり、KNN の背後にある基本的な哲学 (近くにあるポイントは同様の密度またはクラスを持つ可能性がある) を無効にします。k を選択する簡単な方法は、k = n^(1/2) に設定されます。

個々のケースに大きく依存します。場合によっては、k の可能な値をそれぞれ調べて、自分で決定するのが最善の方法です。

于 2012-07-19T21:03:35.580 に答える
11

k-NN アルゴリズムで注意すべき重要なことは、機能の数とクラスの数の両方が、k-NN アルゴリズムで kの値を決定する際に関与しないことです。k-NN アルゴリズムは、距離メトリックに基づいてテスト データを分類するために使用されるアドホック分類子です。つまり、他のクラスと比較してテスト サンプルに近いクラス 1 トレーニング サンプルの数が多い場合、テスト サンプルはクラス 1 として分類されます。トレーニング サンプル。例: k の値 = 5 サンプルの場合、距離メトリックに基づいて最も近い 5 つのトレーニング サンプルが選択され、クラスごとのほとんどのサンプル数に対する投票が行われます。したがって、3 つのサンプルがクラス 1 に属し、2 つのサンプルがクラス 5 に属している場合、そのテスト サンプルはクラス 1 として分類されます。したがって、kの値はテスト サンプルを分類するために必要なトレーニング サンプルの数を示します。

あなたの質問に来て、kの値はノンパラメトリックであり、 kの値を選択する際の一般的な経験則はk = sqrt(N)/2です。ここで、Nはトレーニング データセットのサンプル数を表します。私が提案するもう 1 つのヒントは、k の値を奇数に保つことです。これにより、クラスの選択に関連性がなくなりますが、これは、トレーニング データがクラス間で高度に相関し、k- NN を使用すると、分類のパフォーマンスが低下します。

于 2016-08-16T02:51:47.830 に答える