机器学习分类篇-最邻近规则分类KNN

最邻近规则分类算法(K-Nearest Neighbor),Cover和Hart在1968年提出了最初的邻近算法,也被称为基于实例的学习或懒惰学习,与决策树算法相比,处理训练集的时候并不建立任何模型,进行分类时才将测试样例和所有已知实例进行比较进而分类。

这里写图片描述

如上图,主要有两种色块,蓝色方块和红色三角,对绿色未知圆点进行判断分类,其属于红色还是蓝色?
KNN算法一般可以分为两步,为了判断未知实例的类别,会以所有已知实例作为参照,计算未知实例与所有已知实例的距离。所以第一步先分别计算出圆点和所有色块的距离。

第二步,选择一个参数K,判断离未知实例最近的K个实例是什么类型,以少数服从多数的原则进行归类。
上图中,假如我们选择K的值是1,则离未知实例最近的一个色块是蓝色,未知实例被归类为蓝色。假如我们选择K的值为4,则很明显,离未知实例最近的4个色块3个是红色,1个是蓝色,未知实例被归类为红色。

所以K的选择对结果的影响很大,一般为了得出结果K选择奇数,通过增大K也可以增强对噪音数据的健壮性。

对于距离的衡量方式有很多种,最常用的是Euclidean distance:
这里写图片描述
二维的下距离计算公式如上图简单的数学公式,扩展到n维下x,y两点的距离公式:
这里写图片描述

KNN算法优点是简单易于理解和实现,缺点是需要大量的空间存储所有实例,因为未知实例要和所有实例进行计算算法复杂度高,而且当一类样本过大,则不管未知实例属于哪一类都很容易归为数量过大的这一类。
如图:
这里写图片描述
Y点肉眼去看因为在红色区域内很容易判断出多半属于红色一类,但因为蓝色过多,若K值选取稍大则很容易将其归为蓝色一类。为了改进这一点,可以为每个点的距离增加一个权重,这样里的近的点可以得到更大的权重,比如距离d,权重1/d。

再计算一个例子:
这里写图片描述

根据电影的打斗次数和接吻次数,将电影分类为Romance和Action,已经有6个已知样例,怎么样根据未知样例的打斗次数和接吻次数判断其电影类型?

将打斗次数和接吻次数作为二维坐标,判断每个已知样例电影与未知电影的距离,可以得出最近的3个电影都是Romance电影,则未知电影判断为Romance电影,这就是KNN算法。

下一篇是Python对KNN算法的实践。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值