『k-近傍法 (k-Nearest Neighbors)』は、シンプルで直感的な分類・回帰アルゴリズム。学習せずに予測できる『怠惰学習』の代表例として、G検定で頻出します。
k-NNって、近くにある仲間で判断するんでしょ?
その通り!
k-近傍法(k-NN/k-Nearest Neighbors) は、新しいデータ点に対して『最も近いk個の訓練データ』の多数決でクラスを決める手法よ。
特徴的なのは怠惰学習(Lazy Learning) であること。
事前に学習モデルを構築せず、予測時に訓練データすべてとの距離を計算するの。
毎回計算するんですかぁ?
それだと遅くなりませんかぁ?
その通り。
学習は速い (記録するだけ) けど、予測は遅い (全訓練データとの距離計算)。
データ量が多いと実用的でなくなるの。
重要なハイパーパラメータがkの値。
kが小さいと過学習しやすく ノイズに敏感、kが大きいと境界が滑らかになるけど 細かい構造を見逃す。
kってどうやって決めるの?
一般的には交差検証でkを調整するのよ。
経験則として、クラス数の平方根を初期値にすることもあるわ。
kを奇数にすると同票引き分けを避けられるのも実用的なTipsね。
距離の計算方法も重要。
ユークリッド距離(直線距離)、マンハッタン距離(碁盤の目状)、コサイン類似度(角度ベース) など、データの性質で使い分けるの。
あ、k-meansって名前似てますけど、別物ですよねぇ?
いい質問!
k-NNは教師あり学習 (分類・回帰)、k-meansは教師なし学習 (クラスタリング)。
名前は似ているけど目的も種類も違うわ。
混同しやすいのでG検定の引っ掛け問題でよく出るのよ。
k-NNの弱点は他にも:①次元の呪い(高次元データで距離が無意味化)、②スケール感度(特徴量の単位が違うと支配される ⇒ 正規化必須)、③大規模データで実用性が低い。
シンプルなのに落とし穴も多いんだね…
だからこそG検定で問われるの。
利点は『学習なしで動く』『分類・回帰両方OK』『非線形な境界を表現できる』『実装が簡単』。
レコメンドの基本としても有用よ。
k-NNとk-meansの違い、覚えました!
kの選び方が大事ってことだね!
よっしゃ、分かったよ!
G検定では『怠惰学習』『kの大小と過学習の関係』『k-meansとの違い』『次元の呪い・正規化必須』を押さえてね。
確認クイズ
k-近傍法 (k-NN) の特徴として正しいものはどれか。
- 事前に複雑なモデルを学習し、予測時は高速
- 事前学習を行わず、予測時に訓練データとの距離計算を行う『怠惰学習』
- 教師なし学習でクラスタリングに用いる
- サポートベクトルを利用して分類境界を決定する
こたえを見る
正解: 2. 事前学習を行わず、予測時に訓練データとの距離計算を行う『怠惰学習』
k-NNは怠惰学習 (Lazy Learning)の代表で、事前に学習モデルを構築せず、予測時に全訓練データとの距離を計算します。教師あり学習 (分類・回帰) で、教師なし学習のk-means (クラスタリング) とは別物。サポートベクトルを使うのはSVM。