K Nearest Neighbor算法

2020-02-29  本文已影响0人  老姚记事本

顾名思义通过最近的邻居们判断目标的属性。

算法思想

选取目标距离最近的k个节点,通过统计他们类型,选取最多数量的类型作为目标判断。
TODO kNN支持

实现细节

  1. 保存k、点的集合、分类的集合;
  2. 输入目标点,遍历上面的集合计算距离,得到距离集合;
  3. 对距离集合排序,获取nearest k个的索引;
  4. 依据索引,统计neighbor的分类;
  5. 根据统计结果,得到目标点的分类。

可以使用kd树进行优化(类似二分的思想,减少运算量)

实际运用

scikit-learn库,Nearest Neighbors

优缺点

思考

  1. 距离计算,一般欧式距离,为什么不是曼哈顿?
    欧式距离相同,曼哈顿距离不一定相同,违反现实中“距离”概念
    image.png
  2. k选取策略
    过小噪音更高,过大模型太简单不适用。一般将标记好的数据,一部分做训练资料,一部分做参数计算,最后统计正确率。
  3. 算法复杂度
    O(nd),n训练点数,d维度
  4. 特征归一化
    降低维度特征的偏向

参考资料

一文搞懂k近邻(k-NN)算法(一)
一文搞懂k近邻(k-NN)算法(二)
kd 树算法之详细篇

上一篇下一篇

猜你喜欢

热点阅读