原载:http://cool.sinaapp.com
作者:junGle
原文网址:http://1.cool.sinaapp.com/?p=893

minhash是判断文档相似的一种方法。这里结合一个具体的示例来简单过一下:

一、全集

{a,b,c,d,e},S1={a,d}, S2={c}, S3={b,d,e}, S4={a,c,d}。

具体含义:比如  S1,S2,S3,S4分别是4个文档,a,b,c,d,e可以是相应的文档特征(分词、singling切片等)。

二、特征矩阵
【原始行排列-abcde】

三、minhash

构建这样一个签名指纹,由大量计算结果组成,每次计算特征矩阵的最小哈希。

处理:

【行排列转换】  beadc

上述红圈表示是都是MinHash位置。 h(S1)=a, h(S2)=c, h(S3)=b, h(S4)=a.

取集合S1, S2(可以是现实中的那个文档)进行比较:

结论:经随机排列转换之后得到的两个最小哈希值相等的概率, 等于两个集合的Jaccard相似度

推导证明:

在特征矩阵中(稀疏矩阵),S1/S2之间的关系可以分三类:

  1. X: 两列值均为1
  2. Y:一列值为0,一列值为1
  3. Z:两列值为0

关系X的数目有x行,关系Y的数目有y行,关系Z的数据有z行。 大部分为Z类,可忽略。S1和S2相似的概率,通过jaccard相似可计算得:

SIM(S1,S2)=x/(x+y)

h(S1)=h(S2)这个事件的概率的计算又是如何?  对所有行进行随机排列转换,从上到下顺序处理,可知:

情况a.在碰到Y类型的行之前碰到X类型的行的概率:x/(x+y)

[换个方式理解,即:共有x+y行,第一次出现X的概率]

如果第一行属于x类,那么一定有 h(S1)=h(S2)

情况b.首先碰到Y类型的行,值为1的集合(S1/S2其中之一)的那个集合的最小哈希为当前行。值为0的那个集合(另一个)接着扫描下去,如果首先碰到Y类型,那么此时h(S1) ≠h(S2)

因而可知: h(S1)=h(S2)这个事件的概率,就等于x/(x+y), 也就是Jaccard相似度。

四、minhash签名矩阵

上面分析的,只是minhash的一个基本概念。要真正拿来使用,需要进行随机n个排列

对于单个集合S,每个排列最小哈希函数h1,h2,…hn.

S的最小哈希签名向量:  [h1(S), h2(S), ..., hn(S)]  (用列向量表示)

对于一系列集合(多个,假设m个),它的特征矩阵为M。基于M构建一个签名矩阵 (每列对应一个集合的最小哈希签名向量)  nxm阶

————————————————————————————–

【问题1.行号随机排列的实现?】

随机哈希函数实现。要进行n次重排列,即随机选择n个哈希函数h1,h2, … ,hn.  SIG(i,c)为签名矩阵中第i个哈希函数在第c列上的元素。

对行r进行处理:

  • 1.计算 h1(r), h2(r), …, hn(r)
  • 2.对每列c进行如下操作:
  • 2.a) 如果c在第r行为0, 什么都不做
  • 2.b) 如果c在第r行为1,对于每个i=1, 2, …, n,将SIG(i,c)置为原来的(SIG(i,c)和hi(r)中的较小值,即   MIN(SIG(i,c), hi(r))

例如:

得到签名相量之后, 我们可以基于集合(列向量)之间Jacard相似度(即认为minhash相等)去判断集合是否相似。

SIM(S1,S4)=1.0

而根据原始上图,可知两者真实的Jaccard相似度为2/3.

注意:签名矩阵之间的一致程度只是真实jaccard相似度的一个估计值。

在大规模数据情况下,估计值和真实值相似(本例规模太小)

MinHash (最小哈希)相关推荐

  1. minHash最小哈希原理

    minHash最小哈希原理 收藏 初雪之音 发表于 9个月前 阅读 208 收藏 9 点赞 1 评论 0 摘要: 在数据挖掘中,一个最基本的问题就是比较两个集合的相似度.通常通过遍历这两个集合中的所有 ...

  2. minHash最小哈希

    LSH算法简介 在介绍min-hash算法之前,我们必须先简单介绍一下LSH(局部敏感哈希 Locality Sensitive Hashing)的概念. LSH(局部敏感哈希 Locality Se ...

  3. minHash(最小哈希)和LSH(局部敏感哈希)

    在数据挖掘中,有一个比较基本的问题,就是比较两个集合的相似度.关于这个问题,最笨的方法就是用一个两重循环来遍历这两个集合中的所有元素,进而统计这两个集合中相同元素的个数.但是,当这两个集合里的元素数量 ...

  4. 最小哈希 minhash

    最小哈希 维基百科,自由的百科全书 跳到导航跳到搜索 在计算机科学领域,最小哈希(或最小哈希式独立排列局部性敏感哈希)方法是一种快速判断两个集合是否相似的技术.这种方法是由Andrei Broder  ...

  5. python文件查重_文件查重 我使用的是面向局部敏感的最小哈希签名的方法进行文档查重 联合开发网 - pudn.com...

    文件查重 所属分类:其他 开发工具:Python 文件大小:39KB 下载次数:7 上传日期:2017-12-20 16:45:32 上 传 者:lala_ 说明:  我使用的是面向局部敏感的最小哈希 ...

  6. 最小哈希Min-hashing理解

    最小哈希Min-hashing理解 1. Jaccard ​ 自然文本可以表示成集合,而集合又可以表示成高维的数据,集合除了表示文本,还可以表示图中的顶点.对于集合来说,应用较为广泛的距离或者相似度度 ...

  7. [转]文本相似性算法:simhash/minhash/余弦算法

    数据挖掘之lsh(局部敏感hash) minhash.simhash 在项目中碰到这样的问题: 互联网用户每天会访问很多的网页,假设两个用户访问过相同的网页,说明两个用户相似,相同的网页越多,用户相似 ...

  8. 海量数据相似度搜索,如相似的网页、图像、文章、query 等相似性搜索

    参考资料: https://blog.csdn.net/icvpr/article/details/12342159 局部敏感哈希(Locality-Sensitive Hashing, LSH)方法 ...

  9. minhash算法检索相似文本_文本去重算法:Minhash/Simhash/Klongsent

    日前接到一个对名言警句这种短文本进行去重的小任务,下图是几个重复文本的示例: 很直观的结论就是重复度越高的文本,具有更多重复的词汇.一个最直接的去重思路可以描述为:将文本进行分词处理,统计各文本词汇的 ...

最新文章

  1. C#----DataGridView控件60招(一) [转]
  2. mac 安装swoole
  3. Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析
  4. 标 题: 腾讯面试题目(PHP程序员)
  5. 第八次课作业(采购管理、信息与配置管理)
  6. 打jar时包含所有依赖(maven-assembly-plugin)
  7. 日记 [2007年01月24日]服务器加强安全
  8. 智慧赋能黔货出山 丰收节交易会·李喜贵:贵州农业数字化
  9. java web环境_java web
  10. 光伏补贴新政出台 投资机会解析
  11. Android音乐播放器demo
  12. Redis 下载安装教程 及 客户端可视化工具
  13. html中加入点击事件,html中的点击事件
  14. 工单、工艺路线及工作中心的表结构
  15. 公有云、私有云及混合云应用场景辨析
  16. HTML制作虾米音乐,最新虾米音乐电台调用代码
  17. 数据可视化④:大学生就业可视化呈现
  18. 无线蓝牙耳机哪个价位性价比最高?500以内最好的蓝牙耳机推荐
  19. vim下区块的复制与黏贴
  20. 新一代智能视频云发展现状分析:五大要素成关键

热门文章

  1. 希尔伯特空间(Hilbert space)
  2. Spring 项目启动错误提示 LoggingApplicationListener
  3. 图像的读取 matlab,Matlab编程环境下图像的读取
  4. Matlab p文件 转换为m文件MATLAB matlab pcode,matlab p
  5. 嵌入式(十四)——Makefile编写及多级目录
  6. 2、虚拟机的快照与克隆
  7. Linux系统e1000e网络驱动源码(最深入)分析过程
  8. Ubuntu Linux 锐捷 ruijie 认证成功 校园网 西电 老校区 新校区
  9. exchange 服务器设置自动答复,如何让EXCHANGE 2010用户邮箱自动回复每一封邮件。...
  10. C++数据库编程 MySQL Connecttor C++增删改查