AI 101
KNN(K-Nearest Neighbors)とは何か

K-Nearest Neighbors(KNN)とは何か
K-Nearest Neighborsは、回帰と分類の両タスクに使用できるマシンラーニングの手法およびアルゴリズムです。 K-Nearest Neighborsは、ターゲットデータポイントの分類について予測を行うために、選択した数のデータポイントのラベルを調べます。 K-Nearest Neighbors(KNN)は、概念的に単純ながら非常に強力なアルゴリズムであり、その理由で、最も人気のあるマシンラーニングアルゴリズムの1つです。 KNNアルゴリズムを深く掘り下げて、正確にどのように動作するかを見てみましょう。 KNNの動作を理解することは、KNNの最も適切な使用例と最も不適切な使用例を理解するのに役立ちます。
K-Nearest Neighbors(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つの重要な点があります。 1つ目は、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つを考慮して予測を行う)に設定して動作していると仮定します。 7つの近傍のうち5つがブルークラスに属しているにもかかわらず、2つの最も近い近傍が赤クラスに属している場合、モデルはターゲットデータポイントが赤クラスに属することを予測します。 ただし、このようなシナリオでは、ブルーがより良い予測となります。
これが起こる理由はなぜかというと、Kの値が低いと、予測の精度が低くなるからです。 Kの値をできるだけ高く設定することはできないでしょうか。 これは、KNNモデルが考慮する半径が増加すると、ターゲットデータポイントよりも他のグループに近いデータポイントを考慮し始めるため、誤分類が発生するからです。 たとえば、最初に選択されたポイントが上記の赤い領域の1つにあった場合でも、Kが高すぎると、モデルは他の領域のポイントを考慮するために伸び、誤分類が発生します。 KNNモデルを使用する場合、さまざまなKの値を試して、どの値がモデルに最も適切なパフォーマンスをもたらすかを確認します。
KNNの長所と短所
KNNモデルの長所と短所をいくつか見てみましょう。
長所:
KNNは、他の教師あり学習アルゴリズムと異なり、回帰と分類の両タスクに使用できます。
KNNは非常に正確で、使用が簡単です。 解釈、理解、実装が簡単です。
KNNはデータについての仮定を行わないため、幅広い問題に使用できます。
短所:
KNNはほとんどのデータ、またはすべてのデータを保存するため、モデルには大量のメモリが必要であり、計算コストがかかります。 大きなデータセットの場合、予測に時間がかかる可能性もあります。
KNNはデータセットのスケールに対して非常に敏感であり、他のモデルと比較して無関係な特徴によって簡単に混乱する可能性があります。
K-Nearest Neighbors(KNN)のまとめ
K-Nearest Neighborsは、最も単純なマシンラーニングアルゴリズムの1つです。 KNNは概念的に単純ですが、強力なアルゴリズムであり、ほとんどの問題で高い精度を提供します。 KNNを使用する場合、さまざまなKの値を試して、最も高い精度を提供する値を見つけることを確認してください。












