第三章k近邻法(接上篇)

3.3k近邻法的实现:kd树

3.3.1构造kd树,
(1)构造跟节点,以训练集T中的一维度的中位点作为切分点,将超矩形区域划分为两部分,
(2)重复:对深度为j的节点选择切分坐标的中位值,
(3)直到子区域没有实例存在为止,从而形成kd树的划分
3.3.2搜索kd树
用kd树进行最近邻搜索
(1)从根节点出发,递归向下访问kd树,直到子节点为叶节点为止
(2)以此叶节点为当前最近点
(3)递归向回推,每个节点做一下的操作:
	(a)如果该节点的实例比当前保存的最近点距离更近,则把这个节点作为当前最近节点。
	(b)检查该子节点的父节点的另一个区域是否有更近点,即检查以目标点为球心,以目标点与当前最近点距离为半径的超球体是否与该子区域相交。如果相交,则可能存在距离更近的点,需要在该子区域具体搜索,如果不想交,则向上回退。
(4)当回退到根节点时,搜索结束。
kd树适用于训练实例数远大于空间维数的k紧邻搜索。

猜你喜欢

转载自blog.csdn.net/qq_37994598/article/details/83893290