我很想尝试实现minhashing以找到接近重复的内容.http://blog.cluster-text.com/tag/minhash/有一个很好的写作,但是有一个问题是你需要在文档中的带状符号中运行多少哈希算法才能获得合理的结果.
上面的博客文章提到了200个散列算法.http://blogs.msdn.com/b/spt/archive/2008/06/10/set-similarity-and-min-hash.aspx将100列为默认值.
显然,随着哈希数量的增加,准确度会有所提高,但有多少哈希函数是合理的?
引用博客
很难让我们的相似性估计误差小于[7%]因为统计采样值上的误差条缩放 - 将误差条减半,我们需要四倍的样本.
这是否意味着将哈希数减少到12(200/4/4)之类的结果会导致错误率为28%(7*2*2)?
我正在用Java编写一个minhashing算法,它要求我生成任意数量的随机散列函数(在我的情况下为240个散列函数),并通过它运行任意数量的整数(目前为2000).
为了做到这一点,我一直在为240个散列函数中的每一个生成随机数a,b和c(从1到2001的范围).然后,我的哈希函数返回h =((a*x)+ b)%c,其中h是返回值,x是通过它运行的整数之一.
这是随机散列的有效实现,还是有更常见/可接受的方式来实现它?
这篇文章提出了类似的问题,但我仍然对答案的措辞感到困惑: Minhash实现如何为排列找到哈希函数