分類する必要がある 7 つのクラスがあり、10 個の機能があります。この場合に使用する必要がある k の最適値はありますか、それとも 1 から 10 (約 10) の間の k の値に対して KNN を実行し、アルゴリズム自体の助けを借りて最適な値を決定する必要がありますか?
5 に答える
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 を使用すると、分類のパフォーマンスが低下します。