K近临算法(KNN)

什么是K近临算法

K近临算法是基于实例的学习算法,俗称KNN

什么是基于实例

基于实例的学习算法只是简单的把样例存储起来。把这些实例中泛化的工作推迟到必须分类的时候。每当学习器遇到一个新的实例时,它将实时分析这个实例与以前存储的实例的关系,并据此把一个目标函数值赋到新的实例。

K近临原理介绍

k近临的思路是找K个与目标最相似的样本,认为目标就属于K个样本中最多频次的类别。
分类
对未知类别属性数据中每个点的分类过程:
1. 计算未知点到训练数据点的距离
2. 对这些训练数据点递增排序
3. 选K个最近的点
4. 确定K个点所在类别的频率
5. 返回K个点出现频率最高的类别作为未知点类别
其中的距离计算一般为欧式距离,或者城市距离(具体依实际情况定)

K近临
如上图所示,如果K=3就是实线所圈的点,那么未知点就会被分成红色三角形的类别上。如果K=5那就是虚线所圈的点,未知点就会被分成蓝色四方块的类别上。

回归
1. 计算未知点到训练数据点的距离
2. 对这些训练数据点递增排序
3. 选K个最近的点
4. 将K个最近点的属性均值赋值给目标点(得到目标点的属性)
当然取均值只是一种方法,还可以按样本点与目标点的距离进行加权等方法进行属性值赋值。

K近临的优缺点

优点

  1. 抗噪声能力强:K近临只选最近的K个点,因些一些离群点完全不影响算法的处理效果。
  2. 模型简单,分类效果相当不错。kaggle的手势识别,朴素的算法就能达到96.5%的准确率
  3. 由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方 法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。

缺点

  1. 维度灾难:k-近邻算法在计算距离的时候,考虑实例的所有属性。可能分类仅由某几个属性决定,这中情况下属性的相似性度量会误导k-近邻算法的分类。

    解决办法:(1)属性加权;(2)剔除不相关的属性。

  2. 效率超慢:对于每个目标点都需要计算它到所有样本点的距离
    当样本维度为 N 特征维度为 D ,那么复杂度就是呈 O(ND

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值