机器学习算法之KNN

目录

KNN算法

KNN算法基本要素

KNN算法的优缺点

总结

参考资料:《统计学习方法》 李航

KNN算法

k 近邻法(k-nearest neighbor,kNN)是一种基本的分类与回归方法,也是最简单的机器学习算法之一。k 近邻法的特殊情况是k=1,称为最近邻算法。

该方法的分类思路是:如果一个样本在特征空间中最邻近 k 个样本中的大多数都属于某一个类别,则该样本也属于这个类别。该方法的回归思路是:通过找到一个样本的最邻近k 个样本,将这些样本属性的平均值赋给该样本,作为该样本的属性。

算法分类过程如下:

  1. 事先确定k值,代表对于一个待分类的样本, 我们要寻找几个它的邻近样本。
  2. 根据事先确定的距离度量公式,得出在所有已知类别的样本点中,距离待分类样本最近的 k 个样本。 一般情况下,在连续变量情况下,将欧氏距离作为距离度量;而在文本分类这种非连续变量情况下,重叠度量(或海明距离)可以作为距离度量。
  3. 统计这 k 个样本点中各个类别的数量。我们将待分类样本定为k 个样本中数量最多的类别。

算法回归过程也是类似这样,暂略,区别在于回归是求已知类别的样本属性的平均值。

KNN算法基本要素

k 值的选择、距离度量及分类决策规则是k近邻法的三个基本要素。

1. k值的选择

k 值的选择会对 k 近邻法的结果产生重大影响。如何选择一个最佳的 k 值取决于数据。一般情况下,较大的 k 值能够减小噪声的影响,但会使类别之间的界限变得模糊。在应用中,k 值一般取一个比较小的数值,通常采用交叉验证法来选取最优的 k 值。

  • 如果选择较大的 k 值,就相当于用较大邻域中的训练数据进行预测,其优点是可以减少学习的估计误差,但缺点是近似误差会增大,使预测发生错误。 k 值的增大意味着整体的模型变得简单。 如果k=NN是所有训练数据的个数,那么无论待分类的样本是什么,都可以简单地预测它属于训练数据中最多的类。这时模型过于简单,完全忽略训练数据中大量的有用信息,是不可取的。
  • 如果选择较小的 k 值,就相当于用较小邻域中的训练数据进行预测,学习的近似误差会减小,但缺点是估计误差会增大。预测结果会对邻域中的数据点非常敏感,如果邻近的数据点恰巧是噪声, 预测就会出错。换句话说,k 值的减小意味着整体模型变得复杂,容易发生过拟合。

2. 距离度量

特征空间中样本点的距离反映了它们之间的相似程度。使用的距离度量通常是欧氏距离,也可以是其他距离。

3. 分类决策规则

k 近邻法中的分类决策规则往往是多数表决,即由待分类样本的 k 个邻近分类样本中的多数类决定它的类。

KNN算法的优缺点

优点:1)简单、直观。2)由于 KNN 方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分类样本集来说,KNN 方法较其他方法更为适合。

缺点:1)当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入任意一个新样本时,该样本的 K 个邻居中大容量类的样本都占多数。可以采用权值的方法(和该样本距离小的邻居权值大)来改进。2)计算量较大,因为对每一个待分类的样本都要计算它到全体已知样本的距离,才能求得它的 K 个近邻点。目前常用的解决方法是事先对已知样本点进行筛选,事先去除对分类作用不大的样本。3)噪声和非相关性特征向量的存在会使 k 近邻算法的准确性减小。如何选择特征向量进行分类,一个普遍的做法是利用进化算法优化功能扩展,还有一种是利用训练样本的互信息进行特征的选择。如果运用一些特殊的算法来计算度量的话,K 近邻分类精度可显著提高,如运用大边缘最近邻法或者近邻成分分析法。

总结

  1. k 近邻法是最简单的分类与回归方法之一。k 近邻法三要素:k 值的选择、距离度量和分类决策规则。当训练集、k 值、距离度量及分类决策规则确定后,其结果唯一确定。
  2. 常用的距离度量是欧氏距离或更一般的 Lp 距离。
  3. 选择较小的k 值时,k 近邻模型会更复杂;选择较大的k 值时,k 近邻模型会更简单。k 值的选择反映了对近似误差与估计误差之间的权衡,通常由交叉验证选择最优的 k。
  4. 常用的分类决策规则是多数表决,对应于经验风险最小化。
  5. k 近邻法的实现需要考虑如何快速搜索 k 个近邻点。kd 树是一种便于对 k 维空间中的数据进行快速检索的数据结构。kd 树是二叉树,表示对 k 维空间的一个划分,其每个结点对应于 k 维空间划分中的一个超矩形区域。利用 kd 树可以省去对大部分数据点的搜索,从而减少搜索的计算量。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值