在数据挖掘中,有一个比较基本的问题,就是比较两个集合的相似度。关于这个问题,最笨的方法就是用一个两重循环来遍历这两个集合中的所有元素,进而统计这两个集合中相同元素的个数。但是,当这两个集合里的元素数量非常庞大时,同时又有很多个集合需要判断两两之间的相似度时,这种方法就呵呵了,对内存和时间的消耗都非常大。因此,为了解决这个问题,数据挖掘中有另一个方法。

Jaccard相似度

在介绍具体算法之前,我们首先来了解一个概念:Jaccard相似度。

Jaccard相似度是用来描述两个集合间的相似度的,其计算方法如下(假设有两个集合A,B):,也就是A与B交集的元素个数除以A与B并集的元素个数;为了书写方便,下面的讨论中我们将集合A和B的Jaccard相似度记为SIM(A,B);

例如:上图中有两个集合A,B;A中有4个元素,B中有5个元素;A,B的交集元素个数为2,并集元素个数为7,所以SIM(A,B) = 2 / 7;

k-Shingle

假如我们把一整篇文章看成一个长的字符串,那么k-shingle就是这篇文档中长度为k的任意字符子串。所以,一篇文章就是很多个不同的k-shingle的集合。

例如:现在我们有一篇很短的文章,文章内容为abcdabd,令k=2,那么这篇文章中所有的2-shingle组成的集合为{ab,bc,cd,da,bd},需要注意的是,ab在文章中出现了两次,但是在集合中只出现一次,这是因为集合中不能有相同的元素。

尽管用k-shingle的方式来表示每篇文章,然后再通过判断每篇文章中shingle集合的相同元素的数量,就可以得出文章的相似度;但是,一篇文章得到的shingle集合的元素个数是很多的。假定k=4,那么每个shingle中就会有4个字符,存在内存中就至少需要4个字节;那么要以这种方式存下一篇文章的所有shingle,需要的内存空间大概是原文档大小的4倍(假设

minHash(最小哈希)和LSH(局部敏感哈希)相关推荐

  1. KD树和LSH局部敏感哈希

    文档结构 文档表示 距离度量 KD树 原理 构建 查询 复杂度 KD树的KNN KD树的逼近KNN 不适用高维数据 LSH LSH潜在的问题 LSH算法 复杂度 概率逼近 多表 文档结构 文档表示 词 ...

  2. LSH(局部敏感哈希算法)实现文本的相似性比对

    源码见github:https://github.com/smallsmallcase/lsHash 和LSH算法类似,朴素贝叶斯算法也能实现相近的分类功能,朴素贝叶斯算法给新浪新闻分类的代码见:ht ...

  3. R语言实现︱局部敏感哈希算法(LSH)解决文本机械相似性的问题(一,基本原理)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 私认为,文本的相似性可以分为两类:一类是机械相 ...

  4. 最近邻和K近邻及其优化算法LSH(局部敏感哈希,Locality Sensitive Hashing) Kd-Tree

    引言 在处理大量高维数据时,如何快速地找到最相似的数据是一个比较难的问题.如果是低维的小量数据,线性查找(Linear Search)就可以解决,但面对海量的高维数据集如果采用线性查找将会非常耗时.因 ...

  5. transformer中attention计算方式_Reformer: 局部敏感哈希、可逆残差和分块计算带来的高效...

    最近要开始使用Transformer去做一些事情了,特地把与此相关的知识点记录下来,构建相关的.完整的知识结构体系, 以下是要写的文章,本文是这个系列的第九篇: Transformer:Attenti ...

  6. 推荐系统局部敏感哈希解决Embedding最近邻搜索问题

    文章目录 快速Embedding最近邻搜索问题 聚类.索引搜索最近邻 聚类搜索最近邻 索引搜索最近邻 局部敏感哈希及多桶策略 局部敏感哈希的基本原理 局部敏感哈希的多桶策略 局部敏感哈希代码实现 快速 ...

  7. 在茫茫人海中发现相似的你——局部敏感哈希(LSH)

    一.引入 在做微博文本挖掘的时候,会发现很多微博是高度相似的,因为大量的微博都是转发其他人的微博,并且没有添加评论,导致很多数据是重复或者高度相似的.这给我们进行数据处理带来很大的困扰,我们得想办法把 ...

  8. mysql 查找相似数据_局部敏感哈希LSH(Locality-Sensitive Hashing)——海量数据相似性查找技术...

    一. 前言 最近在工作中需要对海量数据进行相似性查找,即对微博全量用户进行关注相似度计算,计算得到每个用户关注相似度最高的TOP-N个用户,首先想到的是利用简单的协同过滤,先定义相似性度量(cos,P ...

  9. LSH︱python实现局部敏感哈希——LSHash(二)

    关于局部敏感哈希算法,之前用R语言实现过,但是由于在R中效能太低,于是放弃用LSH来做相似性检索.学了Python发现很多模块都能实现,而且通过随机投影森林让查询数据更快,觉得可以试试大规模应用在数据 ...

最新文章

  1. 视频分辨率无损放大软件 Topaz Video Enhance AI 2.3.0
  2. 你确定你理解内存分配吗?
  3. vue-cli3全面配置详解
  4. 【机器学习】机器学习从零到掌握之六 -- 教你使用验证分类器测试算法
  5. 进攻即是最好的防御!19个练习黑客技术的在线网站
  6. IClient for js开发之地图的加载
  7. mysql insert s锁_MySQL 死锁套路:唯一索引 S 锁与 X 锁的爱恨情仇
  8. mysql not in优化_98%的人不知道的MySQL优化器原理
  9. 顶会|关于数据库顶级会议 SIGMOD 2018,看这一篇就够了!
  10. Scrum:The Definition of Done —— 作业有没有写完呢?
  11. 专业Excel组件Spire.XLS 教程:在Excel中合并单元格
  12. NI视觉视觉软件简介
  13. 原子结构示意图全部_原子结构示意图全部-原子结构示意图规律口诀-前20号元素的原子结构示意图...
  14. vmware8.0.4序列号及汉化包安装
  15. 算法学习(十九)——A3C
  16. getParameterValues和getParameter的区别
  17. Java之——被人遗忘的Java8的八个功能
  18. 互联网公司去年到今年的大批裁员,难道程序员没有未来了吗?
  19. LTspice使用第三方spice模型进行仿真
  20. Android Rect相关方法

热门文章

  1. 知识表示学习(一):TransE
  2. Object Detection in Foggy Conditions by Fusion of Saliency Map and YOLO
  3. Unity教程之-制作闪亮的星星Star(一):动态的创建Mesh
  4. YOLO-YOLOV5训练结果认识初探记录
  5. 联盛德WMIOT602(基于W600 SoC)WiFi模块使用心得
  6. 论文:Language-Aware Fine-Grained Object Representation for Referring Expression Comprehension
  7. 新唐单片机使用Keil下载出现*** Error: Flash Verify Failed at 0x00xx(错误码不固定)已解决(但未完全解决)
  8. sjtu oj 1034 二哥的金链
  9. 预报提速10000倍以上!华为云盘古气象大模型研究成果登上《自然》正刊 | 美通社头条...
  10. docker应用:搭建私有云盘