KNN(K近傍法)は、未知のデータを分類または回帰するための、シンプルで直感的な機械学習アルゴリズムです。予測したいデータの近くにある「K個」の学習データを参照し、多数決や平均値によって予測値を決定します。事前に複雑なモデルの学習を行わない遅延学習(ノンパラメトリック手法)の代表例であり、パターンの類似度に基づいた分析に広く利用されています。
KNNとは
KNN(K-Nearest Neighbors:K近傍法)とは、データ全体の分布から予測したいデータに最も近いK個のサンプルを抽出し、それらの情報を基に分類や回帰を行う、教師あり学習の基本的なアルゴリズムです。
詳しく解説
KNNの最大の特徴は、予測を行うタイミングで初めて計算を行う「遅延学習」にあります。事前データから予測モデルのパラメータを決定するプロセスを持たないため、ノンパラメトリックな手法に分類されます。仕組みは非常にシンプルで、予測対象となる新しいデータと、既存のすべての学習データとの間の距離(通常はユークリッド距離)を計算します。そして、距離が近い順に指定したK個のデータを取り出します。分類問題の場合はそのK個の中で最も多いクラス(多数決)を予測結果とし、回帰問題の場合はK個のデータの平均値を予測結果とします。このKの数はモデルの挙動を左右する重要なハイパーパラメータであり、適切な値の調整が必要です。
具体例・使われ方
KNNは、不動産の価格予測や、顧客の行動データに基づく類似ユーザーの分類などに用いられます。例えば、ある地域で新しく売り出される物件の価格(回帰)を予測したいとき、その物件から位置や条件が近いK個(例えば5個)の近隣物件の平均価格を基に算出するようなケースです。また、手書き文字認識やおすすめ商品の推薦システムなど、パターン認識の分野でも直観的な初期モデルとして活用されています。
似た用語との違い
混同されやすい概念として「K-means」があります。KNNは正解ラベルを用いて分類や回帰を行う教師あり学習であるのに対し、K-meansはラベルのないデータ群をいくつかのグループ(クラスタ)に自動分割する「教師なし学習」のアルゴリズムです。名前は似ていますが、解くべき課題も仕組みも根本的に異なります。また、ロジスティック回帰などのモデルベースの手法は、事前に学習を行って数式(境界線)を定義しますが、KNNは境界線を数式化せず、常に周囲のデータとの距離からその場で予測を行う点に違いがあります。
注意点
KNNは直感的で実装が容易である一方、予測のたびにすべての学習データとの距離を計算するため、データ量が増えるほど計算コストやメモリ消費量が肥大化するという欠点があります(次元の呪いと呼ばれる影響も受けやすいです)。また、データのスケール(単位)に影響されやすいため、事前にデータの標準化や正規化を行う必要があります。さらに、ノイズ(外れ値)に弱く、最適なKの値を慎重に選択しなければ過学習や過度な平滑化が起こる点にも注意が必要です。