KNN原理介绍

KNN

  1. 算法介绍
    最简单的初级分类器就是将全部的训练数据所对应的类别记录下来,当测试样本与其中某个训练样本的属性完全匹配时,即可进行分类。但是所有的测试样本不一定都能找到与之完全匹配的训练样本,其次,如果出现一个测试样本同时与多个训练样本匹配,那么将会出现一个训练样本被分到多个类,那么为解决这两个问题,产生了KNN。

  2. 思想
    KNN的核心思想是如果一个样本在特征空间中的K个最相邻样本的大多数属于某一个类别,那么该样本也属于此类别,即只采用临近几个样本的类别来确定待分类样本的所属类别。

  3. 度量方式
    KNN中采用样本间的距离来作为其非相似性度量,避免了样本间的匹配问题,在此采用曼哈顿距离或欧氏距离,其中欧式距离为闵可夫斯基距离在 p = 2 p=2 p=2时的特例,曼哈顿距离为其 p = 1 p=1 p=1时的特例。
    闵可夫斯基距离
    D ( x , y ) = ( ∑ k = 1 K ( ∣ x k − y k ∣ ) p ) 1 / p D_{(x,y)} = ({\sum_{k=1}^K (|x_k-y_k|)^p})^{1/p} D(x,y)=(k=1K(xkyk)p)1/p
    欧氏距离
    D ( x , y ) = ∑ k = 1 K ( x k − y k ) 2 D_{(x,y)} = \sqrt{\sum_{k=1}^K (x_k-y_k)^2} D(x,y)=k=1K(xkyk)2
    曼哈顿距离
    D ( x , y ) = ∑ k = 1 K ∣ x k − y k ∣ D_{(x,y)} = \sum_{k=1}^K|x_k - y_k| D(x,y)=k=1Kxkyk

  4. 算法流程

  • 计算待分类样本与所有训练样本的距离;
  • 将距离按照从小到大顺序进行排序;
  • 选择距离最小的K个训练样本;
  • 确定这K个训练样本所在类别的出现概率;
  • 返回K个样本中出现概率最大的类别作为待分类样本的类别。
  1. 参数K的选取
    KNN算法不仅可以用于分类还可用于回归,只不过分类是将最邻近的K个样本中出现频率最高的样本类别作为预测的类别,而回归是将最邻近的K个样本的属性均值赋值给该样本,作为该样本的属性。但是一般情况下,不同距离对结果的影响不同,因此对不同样本赋予不同的权重,比如权值与距离成反比。
    对于参数K,如果其值较小,相当于采用较小邻域中的样本进行预测,那么训练误差较小,但与此同时,泛化误差(测试误差)会增大,即K值减少,意味着模型会变复杂,容易出现过拟合;如果K只较大,那么泛化误差会减小,相反地,训练误差会增大,即K值增大意味着模型变得简单。
    因此一般会根据样本分布,选择较小的K值,然后根据交叉验证选择合适的K值。
  2. 总结
    优点:
    1)模型简单易于理解,无须参数估计,无须训练;
    2)计算的精度高,且对异常值不敏感;
    3)适合对稀有时间分类;
    4)适合多分类的情况。
    缺点:
    1)计算量大,对每一个待分类样本,都要计算其到每一个训练集样本的距离;
    2)可解释性较差,无法给出类似于决策树那样的分类规则;
    3)当样本不平衡时,会导致结果出现偏差,可采用改进权值的方法改进。
    4)消极学习。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值