如何在估算文件之间的jaccard相似度时确定c的上限?

时间:2017-11-23 04:24:04

标签: bigdata similarity locality-sensitive-hash minhash

让我们说我在O(D * sqrt(D))时间内预处理了一百万份文件(计算使用minhash的签名),其中D是文件数量。当我给出查询文档时,我将在O(sqrt(D))时间内返回百万个预处理文档中的第一个,使得jaccard相似度大于或等于,例如0.8。

如果没有类似于查询文档的文档足以达到该分数,我将返回具有至少c * 0.8(其中c <1)的相似性的文档,概率至少为1 - 的1 / e ^ 2。如何找到这个minhash方案的C的最大值?

1 个答案:

答案 0 :(得分:0)

您的复杂性/时间顺序听起来不正确。计算文档的细线(签名)应大致为O(n),其中n是特征(例如单词或带状疱疹)的数量。

将所有相似文档查找到给定文档(估计相似性高于给定阈值)应该大致为O(log(n)),其中n是候选文档的数量。

(估计的).8 jaccard最小相似度的文档将至少有80%的散列匹配给定文档。您尚未为我们定义 c e ,所以我无法告诉您最低下限是多少-我会留给您-但您可以轻松通过一次有效地实现此目标:

一张一张地处理所有基础文档的哈希。对于每个哈希,请在哈希字典中查找共享该哈希的所有其他文档。对找到的每个文档进行统计,以了解它共享多少个哈希。一旦这些计数之一达到哈希总数的80%,您便找到了中奖文件并可以暂停计算。但是,如果所有计数都没有达到.8阈值,则继续进行到底。然后,您可以选择标价最高的文档,并确定文档是否超过了最低阈值。