为什么 LSH 的 k 和 l 用于近似最近邻?
Why k and l for LSH used for approximate nearest neighbours?
在所有 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?
没看懂
实际上使用了所有哈希函数。如果您还记得,例如,在 "Bit sampling for Hamming distance" 部分中,单个散列函数可能只是 return 一个位,那么这就更有意义了。事实上,LSH 哈希函数的另一个例子是考虑在某个 d 维位置随机选择的平面,并根据被哈希的点在平面的哪一侧 return 0 或 1。
为了解决单个 table,因为哈希函数可能 return 只是一个位,您评估 k 个哈希函数并连接结果,给您一个可能是 k 位的密钥.现在有了 l tables,你需要 l 个不同的键,所以实际上你总共需要 l*k 个散列函数。
检查:看成功概率。当查找单个 table 时,单个散列函数 return 的查询值与概率 P1 的近邻相同。要在单个 table 中找到近邻,您必须让所有哈希函数都起作用,因此概率为 P1^k,并且单个查找失败的概率为 1 - P1^k。但是你尝试了 l 次,所以所有查找失败的概率是 (1-P1^k)^l,成功概率是 1-(1-P1^k)^l,这正是他们计算的结果。
在所有 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?
没看懂
实际上使用了所有哈希函数。如果您还记得,例如,在 "Bit sampling for Hamming distance" 部分中,单个散列函数可能只是 return 一个位,那么这就更有意义了。事实上,LSH 哈希函数的另一个例子是考虑在某个 d 维位置随机选择的平面,并根据被哈希的点在平面的哪一侧 return 0 或 1。
为了解决单个 table,因为哈希函数可能 return 只是一个位,您评估 k 个哈希函数并连接结果,给您一个可能是 k 位的密钥.现在有了 l tables,你需要 l 个不同的键,所以实际上你总共需要 l*k 个散列函数。
检查:看成功概率。当查找单个 table 时,单个散列函数 return 的查询值与概率 P1 的近邻相同。要在单个 table 中找到近邻,您必须让所有哈希函数都起作用,因此概率为 P1^k,并且单个查找失败的概率为 1 - P1^k。但是你尝试了 l 次,所以所有查找失败的概率是 (1-P1^k)^l,成功概率是 1-(1-P1^k)^l,这正是他们计算的结果。