search - k-d树对kNN搜索有效。 k最近邻居搜索

标签 search nearest-neighbor kdtree knn

我必须实现k最近邻居搜索kd树中的10维数据。

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

这对于kd树木来说是正常的,还是我正在做些破烂的事?

最佳答案

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

平衡不良的树将意味着您必须搜索比所需更多的数据。确保您的树结构是健全的。

这也可能取决于您如何找到k个邻居。如果您的算法在树上搜索最近的邻居并将其存储,然后搜索第二个最近的邻居并将其存储,依此类推,那么您的搜索效率就不高。而是保留最近的k个邻居的运行列表,当发现遍历树的更近的邻居时,将凹凸点排除在列表之外。这样,您搜索一次,而不是k次。

无论哪种方式,听起来好像您正在为一门类(class)做这些。尝试与您的教授,助教或同学交谈,看看您的成绩是否很典型。

关于search - k-d树对kNN搜索有效。 k最近邻居搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2034199/

相关文章:

ruby - 如何在 Ruby 中使用 net/imap 搜索邮箱中的邮件?

python - 使用后缀数组查找子字符串的一次出现

python - kd-tree 可以用点积构建吗?

compression - 位串最近邻搜索

algorithm - 从二维 kd 树中删除元素

php - Mysql查询逗号分隔过滤结果

python - Django - 在结果页面的搜索框中显示查询

algorithm - Lsh 算法和频段

Python 在 for 循环和数百个属性查找上速度很慢。使用 Numba 吗?

java - Java中的KDTree实现