KNN算法原理

1、KNN介绍

K近邻算法,也叫KNN算法,是机器学习中最基本的算法。其核心思想是给定一些已经分好类的样本,当一个新样本加入时,计算它到每个数据的欧氏距离,然后选择前K个最近的距离,看属于那个类别最多,那这个新样本就属于这个类别。KNN算法主要用来解决分类问题,当然也可以解决回归问题(比较少),当问题是二分类时,K值通常选择1、3、5、7等奇数,这样可以避免平局。

2、K近邻的决策边界以及K的选择

KNN算法的关键点之一就是K的选择,K值的不同对于模型的影响也不同。为了理解K值对于算法的影响,我们首先要了解一个重要的概念,就是决策边界。
决策边界,可以理解为是一种分界线,把不同的类别给分开。例如,我们考试的时候,通过60分就是及格,否则就不及格,那60就是一个决策边界。决策边界分为两大类,分别是线性决策边界和非线性决策边界,这也是决定算法是线性分类器还是非线性条件的关键。
那K值的选择对于决策边界有什么影响呢?
在这里插入图片描述
如上图,分别是K等于1,3,5,7,9,11时模型的可视化结果,从图中可以看出,随着K值的增加,决策边界变得越来越平滑。那么,决策边界是越平滑越好吗?其实不然,决策边界变平滑只能说明模型的稳定性变好,但稳定并不代表这个模型就越准确。那怎样选择合适的K值呢?这时就需要通过交叉验证,通过选择不同的K值来建模,查看模型效果,来选择最好的K。

3、交叉验证

交叉验证其实就是模型调参的过程,第一步,就是要把训练数据进一步分为训练集和验证集,要分出验证集的原因是我们需要一种评估机制来选出最好的K值,这里不能用测试数据的原因是测试数据是用来一次性测试的,不能用来训练模型。
交叉验证最常用的方法是K折交叉验证法,即步骤一:把训练数据平均分成K(这里的K是K折中的K,不是模型的K)份,拿其中一份来验证,其他用训练模型;步骤二:重复步骤一,但是验证集选择不一样的,这样可以进行K次。步骤三:把K次的结果求一个平均值,就得到这个参数值的准确率。步骤四:重复步骤一到三,就可以得到不同参数值的准确率,选择准确率最高那个就是最好的参数值。
如果训练数据比较少,我们可以使用留一法交叉验证,即每次只取一个样本作为验证集,其他都用来训练。
由上可知,通过交叉验证法,可以找出模型最佳的K值。

4、特征缩放

至此,KNN算法的核心部分已经讲完,但是还会有一些潜在的隐患。就是当特征之间的量纲相差很大时,对于模型的影响会很大。例如,特征一的范围是[0,10],特征二的范围是[0,10000],因为KNN算法的关键之一是求欧式距离,这时特征二的影响就很明显,特征一对于模型就几乎没什么影响了,此时我们可以通过特征缩放,把两个特征的值都缩小到0到1之间。
特征缩放有两种方法,分别是线性归一化标准差标准化。其中,线性归一化是把特征值的范围映射到[0,1]区间,标准差标准化的方法使得把特征值映射到均值为0,标准差为1的正态分布。

总结:KNN算法主要用来解决分类问题,比较适合应用在低维空间,因为要计算所有样本的距离,所有在高维空间时表现不好,算法复杂度高。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值