elasticsearch - 如何选择 Elastiknn LSH Jaccard 相似性指标参数 L 和 k ?在我的情况下,我的 minhash 大小 = 100,并且 jaccard Similarity = 0.8
问题描述
我正在尝试使用 Elasticknn 插件检测近乎重复的内容。
我创建了文本文档的 minhash,Minhash 设置大小 = 100
我想使用 Elasticknn 插件应用具有 Jaccard 相似性的 LSH(因为它有这种类型的索引可用,)
根据我对 LSH、Minhash 重复检测算法的了解,根据所需的 jaccard 相似度级别(比如 0.8),我们必须选择
- 桶数b和
- 桶大小r
Elastiknn 提供了一些不同的参数 https://elastiknn.com/api/#jaccard-lsh-mapping
- L - 哈希表的数量。一般来说,增加这个值会增加召回率。
- k - 组合成单个散列值的散列函数的数量
我不确定L和k是否实际上是b和r。
谁能解释如何从 Elastiknn 调整 L 和 k 以获得所需级别的 jaccard 类似文档的最大准确性?
解决方案
我不确定 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/
推荐阅读
- javascript - 使用 JavaScript 扩展 HTML 单选按钮
- javascript - Onload Function Not Triggering Function,没有控制台错误
- javascript - 在 Google Chrome 中使用 javascript 关闭当前选项卡
- javascript - 等待返回 addeventlistener 不能为空
- batch-file - 代码完成后批量删除变量的值
- angular - 为什么在Angular11中成功注册并登录用户后,我没有使用router.navigate()重定向?
- php - 视频广告创建不允许 YoutubeVideoAssets
- firebase - 流管道在本地函数调用中工作正常,但在 Firebase 中运行函数时出错
- angular - Windows 更新后的未知浏览器查询
- azure-ad-b2c - 通过 sendgrid 发送电子邮件的 ADB2C 自定义策略