KNN算法

本文介绍了KNN(K-NearestNeighbor)机器学习算法的基本原理,包括其分类和回归应用,以及简单易用、预测效果好等优点,同时讨论了对内存和预测速度的需求,以及对异常值的不敏感性。文章还深入剖析了K值的选择对算法性能的影响,以及过拟合和欠拟合的问题。
摘要由CSDN通过智能技术生成

1.概述

KNN(K-Nearest Neighbor)算法是机器学习算法中最基础、最简单的算法之一。它既能用于分类,也能用于回归。KNN通过测量不同特征值之间的距离来进行分类。

KNN算法的思想非常简单:对于任意n维输入向量,分别对应于特征空间中的一个点,输出为该特征向量所对应的类别标签或预测值。

KNN算法是一种非常特别的机器学习算法,因为它没有一般意义上的学习过程。它的工作原理是利用训练数据对特征向量空间进行划分,并将划分结果作为最终算法模型。存在一个样本数据集合,也称作训练样本集,并且样本集中的每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。

输入没有标签的数据后,将这个没有标签的数据的每个特征与样本集中的数据对应的特征进行比较,然后提取样本中特征最相近的数据(最近邻)的分类标签。

一般而言,我们只选择样本数据集中前k个最相似的数据,这就是KNN算法中K的由来,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的类别,作为新数据的分类。

简单来讲,KNN就是“近朱者赤,近墨者黑”的一种分类算法。

2.优缺点

KNN算法优点

    简单易用,相比其他算法,KNN算是比较简洁明了的算法。即使没有很高的数学基础也能搞清楚它的原理。
    模型训练时间快,上面说到KNN算法是惰性的,这里也就不再过多讲述。
    预测效果好。
    对异常值不敏感


KNN算法缺点

    对内存要求较高,因为该算法存储了所有训练数据
    预测阶段可能很慢
    对不相关的功能和数据规模敏感

适用场景

    多分类问题
    稀有事件分类问题
    文本分类问题
    模式识别
    聚类分析
    样本数量较少的分类问题

 基本流程描述

  • 计算当前点与所有点之间的距离
  • 距离按照升序排列
  • 选取距离最近的K个点
  • 统计这K个点所在类别出现的频率
  • 这K个点中出现频率最高的类别作为预测的分类

 3.代码实现

假设有下面一些电影,不同的电影有不同的镜头比例,我们用KNN来进行分类。

电影名搞笑镜头拥抱镜头打斗镜头分类
宝贝当家45210喜剧片
功夫熊猫40535喜剧片
举起手来50220喜剧片
碟中谍25260动作片
叶问4365动作片
空中营救 1263动作片
怦然心动  5391爱情片
时空恋旅人 6351爱情片
恋恋笔记本10401爱情片

加勒比海盗1": [15, 3, 60, “?片”],现在用KNN进行预测。

代码实现:

运行结果:

当KNN = KNN[0:3]

KNN = KNN[0:3]

4.总结

最后统计分类出现频数的时候,喜剧片和动作片同样是3次,这就说明k选大了,较远的点也参与的预测。

如果k值比较小,相当于我们在较小的领域内训练样本对实例进行预测。这时,算法的近似误差会比较小,因为只有与输入实例相近的训练样本才会对预测结果起作用。

​ 但是,它也有明显的缺点:算法的估计误差比较大,预测结果会对近邻点十分敏感,也就是说,如果近邻点是噪声点的话,预测就会出错。因此,k值过小容易导致KNN算法的过拟合。

​ 同理,如果k值选择较大的话,距离较远的训练样本也能够对实例预测结果产生影响。这时候,模型相对比较鲁棒,不会因为个别噪声点对最终预测结果产生影响。但是缺点也十分明显:算法的近邻误差会偏大,距离较远的点(与预测实例不相似)也会同样对预测结果产生影响,使得预测结果产生较大偏差,此时模型容易发生欠拟合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值