Nearest Neighbor Classifier

Nearest Neighbor Classifier
让临近的几个样本数据的类别作为当前目标数据的类别。

学习类型:

  • Lazy learning,没有显示训练过程;
  • Supervised learning

设定

  • Input: $ \boldsymbol x \in R^D $
  • Output: $ \boldsymbol y\in [C] $
  • Learning: $\boldsymbol y=f(x)$
  • Training data: $D^{train}={ (x_1,y_1),(x_2,y_2)\dots (x_N,y_N) } $
  • Test Data: $D^{test}={ (x_1,y_1),(x_2,y_2)\dots (x_m,,y_m) } $
  • $D^{train}\cap D^{test}=\phi$

过程

  • $nn(x)=arg min_{n\in[N]}distant(\boldsymbol x,\boldsymbol x_{n})$
  • $knn(x)=\{ nn_1(x),nn_2(x),\dots,nn_k(x) \}$ 不包含前一个点的最近点
  • $ v_c=\sum_{n\in knn(x)}I(y_n==c), \forall c\in C $ 计算每个分类在k个训练数据中有多少个
  • $y=argmax_{c\in C} v_c$ 标出数量最多的那一类
  • 计算距离可以用欧拉距离等。

调参

K是要调整的参数
用development dataset选出最好的K值
没有development dataset,则用cross validaition的方法(把train set 分成N份,每次取其中一份作为development set,每个k训练出来之后,在那一份上求accuracy,对N次的情况取平均值,比较不同K值的在cross validate上的mean accuracy, 取最大)

☕️听说你想请我喝咖啡?