K近邻法(KNN)

更多机器学习方法总结请到我这个博客链接

K近邻法(k-nearest neighbor,KNN)

1 K近邻定义

1、一句话定义
      给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的k个实例,这k个实例的多数属于某个类,就把该输入实例分为这个类。

2、三要素:距离度量,k值的选取,分类决策规则的选取。

  1. 距离度量一般采用欧氏距离,也可以是其他距离(Lp距离)
  2. k值选取将会对结果产生巨大的影响。如果k值较小,整体模型变的复杂,容易发生过拟合;如果k值过大,不相关的点也对预测产生影响,导致预测精度较低。一般可以采用交叉验证进行k值得选取。
  3. 分类决策规则:往往是多数表决。

2 k近邻的实现-kd树

      实现k近邻法时,主要考虑的问题是如何对训练数据进行快速k近邻搜索。这点在特征空间的维数大及训练数据容量大时尤其必要。最简单是的就是线性扫描,但对于高维数据不可取,因此采用特殊的存储结构kd树进行搜索。

2.1 kd树的构建

更多详情请见:kd树构建详解

      kd树是二叉树,和分治法思想一样,利用已有数据进行空间切分。构造kd树相当于不断地用垂直于坐标轴的超平面将k维空间切分,构成一系列的k维超矩形区域。kd树的每个结点对应于一个k维超矩形区域。
      需要注意的是,每一刀都要切在数据点上面。主要考虑切分域和切分点的选择(分别使用方差最大优先和中位优先)
算法流程:
kd树构造算法
对于例子:构造一个平衡kd树。
在这里插入图片描述
结果如下:

在这里插入图片描述在这里插入图片描述

2.2 ball tree 和其他树类型介绍

      在kd tree 中,我们看到一个导致性能下降的最核心因素是因为kd树的平面是一个个的方形,求最近邻时使用的是圆形。方形平面跟圆形相交的可能性是极高的,如果方形的交汇点多的话,圆形和几个平面相交的可能性就变得更大。这样,凡是相交的平面,都需要进行检查,大大的降低运行效率。
在这里插入图片描述
      为了解决这一个问题,ball tree抛弃了kd树画的方形,而建立球形,去掉棱角。简而言之,就是使用超球面而不是超矩形划分区域。
在这里插入图片描述

3 搜索kd树

      用目标数据在kd树中寻找最近邻时,最核心的两个部分是:

  1. 寻找近似点-寻找最近邻的叶子节点作为目标数据的近似最近点。

  2. 回溯-以目标数据和最近邻的近似点的距离沿树根部进行回溯和迭代。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Weiyaner

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值