机器学习专题--03KNN算法

771 阅读2分钟

这是我参与8月更文挑战的第7天,活动详情查看:8月更文挑战

算法概述

k-近邻算法就是采用测量不同特征值之间的距离进行分类的方法。它的思路是:如果一个样本在特征空间中的k个最相似(邻近)的样本中大多数属于一个类别,则该样本也属于这个类别。在K-近邻算法当中,所选择的邻近点都已经是正确分类的对象。我们只依据k个(通常不大于20)邻近样本的类别来决定待分样本的类别。

算法流程

k-近邻算法的一般流程是:

  1. 收集数据
  2. 计算待测数据与训练数据之间的距离(一般采用欧式距离)
  3. 将计算的距离排序
  4. 找出距离最小的k个值
  5. 计算找出值中每个类别的频次
  6. 返回最高频次的类别

算法特点

优点:

  • 原理简单,易于理解,没有高深的数学理论;
  • 没有假定条件,适用范围广;
  • 受异常值的影响小。

缺点:

  • 对计算机的运算速度与存储空间要求高,尤其在数据量很大的情况下;
  • 样本不平衡问题。某个标签的数量特别大的时候,会造成偏差;然而现实中,某些数据难以获取,它的量确实比较小的。

k的选择

K值是可以直接影响预测效果。关于如何选择合适的K,没有固定的计算方法,而是依赖经验,比如,可以利用交叉验证法来得到最优的K值。

距离的计算

度量距离值的方法有很多,包括曼哈顿距离、马氏距离、切比雪夫距离等等,一般情况都会采用经典的欧氏距离,它的计算量小,容易解释,也足够准确。

问题改进

(一)、加权距离

找出k个近邻点之后,直接投票决策未必准确。这样就等同于认为各近邻点对待测点有一样的影响力。但是一般来说,待测点应该更“像”离它近的样本点,更“不像”较远的样本点。这就需要对距离值进一步分析了,给近点加大权重,同时减少远点的决策影响力。下面介绍两种度量权重的方法。

  • 反函数
  • 高斯函数

(二)、KD树

参考资料

zhuanlan.zhihu.com/p/268873551

www.heywhale.com/mw/notebook…

blog.csdn.net/u010551621/…