Ch.02

K-최근접 이웃 (KNN): 유유상종, 끼리끼리 모이기

類は友を呼ぶ — KNNは「最も近いK個の仲間」を探し、その人たちが何であるかで新しいデータの答えを決めます。特別な学習式はなく、距離を測るだけでよい、直感的な最初の分類アルゴリズムです。

チャプター別 機械学習図

チャプターを選ぶと、下の図がそのチャプターの内容に切り替わります。機械学習の流れを一覧で確認できます。

① 学習データ — 特徴空間の点(ラベル1または2)

点線の円: 距離の順。K=3近傍(紫)のラベル: 1, 2, 2 → 多数決で 2

K近傍法 (KNN): 類は友を呼ぶ

KNNとは — 新しく入ってきたデータ(点)について、すでに正解ラベルが付いたデータのうち最も近いK個を選び、そのK個の多数決で新データのラベルを決める方法です。例:周り5件のうち4件が「スパム」なら、新しいメールもスパムと分類します。
距離で「近い」を決めます — 「近い」とは特徴空間で2点間の距離が短いことです。よく使うのはユークリッド距離: d(x,y)=i(xiyi)2d(\mathbf{x}, \mathbf{y}) = \sqrt{\sum_{i}(x_i - y_i)^2}。特徴が2つなら平面上の2点間の直線距離と同じです。
Kは自分で決める値(ハイパーパラメータ) — K=1なら最も近い1件と同じ判定、Kを大きくすると多くの近傍の投票で安定しますが境界が鈍くなることがあります。同点を避けるため奇数にすることが多いです。
学習段階がありません(Lazy Learning) — KNNはデータを一括で要約した式を作るのではなく、予測のたびに保存したデータとの距離を計算します。そのためモデルを訓練する時間はほとんどかかりませんが、予測時の計算量は多くなることがあります。
解釈がしやすい — 「このメールがスパムなのは、似た5件のうち4件がスパムだったから」のように、なぜその予測になったかを近傍を見せて説明できるため、説明可能AIでもよく使われます。
他のアルゴリズムの基準線(Baseline)として使います — 深層学習や複雑なモデルの前に、まずKNNで精度を測れば「データがどれだけ分類可能か」を把握できます。
分類(Classification) — 近傍K個のクラス(ラベル)の多数決で新サンプルのクラスを決めます。画像分類、スパム検出、疾患リスク区分などに使われます。
回帰(Regression) — 連続値を予測するときは、近いK個の近傍の平均を予測値にします。例:周辺5戸のマンション価格の平均で自宅の相場を推定。
距離の尺度 — 特徴のスケールが違うと距離が一方の特徴に引っ張られます。正規化標準化で各特徴を似た範囲に揃えてから距離を測るのがよいです。
KNNは新データが来たら保存データのうち最も近いK個を選び、分類のときはそのK個のラベルの多数決回帰のときはK個の値の平均を予測値にします。別途学習式を覚えず距離だけ計算すればよいので直感的ですが、特徴のスケールが違うと一方が距離を支配するため、正規化(Scaling)でスケールを揃えてから距離を測ることが重要です。
項目説明
入力新データの特徴ベクトル x\mathbf{x}
保存データ(特徴、ラベル) の組 (xi,yi)(\mathbf{x}_i, y_i)
1x\mathbf{x} と各 xi\mathbf{x}_i との距離 d(x,xi)d(\mathbf{x}, \mathbf{x}_i) を計算
2距離が小さい順にK個を選択
3(分類)K個のラベルの多数決で予測 y^\hat{y} を決定
3(回帰)K個の yiy_i平均を予測 y^\hat{y} として使用