机器学习-KNN算法

(1) KNN算法解决什么问题?

KNN是一种机器学习算法,可以解决下面问题:

  • 分类问题
  • 回归问题
  • 离群点检测

 

(2) KNN算法流程

  • 计算测试数据与每个训练数据之间的距离;
  • 按照距离的由小到大进行排序;
  • 选取距离最小的K个点;
  • 确定前K个点所在类别的出现频率;(回归问题求K个点的均值)
  • 返回前K个点中出现频率最高的类别作为测试数据的预测分类。

Image result for KNN algorithm

(3) KNN算法实现

网络上有很多种的实现方式。

参考:https://www.cnblogs.com/ybjourney/p/4702562.html

(4) KNN拓展点

  • 如何选K值
  • 距离度量方式
  • 如何快速检索向量

(5) 距离度量

下面是几种常见的距离度量公式:

Image result for KNN algorithm

参考:KNN算法中常用的距离计算公式 https://blog.csdn.net/sanqima/article/details/51276640

(6) 如何快速检索向量?

6.1 KNN优化-KD Tree

Image result for KD tree

参考:kd-tree : k近邻查询和范围查询 https://blog.csdn.net/dylan_frank/article/details/77934272

6.2 KNN优化-Ball Tree

为何引入?

为了改进KDtree的二叉树树形结构,并且沿着笛卡尔坐标进行划分的低效率,ball tree将在一系列嵌套的超球体上分割数据。也就是说:使用超球面而不是超矩形划分区域。虽然在构建数据结构的花费上大过于KDtree,但是在高维甚至很高维的数据上都表现的很高效。

Image result for Ball Tree

参考:https://en.wikipedia.org/wiki/Ball_tree

(7) 如何选择K

依赖数据,可以通过参数调优进行K值选择。一般来说,较大的k会抑制噪声的影响,但会使分类边界变得不那么明显。

参考:https://www.quora.com/How-can-I-choose-the-best-K-in-KNN-K-nearest-neighbour-classification

 

友情推荐:ABC技术研习社

为技术人打造的专属A(AI),B(Big Data),C(Cloud)技术公众号和技术交流社群。


版权声明:本文为gao8658原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。