LSH 即时分箱

  • 本文关键字:LSH python minhash lsh
  • 更新时间 :
  • 英文 :


我想使用 MinHash LSH 将大量文档放入类似文档的桶中(Jaccard 相似性)。

问题:是否可以在不知道其他文档的最小哈希的情况下计算 MinHash 的存储桶?

据我了解,LSH "只是"计算 MinHashes 的哈希值。所以应该有可能吗?

我觉得很有前途的一个实现是数据草图。在知道所有文档的 MinHash 后,我可以在 LSH 中查询与给定文档类似的文档。但是,我认为在了解其他文档之前无法获取单个文档的存储桶。 https://ekzhu.github.io/datasketch/index.html

LSH 不会对整个文档进行桶装,也不会对单个 minhash 进行分桶。相反,它桶装了"带"的minhashes。

LSH 是一种减少每个文档存储的哈希数和减少使用这些哈希搜索类似文档时发现的命中数的方法。它通过将多个最小哈希组合成一个哈希来实现这一点。因此,例如,您可以将它们组合成四个乐队,以产生 50 个对位置敏感的哈希,而不是为每个文档存储 200 个最小哈希。

每个波段的哈希值是使用廉价哈希函数(如 FNV-1a)从其组成最小哈希计算得出的。这会丢失一些信息,这就是为什么据说 LSH 会降低数据的维度。生成的哈希是存储桶。

因此,计算文档中每个波段的 minhash 的存储桶,而无需了解任何其他波段或任何其他文档。

使用 LSH 哈希查找类似文档很简单:假设您要查找与文档 A 相似的文档。首先为文档 A 生成(例如)50 个 LSH 哈希。然后在哈希字典中查找共享一个或多个这些哈希的所有其他文档。他们共享的哈希越多,他们估计的 jaccard 相似性就越高(尽管这不是线性关系,就像使用纯最小哈希时一样)。

每个文档存储的总哈希值越少,估计的 jaccard 相似性误差就越大,丢失类似文档的可能性就越大。

这里有一个关于生命科学行的很好的解释。

相关内容

  • 没有找到相关文章

最新更新