k近傍法分類器(k-nearest neighbor classifier)、略してKNNは、 lazy learnerの代表例である。 lazyと呼ばれるのは、その見かけの単純さからでなく、訓練データから識別関数を学習せず、 訓練データを暗記するため。
KNNのアルゴリズムそのものは非常に単純であり、 以下のステップにまとめられる。
- kの値と距離指標を選択する
- 分類したいサンプルからk個の最近傍のデータ点を見つけ出す。
- 多数決によりクラスラベルを割り当てる。
上図では,5つの最近傍のデータ点での多数決に基づき, 新しいデータ点にクラスラベルが割り当てられる様子が示されている.
今回はMNISTに対して,このk近傍法を適用してみる. 通常,距離指標としてユークリッド距離やマンハッタン距離が使われることが多い. しかし今回は距離指標としてコサイン類似度を使ってみる.
(実装は省略)
kの値を1~30としたときのF値をグラフ化してみた.
これによりk=3のときもっともスコアが良く、 kが増えるごとにスコアが悪化している。