什么是近邻的快速近似?

时间:2011-02-17 22:02:31

标签: algorithm language-agnostic data-mining nearest-neighbor

假设我有一个巨大的(几百万)n个向量列表,给定一个新的向量,我需要从集合中找到一个非常接近的向量,但它不需要是最接近的。 (最近邻找到最近并且在n时间内运行)

哪些算法能够以准确度为代价快速逼近最近邻居?

编辑:因为它可能会有所帮助,我应该提到数据在大多数情况下非常流畅,随机维度的可能性很小。

4 个答案:

答案 0 :(得分:2)

存在更快的算法然后On)以任意距离搜索最近的元素。查看http://en.wikipedia.org/wiki/Kd-tree了解详情。

答案 1 :(得分:2)

如果您使用高维矢量,如SIFT或SURF或多媒体扇区中使用的任何描述符,我建议您考虑使用LSH。

来自Wei Dong(http://www.cs.princeton.edu/cass/papers/cikm08.pdf)的博士论文可能会帮助您找到更新的KNN搜索算法,即LSH。与传统的LSH不同,如麻省理工学院研究人员早些时候发表的E2LSH(http://www.mit.edu/~andoni/LSH/),他的算法使用多探测来更好地平衡召回率和成本之间的权衡。

答案 2 :(得分:1)

对“最近邻居”lsh库进行网络搜索 http://www.mit.edu/~andoni/LSH/ http://www.cs.umd.edu/~mount/ANN/ http://msl.cs.uiuc.edu/~yershova/MPNN/MPNN.htm

答案 3 :(得分:1)

对于近似最近邻居,最快的方法是使用局部敏感散列(LSH)。 LSH有很多变种。您应该根据数据的距离指标选择一个。 LSH的查询时间的大O与数据集大小无关(不考虑输出结果的时间)。所以它真的很快。这个LSH library实现了L2(Euclidian)空间的各种LSH。

现在,如果您的数据维度小于10,如果您想要精确的结果,则首选kd tree

相关问题