具体说明
还是用这个例子:
若X=(2.1,3.1),空间划分为:
上图黄色区域是无需搜索区域,则排除它,过程如下,(因有公式,不想再在博客上打一遍,mathtype上截的图)
K近邻说明
都说K近邻简单,其实,k近邻相当复杂,
1》简单的计算距离,距离近的k个点,很简单,结果数据量大计算慢,而且每次都要循环多次,浪费计算机资源;
2》构建KD tree,树状搜索节点比遍历快,数据结构上改变速度, 结果维度大了,树的结构太复杂,速度又慢下来了;
3》KDtree有了,怎么提升查找速度,找到所属类子节点,回溯到足够精度位置,结果回溯到什么地方,不知道。那个kdtree空间图对应树状结构中看是否在所属叶节点附近几个子节点,实话告诉你,最左边的最近邻有可能在最右边。换句话说,你有可能回到2》步骤效果,尽管这概率比较小,被剪切了。
4》于是有了这篇文章,自己想出来的,如有雷同纯属巧合,可以过滤一些搜索范围,加快搜索速度,也提升了精度。
另外:kdtree BBF,balltree之类还有很多方法,不知是否有重合。代码,暂时没有时间写。