【机器学习】K近邻算法原理
作者:互联网
一文详解,K近邻算法原理。码字不易,喜欢请点赞,谢谢!!!
一、KNN简介
K近邻(k-NearestNeighbor)算法,简称KNN。KNN是数据挖掘中十分常用的算法,其原理简单。
KNN的思想就是,选取k个最邻近的点,这k个点属于哪类个数最多,则该点就属于哪类。
比如下图,当k=3时,测试点属于六边形类;而当k=5时,测试点属于正方形类。
二、KNN算法步骤
- 计算测试数据到每个训练数据的距离(一般采用欧氏距离)
- 按照距离从小到大排列
- 选取距离最小的k个点
- 统计这k个点在各个类别中的频率
- 选取k个点所在类别频率最高的作为测试数据的预测类别
注:三种常用距离计算方法
- 欧氏距离
- 曼哈顿距离
- 马氏距离
三、KNN参数选择
KNN算法的效果很大程度上取决于k值得选择,前面的例子也可以看出来,当取不同的k值时,效果可能会差很多。
- k值太大:导致分类模糊
- k值太小:受个例影响较大,波动较大
那如何确定k值呢?
- 经验
- 均方误差
- 交叉验证(Cross Validation)(注意:测试数据不可用于调参)
交叉验证
交叉验证在机器学习中非常常见,使用时一般采用5折交叉验证或者10折交叉验证。
首先我们有训练集和测试集,然后将训练集分为训练集和验证集,如下图:
5折交叉验证示意图:
四、KNN注意事项
- k值选择
k值一般选择奇数,类似于投票避免平票的情况。 - 特征缩放
在KNN算法中,需要计算测试点到各个点的距离,如果某个特征的量级比别的特征大,可能会造成距离被这个特征值主导的情况,因此需要对特征缩放。
- Min-max标准化(又称:归一化)
- z-score 标准化(又称:标准差标准化)
五、KNN优缺点
- 优点
- 非常简单的分类算法,容易理解和实现
- 适合处理多分类问题,eg:推荐用户
- 适合在低维空间应用
- 缺点
- 时间复杂度高(需要计算测试数据到每个点的距离)
- 样本平衡度依赖高,样本不平衡时,分类容易出现偏差
- 可解释性差,向量维度越高,距离的区分能力越弱
参考文献
https://zhuanlan.zhihu.com/p/71196329
https://zhuanlan.zhihu.com/p/71540760
欢迎添加个人微信号:liu2536036458。 想进入交流群的,备注:数据分析交流群
我们共同学习,共同进步!!!
标签:KNN,机器,个点,验证,近邻,距离,算法,kkk 来源: https://blog.csdn.net/Asher117/article/details/96115458