在所有Locality Sensitive Hashing解释中(即http://en.wikipedia.org/wiki/Locality-sensitive_hashing#LSH_algorithm_for_nearest_neighbor_search)
他们描述了生成k个哈希函数,但是在哈希表中只使用l(l< k)来散列值。
为什么要生成k而不仅仅生成l?
为什么单独的因子k和l?
我不明白。
答案 0 :(得分:1)
实际上使用了所有散列函数。如果你记得这一点更有意义,例如,在"汉明距离的比特采样"单个散列函数可能只返回一个位。事实上,LSH散列函数的另一个例子是考虑在某个d维位置中随机选择的平面,并根据被散列的点的平面哪一侧返回0或1。
要解决单个表,因为散列函数可能只返回一个位,所以您可以计算k个散列函数并连接结果,以便为您提供一个k位密钥。现在有了l个表,你需要l个不同的键,所以实际上你需要总共l * k个哈希函数。
检查:看成功概率。查找单个表时,单个散列函数以概率P1返回查询和近邻的相同值。要在单个表中查找近邻,必须使所有散列函数都起作用,因此概率为P1 ^ k,单个查找失败的概率为1 - P1 ^ k。但你尝试了这一次,所以所有查找失败的概率是(1-P1 ^ k)^ l,成功概率是1-(1-P1 ^ k)^ l,这正是他们计算的。