首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K近邻算法小结

K近邻算法小结

作者头像
用户1631856
发布2018-04-12 11:41:55
7280
发布2018-04-12 11:41:55
举报
文章被收录于专栏:老秦求学老秦求学

什么是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(最差、最基本的解决方案)

局限性

  • 当实例特征过多,或者实例中大部分为稀疏特征时,模型表现并不如意;
  • 当数据集过大时,分类过程变得十分缓慢; 因此实际过程中,只能用来处理一些小数据集,同时数据特征不多的情况,并不常用!
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是K近邻?
  • 算法描述
  • 优点
  • 局限性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档