k 近傍法(kNN)とは
分類問題を解くアルゴリズムの1つ。k-Nearest Neighbor
教師データから識別関数を学習しない 怠惰学習(lazy learner) の代表例。
問題設定
入力値(特徴量) \(\boldsymbol{x} = (x_1, \cdots, x_m)\) に対し、分類ラベル \(y\) を出力するモデルを作る。
仕組み
ラベルを判定したい未知のデータの近傍 \(k\) 件の正解データサンプルで多数決を取る。
訓練
データの前処理だけ行えばよく、事前の学習は必要ない。
- 教師データ(入力 \(\boldsymbol{x}^{(1)}, \cdots, \boldsymbol{x}^{(n)}\) とその正解ラベル \(y^{(1)}, \cdots, y^{(n)}\))をモデル内に保持する
- 特徴量ごとにスケールが異なると寄与率に差が出るので、入力は標準化しておく
ラベル判定
未知の入力 \(\boldsymbol{x}\) に対し、全教師データとの間の距離
\[d^{(i)} = \| \boldsymbol{x} - \boldsymbol{x}^{(i)} \|\]を計算する(\(\boldsymbol{x}\) も標準化する)。
距離 \(d^{(i)}\) が小さい方から \(k\) 件の教師データを探し、それらの正解ラベルの多数決でラベルを決定する。
ハイパーパラメータ \(k\) は事前に決めておく。