最近邻查找最优算法_K邻近算法的实现(四、K-D树的最邻近搜索)

四、K-D树的最邻近搜索

现在我们已经能够根据训练样本集来构造出一颗K-D树了,怎么用这颗高逼格的树实现我们KNN算法的核心内容K邻近搜索呢?我们先以最邻近搜索,即找出离指定样本最近的训练样本为例来说明整个算法。对于K邻近搜索,只需在最邻近搜索的基础上稍作修改即可了。

我们还是以之前举的例子来说明。我们的训练样本集inputs={(2,3)、(5,4)、(9,6)、(4,7)、(8,1)、(7,2)}。则根据样本集构造的K-D树及对应的空间划分示意图如下所示:

先假设我们想要找出距离点(2.1,3.1)最邻近的训练集中的哪个样本。我们要利用KD树每个节点都对空间进行分割的特点,很直观的想法,如果一个点位于当前节点确定分割超平面的左侧,那么我们应当到平面的左侧去找寻最邻近点而不是后侧,当然后面我们会说到,最邻近点并不一定在目标的相应的那一侧。按照这种想法,我们算法的第一步就是从根节点开始快速向下搜索直到叶子节点。搜索过程中,我们要判断每个节点是不是当前距离目标点最近的哪个并记录下来。在这个例子中,我们从根节点(7,2)开始搜索,根节点距离目标距离为5.02,记录为当前最邻近节点,由于(2.1,3.1)位于分割超平面的左边,我们认为最近邻节点更可能在平面左边被找到,所以我们搜索左子节点(5,4),该节点距离目标点(2.1,3.1)距离为3.03<5.02,所以更新当前最近距离和最邻近节点为3.03和(5,4)。继续搜索,(2.1,3.1)位于当前节点(5,4)所确定的分割平面的左侧,所以搜索左子节点(2,3),其到目标节点距离为0.14,所以更新当前的最邻近距离和最邻近节点为0.14和(2,3)。继续搜索ÿ

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值