【问题标题】:Number of buckets in LSHLSH 中的桶数
【发布时间】:2016-09-07 09:32:41
【问题描述】:

在 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)?

【问题讨论】:

  • 有点不清楚您在之前的问题中实际上散列了什么:“作为列的文档和作为行的单词 [..] 每个条带都有其列散列,因此一列属于存储桶. 如果两列落在同一个桶中,对于 >= 1 个条带,那么它们可能是相似的”。无论如何,一个常见的起点是使用sqrt(n) 存储桶来存储n 文档。您可以尝试将其加倍和减半并运行一些分析以查看您获得了什么样的文档分布。

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


【解决方案1】:

一个常见的起点是为n 文档使用sqrt(n) 存储桶。您可以尝试将其加倍和减半并运行一些分析以查看您获得了什么样的文档分布。当然,也可以尝试任何其他指数,甚至 K * log(n),如果您预计不同集群的数量会“缓慢”增长。

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

【讨论】:

    【解决方案2】:

    我认为至少应该是n。如果小于这个值,比如说n/2,您确保对于所有波段,由于冲突,每个文档平均至少有 1 个可能的相似文档。因此,计算相似度时的复杂度至少为 O(n)

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

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 2018-09-12
      • 2016-10-26
      • 1970-01-01
      • 2016-09-18
      相关资源
      最近更新 更多