快速查找给定向量的字典向量。高尺寸

时间:2010-07-02 07:08:53

标签: python algorithm math vector

我正在寻找可扩展的答案,但出于我的特定目的,我有一个48维向量。这可以表示为48个整数的数组,全部在0到255之间。

我有一本关于这些载体的大字典,大约有2.5万个。

我需要能够获取可能存在或不存在于我的数据库中的向量,并快速找到数据库中哪个向量最接近。最接近,我的意思是传统的距离公式。

我的代码将以python结尾,但这是一个普遍的问题。

蛮力太慢了。我需要一个近词典速度查找。有人有想法吗?

2 个答案:

答案 0 :(得分:8)

我建议您实施一个kd-tree来执行Nearest neighbour search。 k维中N个点的最坏情况搜索时间为O(k.N^(1-1/k)),因此它应该在N中进行次线性缩放。

如果我有时间,我会回到这个答案并提供维基百科的简洁解释。

由于您在python中工作,kdtrees上的Scipy食谱条目应该有所帮助。

答案 1 :(得分:4)

另一种有用的技术是局部敏感哈希:http://en.wikipedia.org/wiki/Locality_sensitive_hashing

从您的问题中不清楚您是否需要-exact-最近邻居。如果您对返回近似最近邻居的向量感到满意,则可以使用更快的解决方案。见这里(http://www.cs.umd.edu/~mount/ANN/