我正在阅读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|。但是,我的证明不完整,因为散列函数可以为不同的键返回相同的值。所以,我要求你的帮助,找到一个可以应用的证明,无论哈希函数如何。
答案 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