为什么LSH用k和l表示最近邻



在所有位置敏感哈希解释(即http://en.wikipedia.org/wiki/Locality-sensitive_hashing#LSH_algorithm_for_nearest_neighbor_search)

它们描述生成了k个哈希函数,但只有l (l <K)在哈希表中用于对值进行哈希。>

为什么要生成k而不只是生成l?

为什么单独的因子k和l?

我不明白

实际上使用了所有的散列函数。如果您还记得,例如,在"汉明距离的位采样"一节中,单个哈希函数可能只是返回单个位,那么这就更有意义了。事实上,LSH散列函数的另一个例子是在某个d维位置随机选择一个平面,并根据被散列的点在平面的哪一边返回0或1。

要对单个表进行寻址,因为哈希函数可能只返回单个位,因此需要计算k个哈希函数并将结果连接起来,从而得到一个可能为k位的键。现在对于l个表,你需要l个不同的键,所以实际上你总共需要l*k个哈希函数。

检查:查看成功概率。当查找单个表时,单个哈希函数为查询和近邻返回相同的值,概率为P1。要在单个表中找到近邻,你必须让所有的哈希函数都工作,所以概率是P1^k,而单次查找失败的概率是1 - P1^k。但是你尝试了l次所以所有查找失败的概率是(1- p1 ^k)^l成功的概率是1-(1- p1 ^k)^l,这正是他们计算的结果

最新更新