「近くにいる仲間の多数決」で分類する――最もシンプルで直感的な分類アルゴリズム
k近傍法(KNN: k-Nearest Neighbors)は、新しいデータを「最も近いk個のデータ」の多数決で分類するアルゴリズムです。 たとえば引っ越し先の地域を知りたいとき、近所の5軒がすべてファミリー世帯なら「ここはファミリー向けの地域だろう」と判断する。これがKNNの発想です。
上のグラフで、青い点がクラス0、赤い点がクラス1のデータです。 グラフをクリックすると黄色のクエリ点が配置され、そこから最も近いk個の点(緑の破線リング)が選ばれます。 そのk個の中でどちらのクラスが多いかで、クエリ点のクラスが決まります。
背景の色の濃淡は、その位置でKNNが予測するクラスと信頼度を示しています。これが決定境界です。 kの値や距離指標を変えると、この決定境界がどう変化するか観察してみてください。
kの選び方はKNNで最も重要な判断です。k=1は最も近い1点だけで判断するため、データのノイズに振り回されやすい(過学習)。 一方、kが大きすぎると遠くの無関係な点まで参照してしまい、境界がぼやけて分類の精度が下がります。
実用上は交差検証(Cross-Validation)で複数のkを試し、精度が最も高いkを選びます。 上のツールでkを変えながら正解率(LOO)の変化を確認してみてください。
| 手法 | 訓練速度 | 予測速度 | 境界の形 | 解釈しやすさ |
|---|---|---|---|---|
| KNN | 不要 | 遅い | 非線形 | 高い |
| ロジスティック回帰 | 速い | 速い | 線形 | 高い |
| SVM | 普通 | 速い | 線形/非線形 | 中程度 |
| 決定木 | 速い | 速い | 軸平行 | 非常に高い |
| ランダムフォレスト | 普通 | 普通 | 非線形 | 低い |
次元の呪いとは、特徴量の次元が増えるにつれて、距離ベースのアルゴリズムの性能が急激に劣化する現象です。 KNNは「近い点」を探すアルゴリズムなので、この問題の影響を最も受けやすい手法の一つです。