两组高维点:在另一组中找到最近的邻居

时间:2014-10-29 22:44:09

标签: algorithm nearest-neighbor approximate-nn-searching

我有两组:A和B.两组都包含相同数量的高维点。如何在Set B中为Set B中的每个点找到最近邻居?

我考虑使用Voronoi图,但似乎(根据维基百科)它不适合高于2的尺寸。

有人可以向我推荐一种方法吗?

1 个答案:

答案 0 :(得分:3)

<强> FLANN

如果您的数据确实存在于高维空间中,那么您可以使用FLANN

它实际上构建了许多旋转的kd树和每个树的查询(一点点),保持了最佳结果。它还会旋转数据集以避免令人讨厌的情况。

在出版物部分,您可以阅读有关其工作原理的更多信息。

在“获取FLANN”部分,您还可以阅读手册。

但是,由于您希望在高维空间中执行最近邻搜索(NNS),因此您需要接受时间和精度之间的权衡(更多时间具有更高的准确性)。这就是FLANN执行近似NNS的原因(请查看this答案)。


<强> LSH

作为替代方案,我建议使用LSH算法。这是E²LSH,它实际上实现了LSH算法。可以找到手册here

算法背后的想法是,我们希望将相互靠近的点放在同一个桶中(很有可能)。然而,LSH致力于解决R最近邻问题。

通过R-near邻居数据结构,作者可能意味着给定一个查询点q,我们可以回答这个问题:&#34;数据集的哪些点位于半径R的q?&#34;。< / p>

但是,本手册解释了LSH如何用于执行NN搜索。


请注意,此类问题不适用于此网站。我回答你,因为你是一个新用户。下一次确保你不要忘记这一点。 :)