MinHash与SimHash

这篇文字主要写MinHash和SimHash的区别、联系、在工业界使用等,不涉及MinHash和SimHash的详细基础介绍,相关资料参考资料里给出。

一、相同点

提到哈希我们想到很多应用,最常见的话就是用于提高查询效率,还可用于加密方面。本篇文章要介绍的MinHash和SimHash由于具有一些特殊的特性在降维,查重和聚类等方面应用广泛。

1.它们都具有一般哈希方法所没有的局部敏感的性质(局部敏感哈希LSH是一类哈希函数)。比如MD5算法会使两个相差不大的文档的哈希结果差异很大,而MinHash和SimHash会使两个相差不大的文档的哈希结果很相似。

-敏感的LSH函数族的公式化描述如下图。其中Sim(x,y)代表x和y两点的相似度。Pr( h(x) = h(y) )表示x和y两点哈希结果相同(产生冲突)的概率。


对于-敏感的LSH函数族,对于近邻搜索问题,查询时间和相关。度量给定LSH的查询效率,值越小越好。

2.它们都有降维的作用。可以将一个高维的向量转化为比如64位的0/1串(称为指纹或者签名都可以)。

二、不同点

1.相关相似度度量介绍

首先讲下Jaccard相似度和余弦相似度联系。如果有一个全集,表示子集,用取值均为0或1向量表示(指示相应元素是否出现)。设:


则余弦相似度为:

Jaccard相似度为:


两者都是常用的相似度度量,所有两者具有相关性。在我们这种情况下余弦相似度和Jaccard相似度关系如下。相当于为Jaccard相似度设定了上下界。在大多数情况下 ,由于一般大小差距不大,上界和Jaccard很接近。而只有相似度较高的情况下,下界才会和Jaccard接近(相似度低的情况下,下界估计很保守)。



 2.效果比较

容易理解,使用MinHash发生冲突的概率等于的Jaccard相似度。根据上面LSH的定义,可以知道,MinHash属于-敏感LSH函数族,基于Jaccard相似度。


而使用SimHash发生冲突的概率怎么计算呢?SimHash可以这么定义:。x和y发生冲突的概率和x和y之间的余弦相似度有关。根据上面LSH的定义,可以知道,SimHash属于-敏感LSH函数族,基于余弦相似度。


对于实际应用中如何选择MinHash还是SimHash的问题,我们是根据判断使用Jaccard相似度还是余弦相似度来判断??我们之前提到使用余弦相似度可以对Jaccard相似度进行上下界的估计。由此我们得到,基于余弦相似度的MinHash属于-敏感LSH族(很出人意料的地方)。根据实验计算的区别发现在binary data的情况下MinHash效率要比SimHash好。

三、两者的应用

这两篇文章有点老(07年WWW),不过里面很多的想法还是值得参考的。

1.谷歌新闻推荐论文中使用到了Min hash。这里涉及推荐,使用用户看过的所有的新闻集合表示用户。这里每个用户可以用一个取值0/1的向量表示(每个维度代表新闻,取值代表是否看过该新闻)。这里选用的方法是Min Hash。文章将Min Hash看作是聚类算法,因为哈希后的不同桶可以看做不同的簇。

具体算法是对用户看过的新闻集合进行随机排列,第一个新闻的序号就是最小哈希的结果。但是由于新闻集合太大,显示的随机排列是不可取的。文章里面用哈希的方法模拟随机排列的过程,将每个新闻哈希到0到N,取哈希结果最小的那篇新闻的序号即可。

2.谷歌网页去重论文中使用到了Sim hash。这里用一个高维向量表示表示一个网页。这里每维度的值是一个实数(不是binary)故选用SimHash。使用SimHash将高维向量降维成64位0/1的指纹。之后文章提出了如何找出指纹库中与给定指纹相差最多3位的所有指纹,查询效率关于时间和空间的权衡,非常有意思。


附录:

1.关于MinHash的资料参见《mining massive dataset》(也就《互联网大规模数据挖掘和分布式数据处理》)中相似项发现一章。

2.《Google News  Personalization : Scalable Online collaborative Filtering》。

3.关于SimHash的资料参见http://wenku.baidu.com/view/7981bb1e59eef8c75fbfb3e0.html。这个是关于网页去重论文《Detecting Near-Duplicates for Web Crawling》的PPT讲解。里面介绍SimHash的slide很清晰的描述了其过程。或者http://www.lanceyan.com/tech/arch/simhash_hamming_distance_similarity.html也说得挺好的。

4.《In Defense of MinHash over SimHash》。该篇文章作者发了包括b-bit 最小哈希和机器学习中特征哈希等的文章,对于工程方面非常有实践意义。

你可能感兴趣的:(哈希相关)