机器学习总结之——KD树小白理解

机器学习总结之——KD树小白理解

  KD树是k-dimension树的简称。KD树是一种树形的数据结构,目的是为了提高数据查找的效率。可以把KD树类比为一维的折半查找,只不过它是针对多维数据的。一维折半查找需要把数据先排序,做成查找表,或是做成二叉查找树,即每个节点左子树均小于节点值,而右子树均大于节点值。对多维的情况下,就需要构造KD树了。

小白理解:KD树就是一棵二叉树的变形,它是将二叉树对数据集进行划分从一维拓广到K维。对K维数据集进行子节点的划分,KD树主要进行如下处理:
(1)选择维度:因为KD树所划分的数据是K维的,KD对于K维数据的处理就是从K维中选择其中一个维度作为划分的依据,并将该维度记录在节点里面(方便后续的数据查找)。选择的方式有:

  • 按顺序依次选,比如对于三维数据(X,Y,Z)先选X维,后Y维再到Z维然后又选X维依次循环;
  • 计算在该父节点内各个维度数据的方差,选择方差最大的维度(属性)作为划分的维度。

(2)选择分割值:维度选好了,还需要根据这个维度选择一个分割值将父节点内数据划分入左右节点,KD的处理方式是根据该维度(属性)的值,先将数据排好序,然后取中间的那个数据作为父节点,比处于中间数据左边的数据划入该父节点的左子树、处于中间数据右边的数据划入该父节点的右子树。

(3)对每一颗非叶子节点的子树重复上述过程,直至生成完整一棵二叉树为止。

PS:选择分割值时取中间值作为父节点的目的是为了保证所生成的二叉树是平衡的,因为左右节点所包含的数据数量是一样的(严格来说当父节点共有偶数个数据时,左子树会出现比右子树大1);

相关树:ball-tree(在子节点划分方式上不同,利用球形计算,适合于高维度)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值