Minhash 算法 及其应用】的更多相关文章

MinHash是用于快速检测两个集合的相似性的方法.改方法由Andrei Broder(1997)发明,并最初用于搜索引擎AltaVista中来检测重复的网页的算法.它同样可以用于推荐系统和大规模文档聚类中. 我们先介绍Jaccard相似度量.对于两个集合A与B,Jaccard相似性系数可以定义为: 容易知道,Jaccard系数是0-1之间的值.当两个集合越接近,那么该值越接近1:反之跟接近0. 假设h是一个hash function,将A与B的元素映射成一个整数,定义:是集合S中具有最小哈希值…
1.概述     跟SimHash一样,MinHash也是LSH的一种,可以用来快速估算两个集合的相似度.MinHash由Andrei Broder提出,最初用于在搜索引擎中检测重复网页.它也可以应用于大规模聚类问题.   2.Jaccard index       在介绍MinHash之前,我们先介绍下Jaccard index.   Jaccard index是用来计算相似性,也就是距离的一种度量标准.假如有集合A.B,那么,     也就是说,集合A,B的Jaccard系数等于A,B中共同…
1MinHash简介 传统的hash算法只负责将原始内容尽量均匀随机地映射为一个签名值,原理上相当于伪随机数产生算法.传统hash算法产生的两个签名,如果相等,说明原始内容在一定概率下是相等的:如果不相等,除了说明原始内容不相等外,不再提供任何信息,因为即使原始内容只相差一个字节,所产生的签名也很可能差别极大.从这个意义上来说,要设计一个hash算法,对相似的内容产生的签名也相近,是更为艰难的任务,因为它的签名值除了提供原始内容是否相等的信息外,还能额外提供不相等的原始内容的差异程度的信息. M…
背景: 我遇到一个问题,要计算140万商品的杰卡德相似度.如果直接要直接两两计算的话,这计算量根本算不了,而且也没必要. 分析: 在这些商品中很多商品的相似度并不高,也就是说其中达到相似度阈值的商品只占这些商品组合的一小部分.针对这种情况,首先想到的是按照类别,或者商品品牌进行计算,只计算同类别或者同品牌下的相似品. 但是实际执行效果并不理想,分析原因可能有以下两点. 一.不同类别下的商品数目极不均衡,一些类别比较少的只有十几个,而一些类别下的商品数量极大,可能有十万以上. 二.如果按品牌划分则…
来源:http://my.oschina.net/pathenon/blog/65210 1.概述     跟SimHash一样,MinHash也是LSH的一种,可以用来快速估算两个集合的相似度.MinHash由Andrei Broder提出,最初用于在搜索引擎中检测重复网页.它也可以应用于大规模聚类问题.   2.Jaccard index       在介绍MinHash之前,我们先介绍下Jaccard index.       也就是说,集合A,B的Jaccard系数等于A,B中共同拥有的…
给定N个集合,从中找到相似的集合对,如何实现呢?直观的方法是比较任意两个集合.那么可以十分精确的找到每一对相似的集合,但是时间复杂度是O(n2).此外,假如,N个集合中只有少数几对集合相似,绝大多数集合都不相似,该方法在两两比较过程中"浪费了计算时间".所以,如果能找到一种算法,将大体上相似的集合聚到一起,缩小比对的范围,这样只用检测较少的集合对,就可以找到绝大多数相似的集合对,大幅度减少时间开销.虽然牺牲了一部分精度,但是如果能够将时间大幅度减少,这种算法还是可以接受的.接下来的内容…
minhash是一种基于jaccard index 相似度的算法.属于LSH(Location Sensitive Hash)家族中的一员. jaccard index :有两个集合A={a , b , c , d , e } ,B={a , e , f , g},根据jaccard index 来计算两个集合的相似度Jaccard(A,B)=|A∩B| / |AUB|=2/7≍0.2857 当集合较大或者集合数量过多时,直接计算集合交集与并集过于耗时,因此提出了minhash方法. minha…
MinHash 首先它是一种基于 Jaccard Index 相似度的算法,也是一种 LSH 的降维的方法,应用于大数据集的相似度检索.推荐系统.下边按我的理解介绍下MinHash 问题背景 给出N个集合,找到相似的集合对,如何实现呢?直观的方法是比较任意两个集合.当N比较小时,比如K级,Jaccard算法可以在接受的时间范围内完成,比B级,甚至P级,那么需要的时间是不能够被接受的,举例:对于Indeeed美国的网站用户来说(五千万的访问量),在Mahout中的用户间相似度是通过在O(n2)复杂…
问题背景 给出N个集合,找到相似的集合对,如何实现呢?直观的方法是比较任意两个集合.那么可以十分精确的找到每一对相似的集合,但是时间复杂度是O(n2).当N比较小时,比如K级,此算法可以在接受的时间范围内完成,但是如果N变大时,比B级,甚至P级,那么需要的时间是不能够被接受的.比如N= 1B = 1,000,000,000.一台计算机每秒可以比较1,000,000,000对集合是否相等.那么大概需要15年的时间才能找到所有相似的集合! 上面的算法虽然效率很低,但是结果会很精确,因为检查了每一对集…
位姿检索使用了LSH方法,而不使用PNP方法,是有一定的来由的.主要的工作会转移到特征提取和检索的算法上面来,有得必有失.因此,放弃了解析的方法之后,又放弃了优化的方法,最后陷入了检索的汪洋大海. 0:转自wiki:http://en.wikipedia.org/wiki/Locality_sensitive_hashing 以下参考资料仅供参考:LSH理解及相关资料:http://s99f.blog.163.com/blog/static/35118365201262691335382/ 有一…
mahout算法库 分为三大块 1.聚类算法 2.协同过滤算法(一般用于推荐) 协同过滤算法也可以称为推荐算法!!! 3.分类算法 算法类 算法名 中文名 分类算法               Logistic Regression  逻辑回归                       Bayesian  贝叶斯              Support Vector Machines  支持向量机               Perceptron and Winnow  感知器算法    …
from: https://www.cnblogs.com/bourneli/archive/2013/04/04/2999767.html 问题背景 给出N个集合,找到相似的集合对,如何实现呢?直观的方法是比较任意两个集合.那么可以十分精确的找到每一对相似的集合,但是时间复杂度是O(n2).当N比较小时,比如K级,此算法可以在接受的时间范围内完成,但是如果N变大时,比B级,甚至P级,那么需要的时间是不能够被接受的.比如N= 1B = 1,000,000,000.一台计算机每秒可以比较1,000…
Minhash算法及其应用 一.引言 MinHash算法属于Locality Sensitive Hashing,用于快速估计两个集合的相似度.最早由Broder Andrei Z. 在1997年提出,最初在AltaVista搜索引擎中用于在搜索结果中检测并消除重复Web页面.如今广泛应用于大数据集的相似检索.推荐系统.聚类分析等中. Minhash算法 计算两个集合相似度最简单的方法之一是Jaccard距离,其公式如下: 例如集合A = {s1, s2, s3, s4, s5}和B = {s1…
1. 概述 LSH是由文献[1]提出的一种用于高效求解最近邻搜索问题的Hash算法.LSH算法的基本思想是利用一个hash函数把集合中的元素映射成hash值,使得相似度越高的元素hash值相等的概率也越高.LSH算法使用的关键是针对某一种相似度计算方法,找到一个具有以上描述特性的hash函数.LSH所要求的hash函数的准确数学定义比较复杂,以下给出一种通俗的定义方式: 对于集合S,集合内元素间相似度的计算公式为sim(*,*).如果存在一个hash函数h(*)满足以下条件:存在一个相似度s到概…
minHash最小哈希原理 收藏 初雪之音 发表于 9个月前 阅读 208 收藏 9 点赞 1 评论 0 摘要: 在数据挖掘中,一个最基本的问题就是比较两个集合的相似度.通常通过遍历这两个集合中的所有元素,统计这两个集合中相同元素的个数,来表示集合的相似度:这一步也可以看成特征向量间相似度的计算(欧氏距离,余弦相似度).当这两个集合里的元素数量异常大(特征空间维数很大),同时又有很多个集合需要判断两两间的相似度时,传统方法会变得十分耗时,最小哈希(minHash)可以用来解决该问题. 前言 在数…
单分子测序reads(PB)的混合纠错和denovo组装 我们广泛使用的PBcR的原始文章就是这一篇 原文链接:Hybrid error correction and de novo assembly of single-molecule sequencing reads 简介:PBcR里面有一种自纠算法(PacBioToCA),纠错的核心本质就是多重序列比对,为了加快比对速度使用了MHAP算法(MinHash).三代的错误分布不是完全随机的,不要以为错误是均匀分布的!!! 摘要: PB技术可以…
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 上一篇(R语言实现︱局部敏感哈希算法(LSH)解决文本机械相似性的问题(一,基本原理))讲解了LSH的基本原理,笔者在想这么牛气冲天的方法在R语言中能不能实现得了呢? 于是在网上搜索了一下,真的发现了一个叫textreuse的包可以实现这样的功能,而且该包较为完整,可以很好地满足要求. 现在的版本是 0.1.3,最近的更新的时间为 2016-0…
Mahout 包括协同过滤,基于User和Item的推荐:kmeans.Fuzzy-kmeans .Mean shift .Dirichlet process .LDA聚类:奇异值分解:并行频繁项集挖掘:补充的贝叶斯分类.随机森林决策树分类. 一.分类算法 (一)Logistic 回归(SGD) (二)Bayesian (三)SVM (四)Perceptron 和Winnow (五)神经网络 (六)随机森林 (七)受限玻尔兹曼机 (八)Boosting (九)HMM (十)Online Pass…
最小哈希原理介绍 MinHash是基于Jaccard Index相似度(海量数据不可行)的算法,一种降维的方法A,B 两个集合:A = {s1, s3, s6, s8, s9}  B = {s3, s4, s7, s8, s10} MinHash的基本原理:在A∪B这个大的随机域里,选中的元素落在A∩B这个区域的概率,这个概率就等于Jaccard的相似度 最小哈希:   S1 S2 S3 A 1 0 0 B 0 1 0 C 0 0 0 D 1 0 1 行的随机排列转换(也称置换运算)   S1…
minhash 1. 把文档A分词形成分词向量L 2. 使用K个hash函数,然后每个hash将L里面的分词分别进行hash,然后得到K个被hash过的集合 3. 分别得到K个集合中的最小hash,然后组成一个长度为K的hash集合 4. 最后用Jaccard index求出两篇文档的相似度 simhash 1. 把文档A分词形成分词向量L,L中的每一个元素都包涵一个分词C以及一个分词的权重W 2. 对L中的每一个元素的分词C进行hash,得到C1,然后组成一个新的向量L1 3. 初始化一个长度…
文本相似度算法 minhash minhash 1. 把文档A分词形成分词向量L 2. 使用K个hash函数,然后每个hash将L里面的分词分别进行hash,然后得到K个被hash过的集合 3. 分别得到K个集合中的最小hash,然后组成一个长度为K的hash集合 4. 最后用Jaccard index求出两篇文档的相似度 simhash 1. 把文档A分词形成分词向量L,L中的每一个元素都包涵一个分词C以及一个分词的权重W 2. 对L中的每一个元素的分词C进行hash,得到C1,然后组成一个新…
SimHash 事实上,传统比较两个文本相似性的方法,大多是将文本分词之后,转化为特征向量距离的度量,比如常见的欧氏距离.海明距离或者余弦角度等等.两两比较固然能很好地适应,但这种方法的一个最大的缺点就是,无法将其扩展到海量数据.例如,试想像Google那种收录了数以几十亿互联网信息的大型搜索引擎,每天都会通过爬虫的方式为自己的索引库新增的数百万网页,如果待收录每一条数据都去和网页库里面的每条记录算一下余弦角度,其计算量是相当恐怖的. 我们考虑采用为每一个web文档通过hash的方式生成一个指纹…
uber全球用户每天会产生500万条行程,保证数据的准确性至关重要.如果所有的数据都得到有效利用,t通过元数据和聚合的数据可以快速检测平台上的滥用行为,如垃圾邮件.虚假账户和付款欺诈等.放大正确的数据信号能使检测更精确,也因此更可靠. 为了解决我们和其他系统中的类似挑战,Uber Engineering 和 Databricks 共同向Apache Spark 2.1开发了局部敏感哈希(LSH).LSH是大规模机器学习中常用的随机算法和哈希技术,包括聚类和近似最近邻搜索. 在这篇文章中,我们将讲…
B树 1. 简介 在之前我们学习了红黑树,今天再学习一种树--B树.它与红黑树有许多类似的地方,比如都是平衡搜索树,但它们在功能和结构上却有较大的差别. 从功能上看,B树是为磁盘或其他存储设备设计的,能够有效的降低磁盘的I/O操作数,因此我们经常看到有许多数据库系统使用B树或B树的变种来储存数据结构:从结构上看,B树的结点可以有很多孩子,从数个到数千个,这通常依赖于所使用的磁盘的单元特性. 如下图,给出了一棵简单的B树. 从图中我们可以发现,如果一个内部结点包含n个关键字,那么结点就有n+1个孩…
Paxos算法在分布式领域具有非常重要的地位.但是Paxos算法有两个比较明显的缺点:1.难以理解 2.工程实现更难. 网上有很多讲解Paxos算法的文章,但是质量参差不齐.看了很多关于Paxos的资料后发现,学习Paxos最好的资料是论文<Paxos Made Simple>,其次是中.英文版维基百科对Paxos的介绍.本文试图带大家一步步揭开Paxos神秘的面纱. Paxos是什么 Paxos算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一…
K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结合视频学习和书籍基础的笔记所得.本系列文章将采用理论结合实践方式编写.首先介绍机器学习和深度学习的范畴,然后介绍关于训练集.测试集等介绍.接着分别介绍机器学习常用算法,分别是监督学习之分类(决策树.临近取样.支持向量机.神经网络算法)监督学习之回归(线性回归.非线性回归)非监督学习(K-means聚…
1. 什么是红黑树 (1) 简介     上一篇我们介绍了基本动态集合操作时间复杂度均为O(h)的二叉搜索树.但遗憾的是,只有当二叉搜索树高度较低时,这些集合操作才会较快:即当树的高度较高(甚至一种极端情况是树变成了1条链)时,这些集合操作并不比在链表上执行的快.     于是我们需要构建出一种"平衡"的二叉搜索树.     红黑树(red-black tree)正是其中的一种.它可以保证在最坏的情况下,基本集合操作的时间复杂度是O(lgn). (2) 性质     与普通二叉搜索树不…
1. 引言 许多应用都需要动态集合结构,它至少需要支持Insert,search和delete字典操作.散列表(hash table)是实现字典操作的一种有效的数据结构. 2. 直接寻址表 在介绍散列表之前,我们先介绍直接寻址表. 当关键字的全域U(关键字的范围)比较小时,直接寻址是一种简单而有效的技术.我们假设某应用要用到一个动态集合,其中每个元素的关键字都是取自于全域U={0,1,…,m-1},其中m不是一个很大的数.另外,假设每个元素的关键字都不同. 为表示动态集合,我们用一个数组,或称为…
好文集合: 深入浅出React(四):虚拟DOM Diff算法解析 全面理解虚拟DOM,实现虚拟DOM…
以前看过kmp算法,当时接触后总感觉好深奥啊,抱着数据结构的数啃了一中午,最终才大致看懂,后来提起kmp也只剩下“奥,它是做模式匹配的”这点干货.最近有空,翻出来算法导论看看,原来就是这么简单(先不说程序实现,思想很简单). 模式匹配的经典应用:从一个字符串中找到模式字串的位置.如“abcdef”中“cde”出现在原串第三个位置.从基础看起 朴素的模式匹配算法 A:abcdefg  B:cde 首先B从A的第一位开始比较,B++==A++,如果全部成立,返回即可:如果不成立,跳出,从A的第二位开…