KNN算法简述

一、kNN概念描述

kNN算法又称为k最近邻(k-nearest neighbor classification)分类算法。所谓的k最近邻,就是指最接近的k个邻居(数据),即每个样本都可以由它的K个邻居来表达。

kNN算法的核心思想是,在一个含未知样本的空间,可以根据离这个样本最邻近的k个样本的数据类型来确定样本的数据类型。

 

    该算法涉及3个主要因素:训练集、距离相似的衡量、k的大小


       主要考虑因素:距离相似度的

二、举例说明

右图中,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?

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

                 

该例子节选自:百度百科  

http://baike.baidu.com/view/1485833.htm?fr=aladdin



这里有基于KNN算法的在MATLAB平台上的实例代码:
   http://blog.csdn.net/lx85416281/article/details/40895829#


三、kNN算法的特点

KNN算法不仅可以用于分类,还可以用于过渡,比如在两个色度之间取过渡色。

 

KNN算法当前主要使用加权投票法根据距离的远近,对近邻的投票进行加权,距离越近则权重越大(权重为距离平方的倒数)

 

  优点:易于实现,无需估计参数,无需训练,支持增量学习,能对超多边形的复杂决策空间建模

  缺点:就是计算量较大,分析速度慢;


四、常见问题:

1k值设定为多大?

  k太小,分类结果易受噪声点影响;k太大,近邻中又可能包含太多的其它类别的点。(对距离加权,可以降低k值设定的影响)k值通常是采用交叉检验来确定(以k=1为基准)经验规则:k一般低于训练样本数的平方根


    2、类别如何判定最合适?

  投票法没有考虑近邻的距离的远近,距离更近的近邻也许更应该决定最终的分类,所以加权投票法更恰当一些。


    3、如何选择合适的距离衡量?

  高维度对距离衡量的影响:众所周知当变量数越多,欧式距离的区分能力就越差。变量值域对距离的影响:值域越大的变量常常会在距离计算中占据主导作用,因此应先对变量进行标准化。


   4、训练样本是否要一视同仁?

  在训练集中,有些样本可能是更值得依赖的。
可以给不同的样本施加不同的权重,加强依赖样本的权重,降低不可信赖样本的影响。

   5、性能问题?

  kNN是一种懒惰算法,平时不好好学习,考试(对测试样本分类)时才临阵磨枪(临时去找k个近邻)。懒惰的后果:构造模型很简单,但在对测试样本分类地的系开销大,因为要扫描全部训练样本并计算距离。
已经有一些方法提高计算的效率,例如压缩训练样本量等。

   6、能否大幅减少训练样本量,同时又保持分类精度?

浓缩技术(condensing)

编辑技术(editing)


小结内容节选自

http://blog.csdn.net/jmydream/article/details/8644004



五、多维度应用举例

基本思想:

  根据传统的向量空间模型文本内容被形式化为特征空间中的加权特征向量即 D=D(T1, W1; T2, W2; ; Tn,Wn)

  对于一个测试文本计算它与训练样本集中每个文本的相似度找出 个最相似的文本根据加权距离和判断测试文本所属的类别。

  即把每个数据形式化成多维度的向量数据,然后,把要测试的数据跟训练样本集中的向量进行相似度乘法,算出两者的相似度,以此来决定该向量的分类。

 

具体算法步骤如下:

  (1) 对于一个测试文本根据特征词形成测试文本向量。

  (2) 计算该测试文本与训练集中每个文本的文本相似度计算公式为:

 


式中: di 为测试文本的特征向量,dj 为第 类的中心向量; M为特征向量的维数; Wk 为向量的第 维。K值的确定一般先采用一个初始值然后根据实验测试的结果调整 一般初值定为几百到几千。

  (3) 按照文本相似度在训练文本集中选出与测试文本最相似的 个文本。

  (4) 在测试文本的 个近邻中依次计算每类的权重计算公式如下:

 

式中: x 为测试文本的特征向量; Sim(x,di) 为相似度计算公式; b 为阈值有待于优化选择而 y(di,Cj)的取值为 或 0, 如果 di 属于 Cj, 则函数值为 1, 否则为 0

  (5) 比较类的权重将文本分到权重最大的那个类别中。


六、提高分类效率的改进算法

   KNN 算法的主要缺点是当训练样本数量很大时将导致很高的计算开销。KNN 算法是懒散的分类算法对于分类所需的计算都推迟到分类时才进行在其分类器中存储有大量的样本向量在未知类别样本需要分类时再计算和所有存储样本的距离对于高维文本向量或样本集规模较大的情况其时间和空间复杂度较高。

  

  特征降维&模式聚合(在精度下降有限的前提下,降低维度,减少算法的计算量)

     基于 Fuzzy ART 的 K- 最近邻分类改进算法,该算法用模糊自适应共振理论(Fuzzy ART)对 K- 最近邻的训练样本集进行浓缩以改善 K- 最近邻的计算速度。

{就是对样本的维度进行简化,提取出特征明显的维度进行计算}

    CHI 概率统计方法进行初步特征提取和模式聚合;(如果某一维在各个类别中取值基本相同那么此维对于文本分类的贡献率就相对较低如果在各个类别中取值有较大的差异那么就具有较强的文本分类能力而方差正好是反应变量分布均匀状态的主要指标。)

 

  可引入CLA(Classifiers Local Accuracy)技术进行分类可信度分析以实现两种算法的融合


特征降维&模式聚合 内容节选自:

【作者】 杨丽华 戴齐 郭艳军

Author】 (School of Information Science & Technology,Southwest Jiaotong University, Chengdu, Sichuan, 610031 )Yang,Lihua Dai,Qi (610031 Superconductivity R&D Center,Southwest Jiaotong University,AChengdu,Sichuan)Guo,Yanjun



算法 KNN-RVM算法

输入 训练集STrain,测试集SText,核函数σ

输出 测试误差error,测试时间t,相关向量集SRVS

及相关向量个数nRVS

step1 调入训练集STrain,训练RVM,计算系数

wi和相关向量集SRVS.

step2 令测试集SText=STrain,进行封闭测试,

找到误差样本集Serr.

step3 计算Serr中每一样本点与SRVS中n个相

关向量的距离和΢,得到δCST.

step4 调入测试集SText,计算SText中每一样本

点与SRVS中n个相关向量的距离和΢,与δCST进行比

,得到集合SRVM(΢ δCST)和SKNN(΢≤ δCST).

step5 分别对SRVM和SKNN中的样本利用RVM

和KNN分类算法进行分类.

step6 计算最终误差。

 

KNN-RVM算法节选自:

【作者】 张磊 刘建伟 罗雄麟

Author】 ZHANG Lei,LIU Jian-Wei,LUO Xiong-Lin(Institute of Automation,China University of Petroleum,Beijing 102249)

【机构】 中国石油大学自动化研究所





  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值