一文详解,K近邻算法原理。码字不易,喜欢请点赞,谢谢!!!在这里插入图片描述
一、KNN简介
K近邻(k-NearestNeighbor)算法,简称KNN。KNN是数据挖掘中十分常用的算法,其原理简单。
KNN的思想就是,选取k个最邻近的点,这k个点属于哪类个数最多,则该点就属于哪类。
比如下图,当k=3k=3k=3时,测试点属于六边形类;而当k=5k=5k=5时,测试点属于正方形类。
在这里插入图片描述
二、KNN算法步骤

  1. 计算测试数据到每个训练数据的距离(一般采用欧氏距离)
  2. 按照距离从小到大排列
  3. 选取距离最小的k个点
  4. 统计这k个点在各个类别中的频率
  5. 选取k个点所在类别频率最高的作为测试数据的预测类别

注:三种常用距离计算方法

  1. 欧氏距离在这里插入图片描述
  2. 曼哈顿距离
    在这里插入图片描述
  3. 马氏距离
    在这里插入图片描述

三、KNN参数选择
KNN算法的效果很大程度上取决于kkk值得选择,前面的例子也可以看出来,当取不同的kkk值时,效果可能会差很多。

  • kkk值太大:导致分类模糊
  • kkk值太小:受个例影响较大,波动较大

那如何确定kkk值呢?

  • 经验
  • 均方误差
  • 交叉验证(Cross Validation)(注意:测试数据不可用于调参)

交叉验证
交叉验证在机器学习中非常常见,使用时一般采用5折交叉验证或者10折交叉验证。
首先我们有训练集和测试集,然后将训练集分为训练集和验证集,如下图:
在这里插入图片描述

5折交叉验证示意图

在这里插入图片描述
四、KNN注意事项

  1. k值选择
    k值一般选择奇数,类似于投票避免平票的情况。
  2. 特征缩放
    在KNN算法中,需要计算测试点到各个点的距离,如果某个特征的量级比别的特征大,可能会造成距离被这个特征值主导的情况,因此需要对特征缩放。
    在这里插入图片描述
  • Min-max标准化(又称:归一化)
    在这里插入图片描述
  • z-score 标准化(又称:标准差标准化)
    在这里插入图片描述

五、KNN优缺点

  1. 优点
  • 非常简单的分类算法,容易理解和实现
  • 适合处理多分类问题,eg:推荐用户
  • 适合在低维空间应用
  1. 缺点
  • 时间复杂度高(需要计算测试数据到每个点的距离)
  • 样本平衡度依赖高,样本不平衡时,分类容易出现偏差
  • 可解释性差,向量维度越高,距离的区分能力越弱

参考文献
https://zhuanlan.zhihu.com/p/71196329
https://zhuanlan.zhihu.com/p/71540760

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐