AIの基礎
KNN(K-Nearest Neighbors)とは何か
KNN(K-Nearest Neighbors)とは何か
KNN(K-Nearest Neighbors)は、回帰と分類の両方のタスクに使用できる機械学習の手法およびアルゴリズムです。KNNは、ターゲットデータポイントの周囲にある一定数のデータポイントのラベルを調べ、データポイントが属するクラスについて予測を行います。KNNは、概念的に単純ながら非常に強力なアルゴリズムであり、そのため、最も人気のある機械学習アルゴリズムの1つです。KNNアルゴリズムの詳細について見てみましょう。KNNの動作を理解することで、KNNの最良および最悪の使用例を理解できるようになります。
KNNの概要

Photo:Antti Ajanki AnAj via Wikimedia Commons、CC BY SA 3.0(https://commons.wikimedia.org/wiki/File:KnnClassification.svg)
2D平面上的データセットを視覚化してみましょう。グラフ上に散在するデータポイントの集団を想像してください。KNNはデータポイントの分布を調べ、モデルに与えられた引数に応じて、データポイントをグループに分割します。これらのグループにはラベルが割り当てられます。KNNモデルが行う主な仮定は、近くにあるデータポイント/インスタンスは非常に似ているが、データポイントが別のグループから遠く離れている場合はそれらのデータポイントと似ていないということです。
KNNモデルは、グラフ上の2点間の距離を使用して類似性を計算します。2点間の距離が大きいほど、類似性は低くなります。距離を計算する方法は複数ありますが、最も一般的な距離尺度は、単純なユークリッド距離(2点間の直線距離)です。
KNNは、教師あり学習アルゴリズムです。つまり、データセット内の例にはラベルが割り当てられ、クラスが既知である必要があります。KNNについての2つの重要な点があります。まず、KNNは非パラメトリックアルゴリズムです。つまり、モデルが使用される際に、データセットについての仮定は行われません。代わりに、モデルは提供されたデータから構築されます。2番目に、KNNを使用する際には、データセットを訓練セットとテストセットに分割する必要はありません。KNNは訓練セットとテストセットの間で一般化を行わないため、すべての訓練データはモデルが予測を行う際にも使用されます。
KNNアルゴリズムの動作
KNNアルゴリズムは、以下の3つの主要な段階を経て実行されます。
- 近傍の数(K)を選択します。
- テスト例とデータセットの例との間の距離を計算します。
- 計算された距離を並べ替えます。
- 上位K個のエントリのラベルを取得します。
- テスト例についての予測を行います。
最初のステップでは、Kはユーザーによって選択され、アルゴリズムに、どのくらいの近傍(どのくらいの近くのデータポイント)を考慮するかを伝えます。2番目のステップでは、モデルはテスト例とデータセットのすべての例との間の距離を計算します。距離はリストに追加され、並べ替えられます。次に、並べ替えられたリストが調べられ、上位K個のエントリのラベルが返されます。つまり、Kが5に設定されている場合、モデルはテストデータポイントに最も近い5つのデータポイントのラベルを調べます。テストデータポイントについての予測を行う際には、タスクが回帰か分類かによって異なります。回帰タスクの場合、上位K個のラベルの平均が使用され、分類タスクの場合、上位K個のラベルの最頻値が使用されます。
KNNを実行するために使用される正確な数学演算は、選択された距離尺度によって異なります。距離尺度の計算方法についてもっと知りたい場合は、ユークリッド距離、マンハッタン距離、ミンコフスキー距離などの最も一般的な距離尺度について読むことができます。
Kの値の重要性
KNNを使用する際の主な制限は、Kの値(考慮する近傍の数)が不適切である可能性があることです。如果、このようなことが起こると、返される予測は大きく外れる可能性があります。KNNアルゴリズムを使用する際には、Kの適切な値を選択することが非常に重要です。Kの値を選択する際には、モデルの予測精度を最大化し、エラーの数を減らすことが目標です。

Photo:Agor153 via Wikimedia Commons、CC BY SA 3.0(https://en.wikipedia.org/wiki/File:Map1NN.png)
Kの値が低いと、KNNの予測は安定しておらず、信頼性が低くなります。なぜそうなのかを理解するために、7つの近傍を持つターゲットデータポイントを考えてみましょう。KNNモデルはK値を2(ターゲットデータポイントに最も近い2つの近傍を考慮して予測を行う)に設定して実行されているとします。如果、近傍のうち5つがBlueクラスに属しているにもかかわらず、最も近い2つの近傍がRedクラスに属している場合、モデルはターゲットデータポイントがRedクラスに属することを予測します。ただし、このようなシナリオでは、Blueクラスがより良い予測となります。
Kの値をできるだけ高くすることはできないでしょうか。そうすることは、精度を低下させることになります。KNNモデルが考慮する半径が増加すると、ターゲットデータポイントよりも他のグループに近いデータポイントを考慮し始めるため、誤分類が発生するようになります。たとえば、もともと選択されたポイントが上記の赤い領域の1つにあった場合、Kが高すぎると、モデルは他の領域に属するポイントを考慮することになります。KNNモデルを使用する際には、さまざまなKの値を試して、どの値がモデルに最良のパフォーマンスをもたらすかを確認します。
KNNの長所と短所
KNNモデルの長所と短所を考えてみましょう。
長所:
KNNは、回帰と分類の両方のタスクに使用できます。
KNNは、高い精度を持ち、使用が簡単です。解釈、理解、実装が容易です。
KNNは、データについての仮定を行わないため、幅広い問題に使用できます。
短所:
KNNは、ほとんどのデータまたはすべてのデータを保存するため、多くのメモリを必要とし、計算コストが高くなります。大きなデータセットの場合、予測に時間がかかる可能性があります。
KNNは、データセットのスケールに対して非常に敏感であり、他のモデルと比較して無関係な特徴によって簡単に混乱することがあります。
KNNのまとめ
KNNは、最もシンプルな機械学習アルゴリズムの1つです。KNNは概念的にシンプルですが、強力なアルゴリズムであり、多くの問題で高い精度を提供します。KNNを使用する際には、さまざまなKの値を試して、精度を最大化する値を見つけることが重要です。












