MinHash原理与应用

简介: MinHash首先它是一种基于 Jaccard Index 相似度的算法,也是一种LSH的降维的方法,应用于大数据集的相似度检索、推荐系统。下边按我的理解介绍下MinHash。 举例A,B 两个集合: A = {s1, s3, s6, s8, s9} B = {s3, s4, s7, s8,

MinHash首先它是一种基于 Jaccard Index 相似度的算法,也是一种LSH的降维的方法,应用于大数据集的相似度检索、推荐系统。下边按我的理解介绍下MinHash。

举例A,B 两个集合:

A = {s1, s3, s6, s8, s9}

B = {s3, s4, s7, s8, s10}

根据Jaccard Index公式,A,B的相似度 S(A,B) = |A∩B|/|A∪B| = 2/8 = 0.25

当然直接计算两个集合的交集与并集,是很耗计算资源的,特别是在海量数据场景下不可行。

假如,我们随机从两个集合中各挑选一个元素s(A)、s(B),刚好这两个无素相同的概率是多少呢?

从图上看,这个概率其实等同于,在A∪B这个大的随机域里,选中的元素落在A∩B这个区域的概率,这个概率就等于Jaccard的相似度!这就是MinHash的基本原理。

基于这一原理,我们找一个随机的哈希函数h,对集合的每一个元素作哈希运算,比如集合A,可以算出5个hash值,因为是随机的,这5个hash值里值最小的那个元素,对于A集合中所有元素概率都是均等的。同样方法从B中取最小hash值,2个minhash相等的概率就是集合的相似度了。

我们只需要找到N个哈希函数,对集合生成一组minhash,算两个集合的相似度,也就是这2组minhash中,交集/并集了。

这个计算相对容易了,因为每个集合的元素数变成了常数N,也就是说,MinHash其实是一种降维技术。

在Mahout中用MinHash作聚类,则是将每个minhash相同的向量聚集为一个簇,哈希函数个数为10的情况下,有一个hash相同就表示至少有20%的相似度了。

你可能注意到,这个相似度其实没有说元素的权重,另一个问题是哈希函数个数,理论上次数越多,会越准确,但是计算复杂度也越高,实际应用需要找一个平衡点。

我在一个推荐人的场景——将几十万优质用户按相似度推荐给几千万的普通用户,就是先用MinHash筛选一次,为每个普通用户推荐一个按MinHash相同个数作排序的、至少跟用户交集的优质用户备选集,再计算用户跟备选集的余弦相似度,找出最相似的TOPN作为推荐。这种方法虽然不是最优解(计算量仍然很大),但是在一个可接受的时间范围内,效果跟两两计算余弦相似取TOPN相比比较接近(通过取样测试,取用户权重最重的TOPN个属性作MinHash计算,这样的结果往在做TOPN的推荐容易接近于基于COS的最优解)。另外因为涉及到两个量级差异比较大的集合的推荐,简单用聚类推荐效果很难达到使用MinHash的方法。

相关文章
|
8月前
|
云安全 安全 Linux
这世界就是个巨大的草台班子-你的飞牛nas中招了吗
飞牛NAS(fnOS)曝出高危路径穿越漏洞,攻击者无需登录即可读取系统文件、用户数据甚至植入恶意程序。虽已修复,但暴露了私有云安全设计的严重短板——NAS不是“智能路由器”,而是家庭服务器,需按服务器标准严管公网暴露、及时升级与权限控制。(239字)
2482 0
|
机器学习/深度学习
【从零开始学习深度学习】23. CNN中的多通道输入及多通道输出计算方式及1X1卷积层介绍
【从零开始学习深度学习】23. CNN中的多通道输入及多通道输出计算方式及1X1卷积层介绍
【从零开始学习深度学习】23. CNN中的多通道输入及多通道输出计算方式及1X1卷积层介绍
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
609 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
|
网络架构 内存技术
OpenPose原理解析
Openpose论文原理总结
1310 0
|
前端开发 API C#
使用Unity 接入 Stable-Diffusion-WebUI的 文生图api 并生成图像
本文介绍了如何将Unity游戏引擎与Stable-Diffusion-WebUI的文生图API相结合,实现在Unity中生成图像的功能。内容包括启动Stable Diffusion的API设置、在Unity中创建脚本与UI配置,以及通过按钮点击事件触发图像生成的详细步骤和测试过程。
使用Unity 接入 Stable-Diffusion-WebUI的 文生图api 并生成图像
|
机器学习/深度学习 算法 大数据
Vision Transformer 必读系列之图像分类综述(三): MLP、ConvMixer 和架构分析(下)
在 Vision Transformer 大行其道碾压万物的同时,也有人在尝试非注意力的 Transformer 架构(如果没有注意力模块,那还能称为 Transformer 吗)。这是一个好的现象,总有人要去开拓新方向。相比 Attention-based 结构,MLP-based 顾名思义就是不需要注意力了,将 Transformer 内部的注意力计算模块简单替换为 MLP 全连接结构,也可以达到同样性能。典型代表是 MLP-Mixer 和后续的 ResMLP。
1810 0
Vision Transformer 必读系列之图像分类综述(三): MLP、ConvMixer 和架构分析(下)
|
机器学习/深度学习 人工智能 大数据
看看AI大佬都开了什么公司 | AI大咖说
看看AI大佬都开了什么公司 【10月更文挑战第6天】
1583 1
|
存储 弹性计算 自然语言处理
基础大模型 vs 应用大模型
基础大模型(如GPT-3、BERT等)通过大量通用数据训练,具备强大的泛化能力。应用大模型则在此基础上进行微调,针对特定任务优化。两者均将知识编码在参数中,而非直接存储原始数据,实现“自然留存”。阿里云提供多种大模型和服务,欢迎体验。
739 0
|
机器学习/深度学习 数据采集 自然语言处理
[GPT-2]论文解读:Language Models are Unsupervised Multitask Learners
[GPT-2]论文解读:Language Models are Unsupervised Multitask Learners
1185 1
|
网络协议 安全 网络安全
Qt 套接字类(QTcpSocket和QUdpSocket)解密:迈向 Qt 网络编程之巅
Qt 套接字类(QTcpSocket和QUdpSocket)解密:迈向 Qt 网络编程之巅
3041 0

热门文章

最新文章