计算Minhash的证明

时间:2013-04-03 13:10:00

标签: probability hash-function minhash

我正在阅读MinHash技术来估计2组之间的相似性:给定集合A和B,h是散列函数,hmin(S)是集合S的最小散列,即hmin(S)= min( h(s))s中的s我们有等式:

P(HMIN(A)= HMIN(B))= |A∩B| / |A∪B|

这意味着A的最小散列等于B的最小散列的概率是A和B的Jaccard相似度。

我试图证明上面的等式并得出我自己的证据:对于a∈A和b∈B,使得h(a)= hmin(A)和h(b)= hmin(B)。因此,如果hmin(A)= hmin(B)则h(a)= h(b)。假设散列函数h可以将密钥散列为不同的散列值,所以h(a)= h(b)当且仅当a = b时,其概率为|A∩B| / |A∪B|。但是,我的证明不完整,因为散列函数可以为不同的键返回相同的值。所以,我要求你的帮助,找到一个可以应用的证明,无论哈希函数如何。

4 个答案:

答案 0 :(得分:0)

我无法确定您的确切问题是什么。

但如果您正在寻找一种方法来证明:

  

A的最小散列等于B的最小散列的概率是A和B的Jaccard相似度。

试着看看Mining of Massive Datasets, by Anand Rajaraman and Jeff Ullman

的第3.3.3节

答案 1 :(得分:0)

将哈希函数看作是提供(A∪B)随机排列的一种方法。现在,考虑一下这种排列。

使用您选择的排列 p 将(A∪B)的每个可能元素作为一行放在表格中。还有两列A和B,如下所示:

A = {1, 3, 5, 6}
B = {2, 3, 4, 6}
p = {5, 6, 1, 2, 4, 3}

表格:

   A  B
5  1  0
6  1  1
1  1  0
2  0  1
4  0  1
3  1  1

只有两种类型的行,X:其中A和B是1. Y:其中A!= B

总共有(A∪B)行。但只有(A∩B)Y型的行。第一行是Y型之一的机会是Y /(X + Y)。或Pr [hmin(A)= hmin(B)] =(A∩B)/(A∪B)。

这正是Nilesh所说的那本书所说的,但我试图用另一个例子来解释。

答案 2 :(得分:0)

无论散列函数是什么,都无法证明"只需考虑:您可以使用非常差的哈希函数来产生极其频繁的冲突(例如简单地将所有值一起二进制加法)。 MinHash根本不会接近Jaccard的相似性,但会报告更高的相似性。我所见过的MinHash证明假设哈希冲突很少见,无法实现。

答案 3 :(得分:0)

假设冲突永远不会发生,或者可以忽略不计。您只需为哈希选择一个长度,以使它们碰撞的机会就变得很小。本文介绍了各种数量的项目和哈希大小的界限。 https://en.wikipedia.org/wiki/Birthday_attack