K近邻算法小结

Posted April15

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K近邻算法小结相关的知识,希望对你有一定的参考价值。

什么是K近邻?

K近邻一种非参数学习的算法,可以用在分类问题上,也可以用在回归问题上。

  • 什么是非参数学习?
    一般而言,机器学习算法都有相应的参数要学习,比如线性回归模型中的权重参数和偏置参数,SVM的C和gamma参数,而这些参数的学习又依赖一定的学习策略。相比较而言,k近邻算法可以说是最简单,也是最容易理解的一种机器学习算法了。
  • K近邻算法思想?
    具体而言,在一个待测试样本周围找K个最近的点,然后根据这k个点进行决策,如果是分类问题,决策结果就是K个点中出现最多的类别;如果是回归问题,结果值为K个点目标值的均值;
  • 那么K值怎么选?
    K值的选择会对k近邻算法的结果产生重大的影响。
    具体怎么解释呢?以特殊情况入手来说,如果k值最小,等于1,这就意味着说,每次在对输入实例进行预测时,只考虑与其最近的实例,预测结果与最近的这个实例点密切相关,如果这个点恰巧为噪声点,就会出现误判,同时这样也会导致模型的过拟合,复杂度增加;如果K取值变得很大,等于N(训练实例总数),最后,无论距离度量方式是怎样的,最后的结果都是训练实例中出现最多的类,模型变得异常简单,预测时只要总是输出最多的类就可以了。
    总体而言,如果k值太小,就相当于用较小的邻域中的训练实例进行预测,“学习”的近似误差会减小,缺点是“学习”的估计误差会增大,预测结果会对近邻的实例点非常敏感,如果近邻的实例点恰巧是噪声就会出错。换句话说,k值的减小意味着整体模型变复杂,容易发生过拟合;
    如果k值太大,就相当于用较大的邻域中的训练实例进行预测,优点可以减小学习的估计误差,缺点是学习的近似误差增大,与输入实例较远的训练实例也会对预测起作用,使预测发生错误,k值的增大意味着整体模型变得简单。如果k=N,那么无论输入实例是什么,都将简单的预测它属于在训练实例中最多的类,模型过于简单,完全忽略训练实例中的大量有用信息。
  • “最近”如何确定?
    距离度量方式,一般通过计算欧几里得距离进行比较,当然也有别的选择,如:曼哈顿距离,cos值等等;
  • 最终结果怎么确定?(分类决策规则)
    一般都是采用投票法,在选择的k个近邻点的标签值中,选择出现频率最高的作为输入实例的预测值。
    总体而言,在数据集一定的情况下, K近邻算法的表现如何主要取决于上面提到的三个要素:K值的选择,距离度量的方式和分类决策规则。

算法描述

对未知类别属性的数据集中的每个点依次执行以下操作:

  1. 计算已知类别数据集中的点与当前点之间的距离;
  2. 按照距离递增次序排序;
  3. 选取与当前点距离最近的k个点;
  4. 确定前k个点所在类别的出现频率;
  5. 返回前k个点出现频率最高的类别作为当前点的预测分类。

优点

算法简单 ,模型容易理解,没有学习训练过程,通常情况下不需要做很大调整就有着不错的表现;因此通常用作一个问题的baseline(最差、最基本的解决方案)

局限性

  • 当实例特征过多,或者实例中大部分为稀疏特征时,模型表现并不如意;
  • 当数据集过大时,分类过程变得十分缓慢;
    因此实际过程中,只能用来处理一些小数据集,同时数据特征不多的情况,并不常用!

以上是关于K近邻算法小结的主要内容,如果未能解决你的问题,请参考以下文章

史诗级干货长文K-近邻算法

实验二 K-近邻算法及应用

实验二K-近邻算法及应用

机器学习k近邻算法鸢尾花种类预测

机器学习Sklearn的k近邻算法api初步使用

K近邻法(KNN)原理小结