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/ 有一…