KNN算法介绍

  1. 算法原理
    KNN即K-Nearest Neighbor,采用测量不同特征值之间的距离方法进行分类,其主要思想是,如果一个样本在特征空间中的k个最近邻的样本中的大多数都属于某一类别,则该样本也属于这个类别,k通常是不大于20的整数。

  2. 算法描述
    1) 初始化距离为最大值
    2) 计算未知样本和每个训练样本的距离dist
    3) 得到目前K个最近邻样本中的最大距离maxdist
    4) 如果dist小于maxdist,则将该训练样本作为K-最近邻样本
    5) 重复步骤2、3、4,直到未知样本和所有训练样本的距离都算完
    6) 统计K个最近邻样本中每个类别出现的次数
    7) 选择出现频率最大的类别作为未知样本的预测类别

  3. 特点
    1) 非参数统计方法:不需要引入参数
    2) K的选择:
    K = 1时,将待分类样本划入与其最接近的样本的类。
    K = |X|时,仅根据训练样本进行频率统计,将待分类样本划入最多的类。
    K需要合理选择,太小容易受干扰,太大增加计算复杂性。
    3) 算法的复杂度:维度灾难,当维数增加时,所需的训练样本数急剧增加,一般采用降维处理。

  4. 缺陷
    1) 需要存储全部的训练样本
    2) 需要进行繁重的距离计算

  5. 改进
    1) 分组快速搜索近邻法:将样本集按近邻关系分解成组,给出每组质心的位置,以质心作为代表点,和未知样本计算距离,选出距离最近的一个或若干个组,再在组的范围内应用一般的KNN算法。由于并不是将为未知样本与所有样本计算距离,故该改进算法可以减少计算量,但并不能减少存储量。

    2) 压缩近邻算法:利用现在的样本集,采取一定的算法产生一个新的样本集,该样本集拥有比原样本集少的多的样本数量,但仍然保持有对未知样本进行分类的能力。基本思路:定义两个存储器,一个用来存放生成的样本集,称为output样本集,另一个用来存放原来的样本集,称为original样本集。

    a) 初始化:output样本集为空寂,原样本集存入original样本集,从original样本集中任意选择一个样本移动到output样本集中
    b) 在original样本集中选择第i个样本,并使用output样本集中的样本对其进行最近邻算法分类,若分类错误,则将样本移动到output样本集中,若分类正确,不做任何处理。
    c) 重复步骤b,直至遍历完original样本集中的所有样本,output样本集即为压缩后的样本集。
    此方法也能减少计算量,但仍无法减少存储量。

该篇为KNN算法的理论知识。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值