一个minhash算法需要多少个哈希函数

菲克斯

我热衷于尝试实施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)?

托马斯·W

差不多..但是28%是“误差估计”,这意味着报告的测量值经常不准确+/- 28%。

这意味着所报告的78%的度量很容易仅来自50%的相似性。或者50%的相似性很容易被报告为22%。对我来说,听起来不够准确,无法满足业务期望。

从数学上讲,如果要报告两位数,则第二位应该有意义。

为什么要将哈希函数的数量减少到12个?“ 200个哈希函数”的真正含义是,为每个带状疱疹/字符串一次计算一个质量不错的哈希码-然后应用200个廉价,快速的转换,以强调某些因素/将某些位放在最前面。

我建议结合按位旋转(或混排)和XOR操作每个哈希函数可以将旋转组合一定数量的位,然后对随机生成的整数进行XOR。

这既“扩展”了min()函数在位周围的选择性,又使min()最终选择了什么值。

旋转的理由是,“ min(Int)”将在256个值中进行255次选择,仅在8个最高有效位中进行选择。仅当所有高位相同时,低位才会对比较产生任何影响..因此,扩展可能会有用,以避免过多地强调木瓦中的一个或两个字符。

XOR的基本原理是,按位旋转(ROTR)本身可以在50%的时间内(当0位从左边移入时)收敛到零,这将导致“单独的”哈希函数显示不理想的值趋于同时趋于零的趋势-因此,他们过度倾向于最终选择相同的带状疱疹,而不是独立的带状疱疹。

有一个非常有趣的有符号整数的“按位”怪癖,其中MSB为负,但随后的所有位均为正,这使得旋转趋势趋于收敛,而对于有符号整数则不那么明显-对于无符号整数,这是显而易见的无论如何,仍必须在这些情况下使用XOR。

Java具有内置的32位哈希码。而且,如果您使用Google Guava库,则可以使用64位哈希码。

感谢@BillDimm的投入和坚持,指出XOR是必要的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

一个 VPC 中需要多少个子网

来自分类Dev

MATLAB函数需要多少个参数?

来自分类Dev

MATLAB函数需要多少个参数?

来自分类Dev

创建一个函数,查找有多少个质数,直到给定的整数

来自分类Dev

我的算法中确定一个字符串需要多少个字母替换为另一个字符串的字谜的算法有何缺陷?

来自分类Dev

一个向量可以有多少个参数?

来自分类Dev

一个对象可以处理多少个键值对?

来自分类Dev

一台PC需要多少个风扇?

来自分类Dev

更快的算法来计算一个范围内的特定整数可整除多少个数字

来自分类Dev

更快的算法来计算一个范围内的特定整数可整除多少个数字

来自分类Dev

一个注册日期使用多少个字节?

来自分类Dev

需要安装多少个Jolokia代理?

来自分类Dev

我的网站需要多少个VPS?

来自分类Dev

需要多少个MongoDB集合

来自分类Dev

systemd需要多少个单位文件

来自分类Dev

需要多少个Hive动态分区?

来自分类Dev

每个节点需要多少个突触?

来自分类Dev

jQuery:在一个jQuery对象上可以调用多少个函数(方法链接)是否有限制?

来自分类Dev

一个MongoDB中一个集合可以拥有多少个文档?

来自分类Dev

atexit()已注册了多少个函数?

来自分类Dev

需要写一个if语句,根据用户输入的总KG确定需要多少个50KG和10KG的袋子

来自分类Dev

.net词典使用多少个哈希桶?

来自分类Dev

多少个XUSER

来自分类Dev

一个类android中可以使用多少个异步任务?

来自分类Dev

一个元素水平和垂直适合多少个等宽字符?

来自分类Dev

为一个HTTP Servlet创建了多少个实例

来自分类Dev

我怎么知道一个指针中有多少个空闲位?

来自分类Dev

一个流程应用程序中可以运行多少个AsyncTask

来自分类Dev

可以知道一个AVFrame有多少个AVPackets吗?

Related 相关文章

  1. 1

    一个 VPC 中需要多少个子网

  2. 2

    MATLAB函数需要多少个参数?

  3. 3

    MATLAB函数需要多少个参数?

  4. 4

    创建一个函数,查找有多少个质数,直到给定的整数

  5. 5

    我的算法中确定一个字符串需要多少个字母替换为另一个字符串的字谜的算法有何缺陷?

  6. 6

    一个向量可以有多少个参数?

  7. 7

    一个对象可以处理多少个键值对?

  8. 8

    一台PC需要多少个风扇?

  9. 9

    更快的算法来计算一个范围内的特定整数可整除多少个数字

  10. 10

    更快的算法来计算一个范围内的特定整数可整除多少个数字

  11. 11

    一个注册日期使用多少个字节?

  12. 12

    需要安装多少个Jolokia代理?

  13. 13

    我的网站需要多少个VPS?

  14. 14

    需要多少个MongoDB集合

  15. 15

    systemd需要多少个单位文件

  16. 16

    需要多少个Hive动态分区?

  17. 17

    每个节点需要多少个突触?

  18. 18

    jQuery:在一个jQuery对象上可以调用多少个函数(方法链接)是否有限制?

  19. 19

    一个MongoDB中一个集合可以拥有多少个文档?

  20. 20

    atexit()已注册了多少个函数?

  21. 21

    需要写一个if语句,根据用户输入的总KG确定需要多少个50KG和10KG的袋子

  22. 22

    .net词典使用多少个哈希桶?

  23. 23

    多少个XUSER

  24. 24

    一个类android中可以使用多少个异步任务?

  25. 25

    一个元素水平和垂直适合多少个等宽字符?

  26. 26

    为一个HTTP Servlet创建了多少个实例

  27. 27

    我怎么知道一个指针中有多少个空闲位?

  28. 28

    一个流程应用程序中可以运行多少个AsyncTask

  29. 29

    可以知道一个AVFrame有多少个AVPackets吗?

热门标签

归档