k-d树是否对kNN搜索有效。 k最近邻搜索

时间:2010-01-09 17:24:20

标签: search nearest-neighbor kdtree knn

我必须实现k个最近邻居在kd-tree中搜索10维数据。

但问题是我的算法对于k = 1来说非常快,但是对于k> 1(k = 2,5,10,20,100)而言,我的算法慢了2000倍

对于kd树来说这是正常的,还是我在做什么?

2 个答案:

答案 0 :(得分:8)

嗯,这主要取决于您的特定实现和数据集。

不平衡的树意味着您必须搜索比您需要的更多数据。确保树形结构合理。

它还可能取决于你如何找到k个邻居。如果您的算法在树中搜索最近邻居并存储它,然后搜索第二个最近并存储它等,那么您不会非常有效地进行搜索。相反,当您发现越近的树遍历树时,保持k个最近邻居的运行列表并将爆破点排除在列表之外。这样你就可以搜索一次,而不是k次。

无论哪种方式,听起来你正在为一门课程做这件事。尝试与您的教授,助教或同学交谈,看看您的结果是否典型。

答案 1 :(得分:6)

我知道这个问题已得到解答,但有关使用kd树搜索KNN的详细信息,请参阅Bentley(1975:514), ACM通讯 18(9),9月。