k近傍法(けいきんぼうほう)とは
k近傍法とは、新しいデータの種類を見分けるとき、過去のデータの中から最もよく似たk個を探し出し、その多数決で答えを決める機械学習の手法です。原型は1951年にFixとHodgesが考案し、1967年にCoverとHartが理論を発展させました。ChatGPT登場の70年以上前から使われてきた、機械学習の古典中の古典です。
ご近所さんの多数決で答えを出す
たとえば新しい取引が不正かどうかを見たいとき、過去の事例の中から特徴が最も似ている5件を取り出し、うち4件が不正なら「不正の疑いあり」と判定する。これがk=5のk近傍法です。数値を予測したい場合は、多数決の代わりに近傍の平均を使います。
kをいくつにするかで、判定の性格が変わる点も特徴です。小さなkは外れ値に振り回されやすく、大きなkはノイズに強い反面、グループの境目がぼやけます。ちょうどよい塩梅はデータで試しながら探すのが定石です。
強みと弱みがはっきりしている
強みは、単純さと根拠の示しやすさでしょう。「似た過去事例5件のうち4件がこうだった」という説明は、現場の納得を得やすいものです。応用先としては顔認識・遺伝子データの解析・異常検知などが知られています。
弱みは速さです。判定のたびに過去データとの距離を測り直すため、データが増えるほど判定が重くなります。また特徴の数が多すぎると距離の差が出にくくなる「次元の呪い」と呼ばれる現象もあり、万能ではありません。
「似たものを探す」発想は生成AIにも続く
古い手法と侮れないのは、その発想が現代のAI基盤に受け継がれているからです。生成AIに社内文書を参照させるRAGでは、文書を数値の並び(ベクトル)に変換し、質問に意味が近いものを探して取り出します。似た事例を距離で探すという考え方の系譜は、70年を経て、いまも最前線にあるわけです。
Topic「怠惰な学習器」という、ありがたくない呼び名
k近傍法には、怠惰学習(lazy learning=怠け者の学習)という公式な分類名があります。理由は、学習段階で何もしないから。普通の機械学習が事前にデータから規則を学び込むのに対し、k近傍法は過去データをただ貯めておき、判定を求められた瞬間に初めて計算を始めます。試験勉強を一切せず、本番で過去問ノートをめくり始める学生のような戦略ですが、それで実用になるのだから侮れません。怠惰は専門用語としては、れっきとした褒め言葉でもあるのです。
k近傍法に関するよくある質問
- k近傍法の「k」は何かの略ですか?
- 略語ではありません。参照する近傍の数を表す数学の慣習的な文字で、k=5なら最も似た5件を見て判定するという意味になります。
- ディープラーニング全盛のいまでも、k近傍法を使う場面はありますか?
- あります。仕組みが単純で、似た過去事例という形で判定の根拠を示しやすいため、異常検知などでは実用的な選択肢です。大がかりな学習なしに試せる手軽さも利点です。
- 過去データを増やせば増やすほど賢くなりますか?
- 一概には言えません。k近傍法は判定のたびに過去データとの距離を計算するため、データが増えるほど判定に時間がかかるようになります。精度と速度のバランスを見る必要があります。