k近傍法でMNISTを解く

k近傍法分類器(k-nearest neighbor classifier)、略してKNNは、 lazy learnerの代表例である。 lazyと呼ばれるのは、その見かけの単純さからでなく、訓練データから識別関数を学習せず、 訓練データを暗記するため。

KNNのアルゴリズムそのものは非常に単純であり、 以下のステップにまとめられる。

  1. kの値と距離指標を選択する
  2. 分類したいサンプルからk個の最近傍のデータ点を見つけ出す。
  3. 多数決によりクラスラベルを割り当てる。

f:id:yusuke_ujitoko:20170426004134p:plain:w400

上図では,5つの最近傍のデータ点での多数決に基づき, 新しいデータ点にクラスラベルが割り当てられる様子が示されている.

今回はMNISTに対して,このk近傍法を適用してみる. 通常,距離指標としてユークリッド距離やマンハッタン距離が使われることが多い. しかし今回は距離指標としてコサイン類似度を使ってみる.

(実装は省略)

kの値を1~30としたときのF値をグラフ化してみた.

f:id:yusuke_ujitoko:20170426005527p:plain

これによりk=3のときもっともスコアが良く、 kが増えるごとにスコアが悪化している。