感谢那些已经回答我以前的问题,并得到了我这么多。局部敏感散列 - 寻找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:大约可以使用多少个表?