首页 > 解决方案 > 如何选择 Elastiknn LSH Jaccard 相似性指标参数 L 和 k ?在我的情况下,我的 minhash 大小 = 100,并且 jaccard Similarity = 0.8

问题描述

我正在尝试使用 Elasticknn 插件检测近乎重复的内容。

我创建了文本文档的 minhash,Minhash 设置大小 = 100

我想使用 Elasticknn 插件应用具有 Jaccard 相似性的 LSH(因为它有这种类型的索引可用,)

根据我对 LSH、Minhash 重复检测算法的了解,根据所需的 jaccard 相似度级别(比如 0.8),我们必须选择

  1. 桶数b
  2. 桶大小r

Elastiknn 提供了一些不同的参数 https://elastiknn.com/api/#jaccard-lsh-mapping

  1. L - 哈希表的数量。一般来说,增加这个值会增加召回率。
  2. k - 组合成单个散列值的散列函数的数量

我不确定Lk是否实际上是br

谁能解释如何从 Elastiknn 调整 L 和 k 以获得所需级别的 jaccard 类似文档的最大准确性?

标签: elasticsearchduplicatesminhashlsh

解决方案


我不确定 L 和 k 是否实际上是 b 和 r。

您能否提供更精确的 b 和 r 定义?例如“大小”是模棱两可的,“桶数”可能与“哈希表数”的含义相同,但也许不是?我简单地看了看,在 minhash 的上下文中没有看到任何对 b 和 r 的引用。

谁能解释如何从 Elastiknn 调整 L 和 k 以获得所需级别的 jaccard 类似文档的最大准确性?

参数调整通常是一个反复试验的过程。一般准则如文档中所述:

  • 增加 L 通常会增加召回率。L 表示哈希表的数量。一个向量的每个哈希表只能有一个哈希值。如果创建更多哈希表,则会增加两个向量在其中一个表中共享哈希值的概率。这也称为“或放大”。
  • 增加 k 通常会提高精度。k 表示连接在一起以创建单个哈希表的单个哈希值的哈希数。您连接的哈希越多,两个向量具有相同连接值的可能性就越小。这也称为“与放大”

这种 OR 和 AND 放大模式适用于 Elastiknn 中使用的所有 LSH 算法。LSH 和放大在这里更全面地介绍:https ://elastiknn.com/posts/tour-de-elastiknn-august-2021/


推荐阅读