LSH 中的桶数
Number of buckets in LSH
在 LSH 中,您 陷入困境。这个想法是,落入相同桶中的这些文档可能是相似的,因此可能是最近的邻居。
对于 40.000 个文档,桶数的合适值(差不多)是多少?
我现在是:number_of_buckets = 40.000/4
,但我觉得还可以再减。
任何想法,请?
亲戚:How to hash vectors into buckets in Locality Sensitive Hashing (using jaccard distance)?
一个常见的起点是对 n
个文档使用 sqrt(n)
个存储桶。您可以尝试将其加倍和减半,然后 运行 进行一些分析以查看您获得的文档分布类型。当然也可以尝试任何其他指数,甚至 K * log(n)
如果您希望不同簇的数量增长 "slowly".
我认为这还不是一门精确的科学,属于为 k-means clustering 选择最佳 k
的类似主题。
我觉得至少应该是n
。如果小于该值,假设 n/2
,您确保对于所有波段,由于冲突,每个文档平均至少有 1 个可能的相似文档。因此,计算相似度时的复杂度至少为 O(n).
另一方面,您必须至少通过桶 K 次,所以是 O(K*B), 成为你的水桶。我相信后者更快,因为它只是遍历您的数据结构(即某种字典)并计算散列到每个存储桶的文档数量。
在 LSH 中,您
对于 40.000 个文档,桶数的合适值(差不多)是多少?
我现在是:number_of_buckets = 40.000/4
,但我觉得还可以再减。
任何想法,请?
亲戚:How to hash vectors into buckets in Locality Sensitive Hashing (using jaccard distance)?
一个常见的起点是对 n
个文档使用 sqrt(n)
个存储桶。您可以尝试将其加倍和减半,然后 运行 进行一些分析以查看您获得的文档分布类型。当然也可以尝试任何其他指数,甚至 K * log(n)
如果您希望不同簇的数量增长 "slowly".
我认为这还不是一门精确的科学,属于为 k-means clustering 选择最佳 k
的类似主题。
我觉得至少应该是n
。如果小于该值,假设 n/2
,您确保对于所有波段,由于冲突,每个文档平均至少有 1 个可能的相似文档。因此,计算相似度时的复杂度至少为 O(n).
另一方面,您必须至少通过桶 K 次,所以是 O(K*B), 成为你的水桶。我相信后者更快,因为它只是遍历您的数据结构(即某种字典)并计算散列到每个存储桶的文档数量。