まずはクイズから。『新しいデータの近所にいる3人が犬・犬・猫だった。判定は?』この直感そのものが『k近傍法(k-NN)』。今日はジャスミンちゃんが妹ネタを絡めて説明する、珍しい回です。
ではクイズ。
新しい未知データの近くにある5個のデータのうち、犬が3、猫が2だった。
このデータは何に分類される?
5個中3個が犬なら、犬っしょ!
多数決でしょ、これ。
ふふ、大正解。
その発想を形式化したのがk近傍法(k-NN)よ。
新しいデータの周りk個を見て、多数派のクラスを答えにする。
えへへ、ご近所さんに聞く感じですね〜。
うちの妹、転校したときもそうだったよ。
新しい教室で近くの席の3人が漫画好きだったから、妹も速攻で漫画仲間に入ってさ。
k-NNっぽいじゃん!
ジャスミンちゃんの妹さん、人生でk-NNを実践してるんですね。
面白い例えです。
機械学習の直感ってこういう素朴な発想から来るものが多いんですよ。
じゃあ、k=1にしたらどうなると思う?
…たった1人の意見で決まる感じ?
その通り、最も近い1点のラベルをそのまま答えにします。
ノイズに極端に弱くなり、境界がギザギザになります。
逆にkが大きすぎると、遠くの無関係なデータも混ざって境界がぼやけるわ。
最適なkは問題によって変わるから、検証データで試行錯誤して決めるの。
妹の話で言うと、k=1だと1人の友達の影響を受けすぎてブレるし、k=全員だとクラス全体の平均に流されて自分らしさが消える、みたいな話か。
妹ネタで見事に説明できてますね。
あとさ、距離の測り方も大事らしいじゃん?
はい。
ユークリッド距離が標準ですが、マンハッタン距離やコサイン類似度も使われます。
また、特徴量の単位を揃える正規化・標準化が必須です。
身長(cm)と年齢(歳)をそのまま距離計算すると、身長の影響が過大になるので。
k-NNは『学習フェーズがない』のも特徴ね。
データを保存しておくだけで、予測時に毎回距離を計算する。
これを怠惰学習(lazy learning)と呼ぶわ。
怠惰って言うけどさ、データ増えたら予測が重くなるんじゃない?
鋭いです。
大規模データでは予測時の計算コストが問題になるため、近似近傍探索(ANN)などの工夫が必要です。
実はベクトルデータベースによる類似検索の基礎もk-NNなんです。
生成AIのRAGなどでも活躍していますね。
シンプルなのに、最先端でも使われてるんですね〜!
妹の話から最先端まで、k-NNって守備範囲広すぎでしょ!
お得アルゴリズムだね!
分類だけでなく回帰にも応用できて、近傍k点の平均値で数値予測する『k-NN回帰』もあります。
家の価格予測などで使われます。
分類も回帰も対応してるなんて、万能選手ですね〜!
では仕上げクイズ。
k=5で近傍の内訳が『クラスA=3, クラスB=2』。
判定は?
多数決でクラスAじゃん!
正解。
試験では『多数決で分類』『kの選び方』『怠惰学習』を押さえて。
確認クイズ
k-NN(k=5)で、新しいデータの近傍5つのうち3つがクラスA、2つがクラスBだった場合、どう分類されるか?
- クラスB
- 分類不能
- クラスA
- クラスAとBの中間
こたえを見る
正解: 3. クラスA
k-NNは近傍k個の多数決でクラスを決めるため、A=3, B=2ならクラスAと判定されます。kの値が結果を大きく左右するため、検証データで最適なkを探るのが実務のポイントです。