“近朱者赤,近墨者黑”的分类算法——k最近邻算法

k最近邻算法是一种经典的机器学习分类算法,最早由Cover T和Hart P于1967年提出。对原论文感兴趣的读者可下载此论文Nearest neighbor pattern classification

算法概念

k最近邻,英文名为k-Nearest Neighbor,简称为kNN,是一种极其简单的机器学习分类算法,甚至可能是最简单的分类算法。其中,k表示样本的邻居数。k最近邻算法思想可以形象地归纳为一句话,“少数服从多数”。它没有训练过程,是“懒惰学习”的著名代表。所谓“懒惰学习”,就是在模型的训练阶段只是记录了训练样本,省略了显式的训练过程,待收到测试样本(待分类样本)时直接对其进行分类的学习方法的统称。对“懒惰学习”感兴趣的读者可参考文献Lazy learning

算法思想

上图
上图中有三种点,其中绿色方块与红色三角已知其类别,分别为1与-1,蓝色圆点类别未知。根据“少数服从多数”的分类原则,如果k=3,则蓝色圆点的邻居有1个绿色方块和2个红色三角,因此蓝色圆点类别被确定为-1;如果k=5,则蓝色圆点的邻居有3个绿色方块和2个红色三角,因此蓝色圆点类别被确定为1。

算法过程

从上述的简述中,不难看出,k最近邻分类算法的核心就是k的选择与如何寻找样本的邻居。k的选择视情况而定,一般在3~20之间,在此不再赘述。而寻找样本的邻居实际上就是寻找与样本相似的样本。样本在空间中可被表示为一个点,而样本间的相似性,可以通过计算样本间的“距离”进行表示。距离与相似性成反相关关系。因此,寻找样本的邻居的流程如下:

  1. 选取某一相似性度量函数,如欧几里得距离,曼哈顿距离等;

  2. 根据选定的相似性度量函数计算待分类样本与其他样本之间的距离;

  3. 计算完毕后,按照距离的大小进行排序(升序),选取前k个样本,即为该样本的邻居。

常用相似性度量函数

从上述关于k最近邻算法思想的简述中不难看出,相似性度量函数是至关重要的。以下列举了几种常用相似性度量函数。

  • 欧几里得距离
    d ( x , y ) = ∑ k = 1 n ( x k − y k ) 2 d(x,y)=\sqrt{\sum_{k=1}^{n}(x_k-y_k)^2} d(x,y)=k=1n(xkyk)2
    其中,n是x和y的维度, x k x_k xk y k y_k yk分别是x和y上第k个分量的值。

  • 曼哈顿距离
    d ( x , y ) = ∑ k = 1 n ∣ x k − y k ∣ d(x,y)=\sum_{k=1}^{n}|x_k-y_k| d(x,y)=k=1nxkyk
    其中,n是x和y的维度, x k x_k xk y k y_k yk分别是x和y上第k个分量的值。

  • 闵可夫斯基距离
    d ( x , y ) = ( ∑ k = 1 n ∣ x k − y k ∣ r ) 1 r d(x,y)=(\sqrt{\sum_{k=1}^{n}|x_k-y_k|^r})^\frac{1}{r} d(x,y)=(k=1nxkykr )r1
    其中,n是x和y的维度, x k x_k xk y k y_k yk分别是x和y上第k个分量的值。,r是参数。注意,n与r不同,n是向量的维度,r是空间的维度。此外,细心的读者可能已经发现,当r=1时,闵可夫斯基距离距离即为曼哈顿距离;当r=2时,闵可夫斯基距离距离即为欧几里得距离。

算法优缺点

俗话说得好,人无完人,而算法本身也有各自的优缺点。至于k最近邻算法,则其优缺点如下:

  1. 优点
  • k最近邻思想简单易懂,实现难度低,无需训练。
  1. 缺点
  • 在分类时,k最近邻必须计算待分类样本与全体样本的距离,计算量大,需要消耗很长的时间。
  • 当样本不平衡时,k最近邻的分类结果会偏向于样本数量多的类别。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值