AI学习者 · 2021年09月29日

【机器学习算法】3、K-近邻算法

简介

K-近邻算法是一种基本的分类回归方法,它的输入为实例的特征向量,通过计算新数据与训练数据特征值之间的距离,然后选取 K(K>=1)个距离最近的邻居进行分类判断或回归。

对于回归问题: 输出为实例的值, 回归时, 对于新的实例, 去 K 个最近邻的训练实例的平均值为预测值;

对于分类问题: 输出为实例的类别, 分类时, 对于新的实例, 根据其 K 个最近邻的训练实例的类别, 通过多数表决的方式进行预测类别。

KNN算法的流程

FireShot Capture 045 - 【机器学习算法】3、K-近邻算法 - mp.weixin.qq.com.png

KNN算法的具体步骤

由于 KNN 方法主要靠周围有限的邻近样本,而不是靠判别类域的方法来确定所属类别,因此对于类域的交叉或重叠较多的待分类样本来说,KNN 更加合适。其算法步骤如下:

第一步:
准备数据, 对数据进行预处理;

第二步:
选用合适的测试元组和合适的数据存储结构训练数据;

第三步:
维护一个大小为 K、按距离由大到小的优先级队列,用于存储最近邻训练元组,随机从训练元组中选取K个元组作为初始的最近邻元组,分别计算测试元组到这 K 个元组的距离,然后将训练元组标号和距离存入优先级队列;

第四步:
遍历训练元组集,计算当前训练元组与测试元组的欧氏距离,计算距离所用的公式为:

image.png
之后将所得距离L与优先级队列中的最大距离 Lmax 进行比较。若L≥Lmax则舍弃该元组,遍历下一个元组。若L<Lmax,删除优先级元组中最大距离的元组,将当前训练元组存入优先级队列。

第五步:
遍历完毕后, 计算优先级队列中 K 个元组的多数类, 并将其作为测试元组的类别;

第六步:
测试元组集测试完毕后计算误差率,继续设定不同的 K 值重新进行训练,最后选取误差率最低对应的 K值。

K 值得选择

若 K 值较小,则相当于用较小的邻域中的训练实例进行预测,“学习” 的近似误差减小;
优点:只有与输入实例较近的训练实例才会对预测起作用;
缺点:“ 学习” 的估计误差会增大,预测结果会对近邻的实例点非常敏感;若近邻的训练实例点刚好是噪声,则预测有很大的可能会出错, 即 K 值减小意味着模型整体变得复杂, 容易发生过拟合。

若 K 值较大,则相当于用较大邻域中的训练实例进行预测;
优点:减少学习的估计误差;
缺点:学习的近似误差会增大,这时输入实例较远的实例点也会对预测起作用,使预测发生错误,即K值越大,意味着模型整体变得简单,当 K=n 时,无论输入实例是什么,都将它预测为训练实例中最多的类,此时模型过于简单,忽略了实例中大量的有用信息。

距离度量

由式可以看到,当p取不同值的时候,p范数就变成了不同的范数:
p=1,L1 范数;也就是曼哈顿距离,图中的红色的线;
p=2,L2 范数;也就是欧氏距离,图中的蓝色的线;
p 趋向无穷,就是 L_infinity 范数,图中的绿色的线。

image.png
image.png

下图为 p 为不同值时所对应的空间区域:

image.png

KNN 算法的改进与优化

KNN 算法由于提出时间较早, 随着其他技术的不断更新和完善, KNN 算法的诸多不足之处也逐渐显露出来,
因此许多针对 KNN 算法的改进算法也应运而生。

(1) 引入邻居权重
为了优化 KNN 分类器的效果,可以在其中引入权重机制作为对样本距离机制的补充;基本思想就是:为与测试样本距离更小的邻居设置更大的权重,衡量权重累积以及训练样本集中各种分类的样本数目,来对算法中的K值进行调整,进而达到更合理或平滑的分类效果。

(2) 特征降维与模式融合
KNN 算法的主要缺点是,当训练样本的数量非常大时, 即数据特征的维度很高时将导致很高的计算开销,为了对 KNN 的分类效率进行优化,可以在数据预处理阶段利用一些降维算法或者特征融合的方法对 KNN 的训练样本集进行简化,排除对样本结果影响较小的属性;通过优化样本集的分类,提高得出待分类样本类别的效率。该改进适用于样本集很多大的时候,数据集不大时没必要用此方法。

KNN 的优缺点

image.png

KNN用于分类

FireShot Capture 046 - 【机器学习算法】3、K-近邻算法 - mp.weixin.qq.com.png

KNN用于回归

FireShot Capture 047 - 【机器学习算法】3、K-近邻算法 - mp.weixin.qq.com.png

原文:集智书童
作者:ChaucerG

推荐阅读

推荐阅读
关注数
18801
内容数
1347
嵌入式端AI,包括AI算法在推理框架Tengine,MNN,NCNN,PaddlePaddle及相关芯片上的实现。欢迎加入微信交流群,微信号:aijishu20(备注:嵌入式)
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息