kd树的根节点_KD树简介

作者 周知航

审核 张翔

ARGO曾经推出了ARGO:KNN算法介绍​zhuanlan.zhihu.com

介绍了KNN算法的原理,其核心是寻找待测样本在训练样本中的k个近邻,从而从k个近邻中获取数量最多的类别作为待测样本的类别。

KNN算法是机器学习中最简单的算法之一,但是工程实现上,如果训练样本过大,则传统的遍历全样本寻找k近邻的方式将导致性能的急剧下降。 因此,为了优化效率,不同的训练数据存储结构被纳入到实现方式之中。在sikit-learn中的KNN算法参数也提供了'kd_tree'之类的算法选择项。本文将从如下几个方面阐述kd树:

kd树的概念

从例子理解kd树的构建及查找

ball tree 和其他树类型简介

一 kd树的概念

kd(k-dimensional)树的概念自1975年提出,试图解决的是在k维空间为数据集建立索引的问题。依上文所述,已知样本空间如何快速查询得到其近邻?唯有以空间换时间,建立索引便是计算机世界的解决之道。但是索引建立的方式各有不同,kd树只是是其中一种。它的思想如同分治法,即:利用已有数据对k维空间进行切分。

我们先回顾一下二叉查找树,这也是在一维空间中的kd树的情形:

由图可知,二叉树在时间复杂度上是O(logN),远远优于全遍历算法。对于该树,可以在空间上理解:树的每个节点把对应父节点切成的空间再切分,从而形成各个不同的子空间。查找某点的所在位置时,就变成了查找点所在子空间。上图仅仅是一维,如果换到二维,或者是更高维度上,这棵树该怎么建立? 又该怎么理解所切成的子空间呢?

我们可以用一个在网络上较为普遍的例子来演示一下二维的kd树构建及查找方式。

二 从例子理解kd树的构建及查找

假设有6个二维数据点{(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)}。

依据上文,对于一维空间的切分的最终结果实际上切出的是线段,同理,二维空间中,对于该6个点集最后的切分结果的空间应该是子平面集合。这里,kd树最终目标就是构建

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值