这是主要问题。我有非常大的数据库(25,000左右)的48维向量,每个数据库的值都在0-255之间。具体细节并不那么重要,但我认为这可能有助于提供背景。高维最近邻搜索和局部灵敏度散列
我不需要最近的邻居,因此近似的邻居搜索精度在一定程度内是可以接受的。我一直在玩Locality Sensitivity Hashing,但我很迷茫。
我已经写了一个散列函数,如“稳定分布”一文中所描述的那样,尽我所能。这是代码。
def lsh(vector, mean, stdev, r = 1.0, a = None, b = None):
if not a:
a = [normalvariate(mean, stdev) for i in range(48)]
if not b:
b = uniform(0, r)
hashVal = (sum([a[i]*vectorA[i] for i in range(48)]) + b)/r
return hashVal
哈希函数至少有一些'工作'。如果我按哈希值排列点列表并计算列表中某点与其邻居之间的平均距离,则平均距离约为400,而任意两个随机选择点的平均距离约为530。
我最大的问题是这些。
- 答:任何建议,我可以在这里阅读更多。我的搜索没有产生很多结果。
B:该方法建议它输出一个整数值(我不这样做)。然后你应该尝试为这个整数值找到匹配,而匹配表示一个可能的最近邻居。我知道我应该为我所有的点计算一些哈希值表,然后检查表中的哈希匹配,但是我返回的值似乎不够好,我最终会完全匹配。我需要更多的测试。
C:有关如何基于其他哈希方法构建哈希函数的说明?
我结束了使用MTP工具包蟒蛇对我的数据进行PCA:你可以在给定的位
b
与得到一个整数值。非常非常有效,并且正是我一直在努力做的事情。 – 2010-07-21 23:00:09MTP?你的意思是MDP,http://mdp-toolkit.sourceforge.net? – denis 2010-08-25 16:10:39