【深度学习基础-04】最邻近规则分类(K Nearest Neighbor)KNN算法

1 基本概念

  • Cover和Hart在1968年提出了最初的临近算法

  • 分类算法classfication

  • 输入基于实例的学习instance-based learning ,懒惰学习lazy learning

2 例子: 

     对最后一个未知电影类型进行归类

                       

    对上图实例进行转化为特征向量

                        

          类比现实生活中的场景(分豆子)

         

3 算法描述

3.1 步骤

  1. 为了判断未知实例的类别,以所有已知类别的实例作为参照
  2. 选择参数K
  3. 计算未知实例与已知实例的举例
  4. 选择最近K个已知实例
  5. 根据少数服从多少原则,让未知实例归类为K个最邻近样本中最多类别

3.2 细节

关于K距离的衡量方法:

Euclidean Distance定义(可以扩展为N维)

                                     

其他距离衡量:余弦值cos、正弦值sin、曼哈顿距离

3.3 举例

以下图为例,第一个小圈是K=4,第二个圈是K=9,你会发现结果其实不一样

                               

4 算法优缺点

4.1 算法优点

简单

易于理解

容易实现

通过对K的选择可具备丢噪声数据的健壮性

 4.2 算法的缺点

                                 

需要大量的空间来存储所有实例

算法复杂度高,需要比较与所有已知实例与要分类的实例

当样本分布不平衡时,比如某一类样本过大占主导时,新的未知实例将容易被归类为这个主导样本,比如Y明显是红色,单采用KNN后会被分为蓝色。

5 改进版本 

考虑距离远近,加上权重,比如近的情况下权重更大,距离的倒数


下面是代码实际解读(待更新详细解释) 

猜你喜欢

转载自blog.csdn.net/qq_15698613/article/details/86031628