K最近邻(KNN)

1. KNN算法概述

  KNN属于分类算法,没有训练过程,新样本根据距离寻找最靠近样本的K个点,根据这K个点的分类确定新样本类别(选择K个点的多数分类)。

  如下图,历史数据集有两类,红色三角形和蓝色正方形,现在需要判定绿色圆圈属于三角形还是正方形?

 

  由图可见,若K值选择3,与圆圈最近的3个点中,有1个正方形和2个三角形,则我们判定绿色圆圈属于三角形类。若K选择5,则相应判定绿色圆圈属于正方形类。

      算法描述:

  • 计算测试数据与训练数据(带标签)之间的距离;
  • 距离按照递增进行排序;
  • 选择距离最近的K个点;
  • 选择K个点出现最多的类别进行新样本分类。  

   由算法可见,影响分类结果的主要是K值和距离,所以使用KNN分类重点应该在选择最优K值和合适距离度量方法

 

 

2. 如何选择K?

  • K值太小,若K=1,则样本的分类结果只由最近的样本类别确定,所以容易受噪声点的影响。
  • K值太大,若K=样本数n,则每个新样本的分类结果直接由训练集确定,此时无论输入实例是怎样的,分类结果都是训练实例中最多的类。
  • 实际工作中,往往令K=1开始逐步增大,最大不超过训练样本数的平方根,使用交叉验证,评估不同K值下的分类情况,选择最优K值

 

 

3. 距离度量?

  距离度量就是如何衡量样本(特征向量)之间的距离,距离越小,相似度大,属于同一类别概率大。

  常用的距离的度量方法有:欧式距离,曼哈顿距离;余弦相似性,皮尔逊相关系数。

  其中余弦相似性和相关系数用于衡量样本之间相似性,相似性越大,属于同一类别概率大。

 

  存在特征向量X = (x1,x2,x3...xn) Y=(y1,y2,y3..,yn)

  欧式距离:

                         

 

  曼哈顿距离:

                         

 

 

  余弦相似性(注重两个向量在方向上的差异,而不是数值上的差异):

                       

   皮尔逊相关系数(衡量样本特征向量之间的线性相关程度)计算方法为协方差/标准差乘积、

 

  2020-05-27 20:21

 

posted @ 2020-05-27 20:21  傅余生  阅读(789)  评论(0编辑  收藏  举报