2010-07-16 39 views
5

感谢那些已经回答我以前的问题,并得到了我这么多。局部敏感散列 - 寻找R的概率和值

我有一张大约25,000个向量的表格,每个向量有48个维度,值范围从0-255。

我正在尝试开发一种用于查找近邻或最近邻点的局部敏感散列算法(http://en.wikipedia.org/wiki/Locality-sensitive_hashing)。

我现在LSH功能是这样的:

def lsh(vector, r = 1.0, a = None, b = None): 
    if not a: 
     a = [normalvariate(10, 4) for i in range(48)] 
    if not b: 
     b = uniform(0, r) 
    hashVal = floor((sum([a[i]*vector[i] for i in range(48)]) + b)/r) 
    return int(hashVal) 

我的问题,在这一点上是:

答:是否有最佳值 “normalvariate(10,4)” 我的代码部分。这是python在random.normalvariate(http://docs.python.org/library/random.html#random.normalvariate)函数中构建的,我正在使用它来生成“d维矢量,其条目从稳定分布中独立选择”。从我的试验来看,这些价值似乎并不太重要。

B:在维基百科文章的顶部它指出:

如果d(P,Q)< = R,则h(P)= H(q)的概率至少P1

如果d(p,q)> = CR,则h(p)= H(q)的概率为至多P2

在此也提及的R值下稳定提及的R值分配部分。 (http://en.wikipedia.org/wiki/Locality-sensitive_hashing#Stable_distributions

C:与我以前的问题(B)相关。我发现在我的hasing函数中使用更高的R值可将我的向量映射到更小范围的散列值。有没有办法来优化我的R值。

D:大约可以使用多少个表?

回答

2

你可能想看看“MetaOptimize” - 像机器学习堆栈溢出
http://metaoptimize.com/qa

你的问题是不是一个真正的蟒蛇或编程问题,即社会可能帮助更多一点。