【k近邻】Kd树构造与最近邻搜索示例

【k近邻】 K-Nearest Neighbors算法原理及流程

【k近邻】 K-Nearest Neighbors算法距离度量选择与数据维度归一化

【k近邻】 K-Nearest Neighbors算法k值的选择

【k近邻】 Kd树的构造与最近邻搜索算法

【k近邻】 Kd树构造与最近邻搜索示例

k近邻法的实现需要考虑如何快速搜索$k$个最近邻点,而$kd$树就是一种便于对 $k$维空间中的数据进行快速检索的数据结构。

$kd$树是二叉树,表示对$k$维空间的一个划分,其每个结点对应于$k$ 维空间划分中的一个超矩形区域,利用$kd$树可以省去对大部分数据点的搜索,从而减少搜索的计算量。

例: 给定一个二维空间的数据集,

T=\{(2,3)^{\mathrm{T}},(5,4)^{\mathrm{T}},(9,6)^{\mathrm{T}},(4,7)^{\mathrm{T}},(8,1)^{\mathrm{T}},(7,2)^{\mathrm{T}}\}

依据算法可以对特征空间进行划分

(1)根结点对应包含数据集$T$的矩形,选择$x^{(1)}$轴;

(2)6 个数据点的$x^{(1)}$坐标的中位数是 7 ,以平面 $x^{(1)}=7$ 将空间分为左、右两个子矩形(子结点);

(3)左矩形以$x^{(2)}=4$分为两个子矩形,右矩形以$x^{(2)}=6$ 分为两个子矩形;

(4)如此递归,最后得到如上图所示的特征空间划分和如下图所示的 $kd$树。

例:给定一个如图所示的kd

根结点为A,其子结点为B, C 等。树上共存储7个实例点,1个输入目标实例点 S,使用kd树的最近邻搜索算法可以求得S的最近邻点。

(1)首先在 $kd$ 树中找到包含点S的叶结点 $D$ (图中的右下区域), 以点$D$作为近似最近邻。真正最近邻一定在以点S为中心通过点$D$的圆的内部;

(2)返回结点$D$的父结点B, 在结点B的另一子结点F的区域内搜索最近邻;

(3)结点F的区域与圆不相交,不可能有最近邻点,故继续返回上一级父结点A;

(4)在结点A的另一子结点C的区域内搜索最近邻,结点C的区域与圆相交;该区域在圆内的实例点有点E,点E比点D更近,成为新的最近邻近似;

(5)得到点E是点S的最近邻。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

F_D_Z

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

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

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

打赏作者

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

抵扣说明:

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

余额充值