K 均值树 VS 随机 KD 树?

K-means tree VS randomized KD-tree?

我正在阅读 these 幻灯片。特别是,在幻灯片 52 中指出:

In our experiments, we have found that either of two algorithms can have the best performance, depending on the dataset and desired precision

然而,在上一张幻灯片中,仅在情况 (a) 中 K-means 树比随机 kd-tree 具有更好的性能,而在其他三个实验中,kd-tree 绝对是赢家。

这是正确的还是我读错了?如果是这样,为什么他们说最好的算法是依赖于数据集的?

在分析了您指出的幻灯片中的图表后,您可以观察到:

  • 在 (a) for 100k SIFT matches K-means performs bit better when balancing speed/precision;

  • 在 (b) 中,当从 100K SIFT 扩展到 31M 时,RKD-Trees 能够执行得更快,但是如果你想要最好的精度,速度会稍微降低 找到那些匹配项;

  • 并且在 (c) 中使用 RKD-Tree 搜索在与查询 .[= 没有真正匹配的数据集上表现更好10=]

所以它们确实依赖于数据集。例如,您可以得出结论,RKD-Tree 对于较大的数据集执行速度更快,但是如果精度是您尝试实现的任何任务的相关指标,则 RKD-Trees 性能将类似于 K-means搜索。