KNN(K-Nearest Neighbor)简介

KNN

KNN是一种有监督的学习,是一种常用于分类的算法,是有成熟理论支撑的、较为简单的经典机器学习算法之一。

  • 该方法的基本思路是:如果一个待分类样本在特征空间中的K个最相似(即特征空间中K近邻)的样本中的大多数属于某一个类别则该样本也属于这个类别,即近朱者赤近墨者黑。
  • 对当前待分类样本的分类,需要大量已知分类的样本的支持,因此KNN是一种有监督学习算法。

举个例子:

蓝色方格红色三角已知分类结果的样本,求 绿色圆圈属于哪一类?
在这里插入图片描述当K=3时,我们发现近邻中有两个红色三角,一个蓝色三角,所以,绿色圆圈属于红色三角类型
当K=5时,我们发现近邻中有两个红色三角,三个蓝色三角,所以,绿色圆圈属于蓝色方块类型

由此我们可知,k值的选取会影响我们分类的结果,因此,k值的选取很重要。


数据集

即必须存在一个样本数据集,也称作训练集,样本数据集中每个样本是有标签的,即我们知道样本数据集中每一个样本的分类。
即已标注数据---------黄金数据

样本的向量表示

即不管是当前已知的样本数据集,还是将来可能出现的待分类样本,都必须可以用向量的形式加以表征向量的每一个维度,刻画样本的一个特征,必须是量化的,可比较的。
即每一个样本应该用一个n维向量表示,每一个维度刻画一个特征。

样本间距离的计算方法

欧氏距离、余弦距离、海明距离、曼哈顿距离等等。

K值的选取

K值的选取会影响待分类样本的分类结果,会影响算法的偏差与方差。

  • 偏差:模型输出值与真实值之间的差异。偏差越高,则数据越容易欠拟合(Underfitting),未能充分利用数据中的有效信息。
  • 方差:对数据微小改变的敏感程度。假如有一组同一类的样本,并且这些样本的特征之间只有微小差异,用训练好的模型进行预测并求得方差。理想情况下,我们应该得到的方差为0,因为我们预料我们的模型能很好处理这些微小的变化;但现实中存在很多噪声(即存在不同类别的样本,其特征向量差异很小),即使是特征差异很小的同一类样本也可能达到不同类别的结果。而方差实际上就是衡量对噪声的敏感程度。方差越高,越容易过拟合(Overfiiting),对噪声越敏感。
  • K值较小:就相当于用较小的领域中的训练实例进行预测,“学习”近似误差会减小, K值的减小就意味着整体模型变得复杂,容易发生过拟合,即增大了方差。
  • K值较大:就相当于用较大领域中的训练实例进行预测,其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。这时候,与输入实例较远(不相似的)训练实例也会对预测器作用,使预测发生错误,且K值的增大就意味着整体的模型变得简单。k很大,那么可以减少干扰数据的影响,但是此时就导致了系统性偏差(K值太小会造成过度拟合),比如如果取k为总的训练数据数,那么每次投票肯定都是训练数据中多的类别胜利。显然训练数据的系统性偏差会影响结果。

KNN的优点

  • 简单,易于理解,易于实现,无需参数估计,无需训练
  • 对异常值不敏感(个别噪音数据对结果的影响不是很大)
  • 适合对稀有事件进行分类
  • 适合于多分类问题

KNN的缺点

  • 计算量大,内存开销大。目前常用的解决方法是事先对已知样本点进行剪辑或综合。此外采用特殊数据结构提升性能,如kd-tree:先按照搜索最近邻的方式构建;然后构建长度为K的有界优先队列,保存和不断的更新当前搜索过程中与待分类样本点距离最近的K个样本点的距离。
  • 可解释性差。无法告诉你哪个样本更重要
  • K值的选择。当样本不平衡时会导致错误
  • KNN是一种消极学习方法、懒惰算法

K-means—无监督学习K均值聚类

是一种基于欧式距离的聚类算法。

“类”指的是具有相似性的集合。聚类是指将数据集划分为若干类,使得类内之间的数据最为相似,各类之间的数据相似度差别尽可能大。

k-means算法是一种简单的迭代型聚类算法,采用距离作为相似性指标,从而发现给定数据集中的K个类,且每个类的中心是根据类中所有值的均值得到,每个类用聚类中心来描述。聚类优化目标函数:
在这里插入图片描述

算法的四个步骤:

  1. 选取数据空间中的K个对象作为初始中心,每个对象代表一个聚类中心。
  2. 对于样本中的数据对象,根据它们与这些聚类中心的欧氏距离,按距离最近的准则将它们分到距离它们最近的聚类中心(最相似)所对应的类。
  3. 更新聚类中心:将每个类中的所有对象的均值作为该类别的聚类中心,计算目标函数的值。
  4. 判断聚类中心和目标函数的值是否发生变化,若不变,则输出结果,否则,跳转至②
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值