k近傍法(k-NN)

k-Nearest Neighbors

k近傍法(k-NN: k-Nearest Neighbors)とは、新しいデータポイントに最も近いk個の訓練データの多数決(分類)または平均値(回帰)で予測を行うアルゴリズムです。学習フェーズがなく、予測時にすべての計算を行う「怠惰学習(Lazy Learning)」の代表例です。

アルゴリズムの仕組み

予測時に、入力データと全訓練データとの距離を計算し、最も近いk個のデータポイントを選びます。分類ではk個の中で最も多いクラスを予測値とし、回帰ではk個の値の平均を予測値とします。

表:k近傍法(k-NN)の要点まとめ
ひとことで言うと近くにあるk個のデータの多数決で、答えを決めるシンプルな手法。
何がうれしいか学習らしい学習が不要で仕組みが直感的。まず試す基準(ベースライン)に向く。
注意点予測のたびに全データと距離を測るので、データが多いと遅い。

距離指標の選択

ユークリッド距離が最も一般的ですが、マンハッタン距離、ミンコフスキー距離、コサイン類似度など、データの特性に応じた距離指標を選択できます。

図:k近傍法の予測
1新しいデータ判定したい1件
▶
2全件と距離を測るどれが近いか計算
▶
3近い順にk個k=5なら上位5件
▶
4多数決一番多いクラスを採用

kの値と前処理

kが小さいとノイズに敏感(過学習気味)、kが大きいと決定境界が滑らか(未学習気味)になります。また、特徴量のスケールに影響を受けやすいため、事前の正規化や標準化が重要です。