LSH中的桶数

时间:2016-05-11 19:36:15

标签: hash document nearest-neighbor locality-sensitive-hash bigdata

在LSH中,您hash slices of the documents进入存储桶。我们的想法是,落入相同存储桶的这些文档可能类似,因此可能是最近的邻居。

对于40.000个文档,桶的数量有多大(很多)?

我现在有number_of_buckets = 40.000/4,但我觉得可以减少更多。

任何想法,

亲戚:How to hash vectors into buckets in Locality Sensitive Hashing (using jaccard distance)?

2 个答案:

答案 0 :(得分:1)

一个常见的出发点是对.gray-images > li > a { -webkit-filter: grayscale(1); -moz-transition: all .2s ease; -o-transition: all .2s ease; -webkit-transition: all .2s ease; transition: all .2s ease; } .gray-images > li > a:hover { -webkit-filter: grayscale(0); }文档使用<ul class="gray-images"> <li> <a href="#href"> <img src="http://lorempixel.com/100/100/nature/1" height="100"> </a> </li> </ul>存储桶。您可以尝试将其加倍并将其减半并运行一些分析以查看您获得的文档分发类型。当然,任何其他指数都可以尝试,如果您期望不同群集的数量“缓慢”增长,甚至可以尝试sqrt(n)

我认为这不是一门精确的科学,属于与为k-means clustering选择最佳n类似的主题。

答案 1 :(得分:1)

我认为应该至少为n。如果小于该值,则假设n/2,请确保对于所有带,由于冲突,每个文档平均将至少有1个可能的相似文档。因此,计算相似度时的复杂度至少为 O(n)

另一方面,您必须至少经过 K 个桶,因此 O(K * B),即B个桶。我相信后者会更快,因为它只是在您的数据结构(即某种词典)上进行迭代并计算散列到每个存储桶的文档数。