kd树是否对kNN搜索有效.k最近邻搜索

And*_*raz 9 search kdtree nearest-neighbor knn

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

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

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

And*_*rew 8

那么,它主要取决于您的特定实现和数据集.

一个不平衡的树意味着你必须搜索比你需要的更多的数据.确保你的树形结构是理智的.

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

不管怎样,听起来你正在为一门课程做这件事.尝试与您的教授,助教或同学交谈,看看您的结果是否典型.


flu*_*els 6

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