简单理解KNN最近邻算法原理

 1、算法介绍:

      KNN是通过测量不同特征值之间的距离进行分类。它的的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。K通常是不大于20的整数。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

1.1 算法描述:

 其算法的描述为:

1)计算测试数据与各个训练数据之间的距离;

2)按照距离的递增关系进行排序;

3)选取距离最小的K个点;

4)确定前K个点所在类别的出现频率;

5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。

1.2 距离计算

 在KNN中,通过计算对象间距离来作为各个对象之间的非相似性指标,避免了对象之间的匹配问题,在这里距离一般使用欧氏距离或曼哈顿距离:

通常KNN算法中使用的是欧式距离,二维空间两个点的欧式距离计算公式如下:

 多维空间公式为:

 1.3 K值选取

     K值选取非常重要,通过交叉验证(将样本数据按照一定比例,拆分出训练数据和测试数据,),从选取一个较小的K值开始,不断增加K的值,然后计算验证集合的方差,最终找到一个比较合适的K值。

如下图中,选取临界点K=10的时候可以,增大或减小K的值,错误率都会上升。

简单理解KNN最近邻算法原理_第1张图片

 二、举例说明:

如下图,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。

 简单理解KNN最近邻算法原理_第2张图片

 三、算法优缺点:

KNN算法优点

  1. 简单易用
  2. 模型训练时间快
  3. 预测效果好
  4. 对异常值不敏感

KNN算法缺点

  1. 对内存要求较高,因为存储了所有训练数据
  2. 预测阶段可能很慢
  3. 对不相关的功能和数据规模敏感

 四、算法改进:

对k-最近邻算法的一个显而易见的改进是对k个近邻的贡献加权,根据它们相对查询点xq的距离,将较大的权值赋给较近的近邻。

你可能感兴趣的:(近邻算法,算法,机器学习)