news 2026/6/10 1:13:54

minhash算法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
minhash算法

MinHash(最小哈希)算法是一种在计算机科学中用于快速估计两个集合之间相似度的算法。它由 Andrei Broder 在1997年提出,最初用于搜索引擎中网页去重和聚类。

在大数据环境下,如果直接比对两个海量集合的交集和并集,计算量会呈爆炸式增长。MinHash 的核心思想是:将庞大的集合“压缩”为一个短小的特征向量(签名),通过比对签名来估算原始集合的相似度。


1. 核心数学基础:Jaccard 相似度

在了解 MinHash 之前,需要先知道它所估计的指标——Jaccard 相似度(Jaccard Similarity)

对于两个集合A AAB BB,它们的 Jaccard 相似度定义为:两个集合的交集大小除以并集大小。

J ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ J(A, B) = \frac{|A \cap B|}{|A \cup B|}J(A,B)=ABAB

  • 结果在0 001 11之间。1 11表示集合完全相同,0 00表示完全没有交集。

2. MinHash 的工作原理

MinHash 的巧妙之处在于:利用哈希函数的随机性,将 Jaccard 相似度的计算转化为概率问题。

核心定理

假设有一个随机的哈希函数h hh,它将集合中的元素映射为一个整数。对于集合A AAB BB,它们的所有元素在经过h hh哈希后,最小哈希值相等的概率,正好等于它们的 Jaccard 相似度

P ( min ⁡ ( h ( A ) ) = min ⁡ ( h ( B ) ) ) = J ( A , B ) P(\min(h(A)) = \min(h(B))) = J(A, B)P(min(h(A))=min(h(B)))=J(A,B)

为什么?
想象把A ∪ B A \cup BAB的所有元素随机排列。在这个排列中,第一个出现的元素要么属于A AA(且不属于B BB),要么属于B BB(且不属于A AA),要么属于A ∩ B A \cap BAB(交集)。
只有当第一个出现的元素同时属于A AAB BB(即属于交集)时,min ⁡ ( h ( A ) ) \min(h(A))min(h(A))才会等于min ⁡ ( h ( B ) ) \min(h(B))min(h(B))。因此,相等的概率就是∣ A ∩ B ∣ ∣ A ∪ B ∣ \frac{|A \cap B|}{|A \cup B|}ABAB


3. 算法实现步骤(MinHash Signature)

单个哈希函数只能给出0 00(不相等)或1 11(相等)的结果。为了准确估计相似度,我们需要使用k kk个不同的随机哈希函数(通常k = 100 ∼ 500 k = 100 \sim 500k=100500),为每个集合生成一个长度为k kk签名(Signature)

步骤拆解:

  1. 行特征矩阵化:将所有文档/集合中的元素(比如文本去重中的 单词或 Shingle)作为行,文档作为列,构建一个0 / 1 0/10/1矩阵(1 11表示文档包含该元素)。
  2. 应用k kk个哈希函数:创建k kk个独立的哈希函数h 1 , h 2 , . . . , h k h_1, h_2, ..., h_kh1,h2,...,hk
  3. 计算签名向量:对于每一个文档(列),计算其所有包含的元素(行为1)在各个哈希函数下的最小值。
  • 文档A AA的签名向量 =[ min ⁡ ( h 1 ( A ) ) , min ⁡ ( h 2 ( A ) ) , . . . , min ⁡ ( h k ( A ) ) ] [\min(h_1(A)), \min(h_2(A)), ..., \min(h_k(A))][min(h1(A)),min(h2(A)),...,min(hk(A))]
  1. 估算相似度:对比文档A AA和文档B BB的签名向量,计算它们相同位置元素相等的比例。这个比例就是A AAB BB相似度的极佳估计。

4. 为什么需要 MinHash?(优势)

  • 空间极度压缩:原始文档可能包含数万个单词,而 MinHash 签名只需要几百个整数(比如 200 个整型数字),极大地减少了存储空间。
  • 计算速度飞跃:比对两个几百维的数组是否相等,比比对两个几万词的文本交集要快得多。
  • 大数据利器:由于签名长度固定,可以将海量文本的对比转化为矩阵并行运算,非常适合 MapReduce、Spark 等分布式架构。

5. 经典应用场景

  • 网页去重 / 文本近似查重:搜索引擎(如 Google)在爬取海量网页时,用 MinHash 快速找出内容高度相似的镜像网页或抄袭文章。
  • 推荐系统:计算用户协同过滤中的相似度。如果两个用户看过的电影集合 MinHash 相似度高,就可以互相推荐。
  • 生物信息学:在 DNA 序列比对中,用于快速寻找相似的基因片段。

总结与延伸

MinHash 解决了“单个配对太慢”的问题。但在面对数亿级别的数据时,两两比对签名依然会有O ( N 2 ) O(N^2)O(N2)的复杂度。

因此,在实际工程中,MinHash 通常会配合LSH(局部敏感哈希,Locality-Sensitive Hashing)一起使用。LSH 能够将相似的 MinHash 签名分到同一个“桶”中,让系统只需要比对同一个桶内的文档,从而将时间复杂度降到接近O ( N ) O(N)O(N)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 1:10:58

AI智能体开发路线图:从入门到精通的全栈技能树

Agent开发者的进阶指南 三阶段能力模型全解析 2026年,AI Agent已经从"技术玩具"变成了"生产力刚需"。企业招人不再问"你会不会调API",而是问**“你能不能让Agent自主完成一个业务流程”**。 这条赛道正在疯狂吸收人才&am…

作者头像 李华
网站建设 2026/6/10 1:10:56

从“神圣巧匠”到AI问诊——工匠精神才是临床正道

中医经典《难经》中有这样一段话:“望而知之谓之神,闻而知之谓之圣,问而知之谓之工,切脉而知之谓之巧。”自古以来,人们总是对“神”“圣”“巧”充满向往,认为能够看一眼面色舌象就断病、听一下声音气味就…

作者头像 李华
网站建设 2026/6/10 1:08:06

video设计在高层次综合设计中难题

一、hls擅长的设计 1.关于hls::stream的设计是hls擅长的 2.hls::stream这个类是hls专门创造的,也说明了它就是擅长设计流模式 二、hls不擅长的video格式 1.数字图像中图像经常有vs,hs,de,这种时序接口,使用rtl其实很好设计,但是 在…

作者头像 李华
网站建设 2026/6/10 1:06:57

题解:洛谷 B4496 [GESP202603 一级] 数字替换

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…

作者头像 李华
网站建设 2026/6/10 0:56:32

从理论到实践:如何用40个DSGE模型快速掌握宏观经济建模

从理论到实践:如何用40个DSGE模型快速掌握宏观经济建模 【免费下载链接】DSGE_mod A collection of Dynare models 项目地址: https://gitcode.com/gh_mirrors/ds/DSGE_mod 你是否曾面对复杂的宏观经济模型感到无从下手?🤔 想要学习动…

作者头像 李华