首页 > 编程语言 >基于MinHash的相似性算法

基于MinHash的相似性算法

时间:2024-11-13 09:59:49浏览次数:1  
标签:哈希 Jaccard 复杂度 集合 算法 MinHash 计算 相似性

原文链接:基于MinHash的相似性算法 – 每天进步一点点

MinHash也称最小哈希式独立排列局部性敏感哈希,是一种非常快速的对两个不同集合进行相似性分析的方法。该算法起初主要用于在搜索引擎中的重复网页检查,现在也应用于解决大规模聚类问题。

1.与Jaccard相似性关系

在采用基于Jaccard算法进行形似度计算时,需要两两计算交集和并集,这在海量数据中是一件比较困难的事情,空间复杂度和时间复杂度都会比较大,因此需要引人新的相似性算法-MinHash,用于解决计算量较大的问题。
采用MinHash 可以减小过程中的计算复杂度。其基本原理为有两个集合A、B,在集合A与集合B的并集中,选取的元素同时也在集合4和集合B中的概率等于Jaccard的相似度。例如,对于集合A={a,b,c},集合B=(b,c,d},根据Jaccard相似系数计算出集合4和集合B的Jaccard相似度为:2÷4=0.5;计算过程中AUB={a,b,c,d},ANB={b,c},将并集中随机选取一个元素,属于交集的概率为0.5,即与Jaccard相似度相等。

2.计算网页文本相似性过程

整个计算流程依然基于Jaccard 相似系数,不同的是引入了哈希函数的机制。例如,针对哈希函数H,对集合中的每个元素进行哈希计算,如集合A中包含10个元素,则对10个元素均进行哈希计算,选取出计算过程中哈希值最小的元素。采用同样的哈希函数H,对集合B中的每个元素也进行哈希计算,选取出哈希值最小的元素,在集合A和集合B中最小哈希值相等的概率即为集合A和集合B的相似度。
上述过程仅采用了一组哈希函数H,重复上面的步骤,用N个哈希函数进行对每组元素进行哈希计算,每个哈希函数产生的最小哈希值均进行存放,则对集合A而言,产生了N个最小哈希值,对于集合B而言,也产生了N个最小哈希值,现在只需要对集合A产生的最小哈希值集合以及集合B产生的最小哈希值集合计算其Jaccard相似度即可。如图4-1所示,集合A{a,b,c,d}计算出的哈希值为11和8,集合B{c,d,e}计算出的哈希值为11和9。

计算集合A和集合B的Jaccard 相似度,通过两个哈希方法之后,转换为求新集合的Jaccard 相似度。试想,集合A和集合B都非常庞大的情况下,如果进行交集和并集计算,性能上则存在隐患。通过N个哈希函数求得最小哈希值的方式,虽然不能非常精确的计算出集合的相似度,但是MinHash的方法使结果非常接近最终的结果,并且计算复杂度大大降低。

通过上述流程可以降低计算的复杂度,因为MinHash实质也是一种降维技术,降维后的数据计算复杂度会减少很多。

标签:哈希,Jaccard,复杂度,集合,算法,MinHash,计算,相似性
From: https://www.cnblogs.com/longkui-site/p/18543241

相关文章

  • 占道经营识别算法
    占道经营识别算法通过街道两旁的监控摄像头实时获取画面,占道经营识别算法针对指定区域进行占道经营物品的识别。该算法能够准确辨识出店家使用的餐桌、游摊小贩的餐车以及遮阳伞等物品,并判断其是否违规。占道经营识别算法一旦检测到商贩占道经营,系统会自动发出报警信号,提醒管理人......
  • 基于维特比算法的概率路径
    原文链接:基于维特比算法的概率路径–每天进步一点点维特比算法(Viterbialgorithm)是一种动态规划算法,它用于寻找最有可能产生观测事件序列的一维特比路径一隐含状态序列,特别是在马尔可夫信息源上下文和隐马尔可夫模型中。1应用实例:推断天气状态古代中国人通过天气状态的变化规......
  • 基于FCM模糊聚类算法的图像分割matlab仿真
    1.算法运行效果图预览(完整程序运行后无水印) 2.算法运行软件版本matlab2022a 3.部分核心程序(完整版代码包含详细中文注释和操作步骤视频)I_mean=func_median(Im1,Lwin);%%将图像灰度按列排列X=Im1(:);X_spatial=I_mean(:);%初始化......
  • 代码随想录算法训练营第二十三天| leetcode39. 组合总和、leetcode40.组合总和II、lee
    1leetcode39.组合总和题目链接:39.组合总和-力扣(LeetCode)文章链接:代码随想录视频链接:带你学透回溯算法-组合总和(对应「leetcode」力扣题目:39.组合总和)|回溯法精讲!_哔哩哔哩_bilibili思路:跟之前差不多,就是将他的循环改一下,但是我发现有重复的数值了,不知道如何删除1.1自......
  • C++常见函数的基础算法
    string字符串常用函数substring()string.length()&&string.size()string.find()string.replace()string.substr()string初始化和声明#include<bits/stdc++.h>usingnamespacestd; intmain(){stringstr1;//空字符串stringstr2="hello,w......
  • 单链表算法题(数据结构)
    1.反转链表https://leetcode.cn/problems/reverse-linked-list/description/题目:看到这个题目的时候我们怎么去想呢?如果我们反应快的话,应该可以想到我们可以从1遍历到5然后依次头插,但是其实我们还有更好的办法,就是利用三个指针,如何使用呢?反转链表OJ假如结构体已经给出t......
  • 浅谈贪心算法
    浅谈贪心算法贪心算法,指在问题求解时,每一步都做出“当前看起来最好的决策”。它没有固定的算法模板,灵活性强。在OI领域,无论是入门组,还是省选,NOI,或多或少都出过贪心题。可见贪心的重要性之大。使用贪心算法解决问题,必须满足“无后效性”。满足“无后效性”不一定当前的决策......
  • 2024年最新优化算法:海市蜃楼算法(Fata Morgana Algorithm ,FATA)介绍
    海市蜃楼算法(FataMorganaAlgorithm,FATA)是2024年提出一种新型的群体智能优化算法,它的设计灵感来源于自然现象中的海市蜃楼形成过程。FATA算法通过模仿光线在不均匀介质中的传播方式,提出了两种核心策略——海市蜃楼光过滤原则(MLF)和光传播策略(LPS)——来优化搜索过程,增强算法......
  • 利用阿燑目算法训练平台实现智能任务:从数据集到算法部署的完整流程
    引言在当今的数字化时代,算法训练已成为实现智能化任务的关键环节。通过专业的算法训练平台,如阿燑目算法训练平台,用户可以轻松完成从数据准备到算法部署的整个流程,实现各种智能应用。本文将基于阿燑目算法训练平台的使用手册,详细介绍如何利用算法训练平台完成智能任务。一、创......
  • 算法训练平台的内心独白
    我是阿燑目算法训练平台,大家都说我很神秘,今天就要好好和大家絮叨絮叨到底是怎么个事儿!在数字时代,算法训练平台成为了小微科技工作者在日常工作中不可或缺的一部分。我在这里分享我的一些服务和经验,希望能给你带来一些启发。网址:https://hub.atm008.com/首先,我提供图像集自......