Python 局部敏感散列-R的查找概率和值
感谢那些回答了我之前的问题并让我走到这一步的人 我有一个大约25000个向量的表格,每个向量有48个维度,值从0到255不等 我正在尝试开发一种对位置敏感的Hash()算法,用于查找近邻点或最近邻点 我当前的LSH功能是:Python 局部敏感散列-R的查找概率和值,python,nearest-neighbor,Python,Nearest Neighbor,感谢那些回答了我之前的问题并让我走到这一步的人 我有一个大约25000个向量的表格,每个向量有48个维度,值从0到255不等 我正在尝试开发一种对位置敏感的Hash()算法,用于查找近邻点或最近邻点 我当前的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
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)
在这一点上,我的问题是:
A:我的代码中的“normalvariate(10,4)”部分是否有最佳值。这是在random.normalvariate()函数中构建的pythons,我正在使用它生成“d维向量,其条目独立于稳定分布选择”。从我的实验来看,这些值似乎并不重要
B:在维基百科文章的顶部,它指出:
如果d(p,q)=cR,那么h(p)=h(q),概率最大为P2
这里提到的R值也是稳定分布部分提到的R值。()
C:与我之前的问题(B)相关。我发现在hasing函数中使用较高的R值可以将向量映射到较小的散列值范围。有没有办法优化我的R值
D:一次大概可以使用多少张表?给感兴趣的人。我发现了这篇文档(它对如何在高维空间中使用LSH进行了非常详细但复杂的解释)。您可能想查看“元优化”——比如机器学习的堆栈溢出。
您的问题实际上不是python或编程问题,该社区可能会提供更多帮助