K-近邻(KNN)模型详解


     作者:青十五

     来源:青十五

K-近邻(K- Nearest Neighbor,KNN)模型是一个非常简单与直观的模型,其基本思想可以用这样一句俗语来解释——“近朱者赤,近墨者黑”。因此在介绍这一模型之前,我们需要先定义“距离”来描述“远”与“近”:

距离定义

对于n维实数向量空间   上的两个点   和   ,我们可以定义两点之间一个较为泛化的   距离——闵可夫斯基距离(Minkowski distance)为: 

其中p≥1时满足数学上对距离的定义。当p=2时,即为我们最常见的欧式距离(Euclidean distance): 

当p=1时,可以称之为曼哈顿距离(Manhattan distance): 

当p=∞时,可以称之为切比雪夫距离(Chebyshev distance): 

下图展示了在二维平面上,与原点的   距离为1的所有点的集合:

曼哈顿距离(左)、欧式距离(中)与切比雪夫距离(右)

上述距离描述的是对实空间两点的度量,而对于文本与文本之间,我们一般使用汉明距离编辑距离进行度量:

汉明距离(Hamming distance)是指对两个等长的字符串而言,将其中一个字符串逐字替换为另一字符串的最小替换次数,即字符串中所有对应位置下不同字符的数量。编辑距离(Edit distance)则常常会在搜索提示的应用场景中作为基准策略接触到,是指对任意两个字符串之间,将其中一个字符串转换为另一个字符串所需要的最少编辑次数,编辑的操作包括把一个字符替换为另一字符、任意位置插入一个字符以及任意位置删除一个字符。

二者有一些类似例如都计算字符替换的次数,但也有差异,因此即使是等长的字符串两个距离度量也不一定等价。如下面这个例子,字符串“scale”与“salty”的汉明距离为4,编辑距离则为3:

scale”与“salty”的汉明距离(左)与编辑距离(右)

K-近邻模型

距离的定义帮助我们明确了空间两点之间或两段文本之间远近的概念,由此引出K-近邻模型的具体方法:在提前定义好距离与K值的前提下,对于任意一个新的样本,将其分类为与该样本距离最近的K个样本中类别最多的那个类别

以二维点阵下的二分类问题为例,问题以及求解过程的形式化定义如下:已知样本   ,其中   为二维平面上的点,   表示样本所属的类别。对于一个新的样本x,可以用下式求解该样本的分类y: 

其中   表示距离样本x最近的K个样本的集合,f为关于   的指示函数: 

这一过程可以用下面的示意图表示:

K=3时问号处样本分类为■

根据上述定义,对于二维点阵下的二分类问题而言,当距离度量选择欧式距离并且K=1时(称为最近邻模型),用于区分两个类别的分类面如下图所示:

最近邻模型的分类面——不同样本间中垂线的连接

◆ ◆ ◆  ◆ ◆

长按二维码关注我们


数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。

管理员二维码:

猜你喜欢

 笑死人不偿命的知乎沙雕问题排行榜

 用Python扒出B站那些“惊为天人”的阿婆主!

 全球股市跳水大战,谁最坑爹!

 上万条数据撕开微博热搜的真相!

 你相信逛B站也能学编程

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值