一种基于minhash的集合相似度计算方法和系统技术方案

技术编号:15391265 阅读:67 留言:0更新日期:2017-05-19 04:40
本发明专利技术公开了一种基于minhash的集合相似度计算方法和系统,包括:利用哈希函数将集合中的各元素映射为具有m个比特位长度的第一哈希值,建立2

A method and system for computing similarity of set based on minhash

The invention discloses a method and a system for calculating set similarity based on minhash, which comprises the following steps: using a hash function to map each element in the set to a first hash value with the length of M bit bits, and establishing 2

【技术实现步骤摘要】
一种基于minhash的集合相似度计算方法和系统
本专利技术涉及计算机处理
,特别涉及一种基于minhash的集合相似度计算方法和系统。
技术介绍
给定两个集合A、B,Jaccard相似度是一种广泛用来描述集合之间的相似度的算法,其公式表示如下:对N个集合计算两两之间的相似度,需要计算N(N-1)/2次,复杂度为O(n2)。单次Jaccard相似度的计算速度则会比较关键,特别是如果集合比较大,计算Jaccard相似度则会相对比较耗时,对计算资源也会有更大的压力,比如,根据两个节目之间的观众来计算节目之间的相似度,每个节目可能都会有百万量级的观众,此时Jaccard相似度的计算就会比较费时。最小哈希(minhash)算法则是一种用来近似计算集合间的Jaccard相似度的方法,它首先对每个集合计算minhash签名(或者minhash指纹),相当于是对集合的降维,最后可以基于minash签名来近似计算jaccard相似度。minash算法的工作原理大致如下。例如:五个元素{a,b,c,d,e}的整体,有四个集合S1={a,d},S2={c},S3={b,d,e},S4={a,c,d}分别取部分元素组成集合,这四个集合用矩阵表示如下:其中,每行代表一个元素,每列代表一个集合,集合中有该元素为1,没有该元素则为0。如果对上述矩阵的行排列随机打散重新排列,如,重排后的行序列为:b、e、a、d、c,将这个随机排列的过程定义为一个minhash函数(映射),可记为h(x),重新排列后的矩阵如下:根据重新排列后的阵列来计算各集合对应的minhash值,每个集合对该函数的minhash值为重新排列之后的第一个非0的行,即h(S1)=a,h(S2)=c,h(S3)=b,h(S4)=d。minhash值和Jaccard相似度有着重要的联系:两个集合的随机的一个行排列的minhash值相等的概率与两个集合的Jaccard相似度相等,因而可以通过对行排列进行多次随机排列来来近似计算Jaccard相似度。假设生成n组minhash函数,H={h1,h2,...,hn},对于每个函数hi,集合A的minhash值为hi(A),对集合A的这一组minhash的值形成了该集合的minhash签名,对于集合A,B,相似度的计算公式为:其中,minhashsim(A,B)为结合A、B的相似度,q为A、B两集合的minhash值相等的个数。通过minhash来近似计算Jaccard相似度的方式可以让大大加快集合相似度的计算速度,且minhash函数越多就会越接近jaccard相似度。然而,在实际操作中发现,minhash的函数的生成过程是对行进行随机重新排列的过程,如果行数(整体元素数量)比较多,则计算过程会比较复杂,与此同时,这种重新的排列需要的计算时间也会越长,即minhash签名过程耗时较长。
技术实现思路
本专利技术旨在至少解决现有技术中存在的技术问题之一,提出了一种基于minhash的集合相似度计算方法和系统。为实现上述目的,本专利技术提供了一种基于minhash的集合相似度计算方法,包括:利用哈希函数将集合中的各元素映射为具有m个比特位长度的第一哈希值,其中,m为整数;建立2k个类组,每个类组对应一个标签,该标签为具有k个比特位长度的第二哈希值,不同类组对应的标签不同,其中,k为整数,且k小于m;对于任意一个集合,将该集合中的各元素对应的第一哈希值分配至与其前k个比特位相同的标签所对应的类组中;根据分配结果确定该集合对应于每个类组的最小哈希值,其中,若该类组中存在至少一个第一哈希值,则将该类组中最小的一个第一哈希值的后m-k个比特位的值作为该集合对应于该类组的最小哈希值,若该类组中不存在第一哈希值,则该集合对应于该类组的最小哈希值记为NULL;将该集合对应于每个类组的最小哈希值构成数组,所述数组作为该集合的最小哈希签名;根据任意两个集合的最小哈希签名计算该两个集合的相似度。可选地,所述两个集合分别为第一集合A和第二集合B;第一集合的最小哈希签名记为H(A)H(A)={h1(A),h2(A),……,hn(A)}第二集合的最小哈希签名记为H(B)H(B)={h1(B),h2(B),……,hn(B)}其中,hi(A)为第一集合对应第i个类组的最小哈希值,i为大于等于1且小于等于n的整数,n取值等于2k;计算两个集合的相似度的步骤具体包括:根据第一集合的最小哈希签名H(A)和第二集合的最小哈希签名H(B),统计第一集合的最小哈希签名H(A)中满足hi(A)等于hi(B)且hi(A)不等于NULL的hi(A)的数量,记为s;根据第一集合的最小哈希签名H(A)和第二集合的最小哈希签名H(B),统计第一集合的最小哈希签名H(A)中满足hi(A)等于hi(B)且hi(A)等于NULL的hi(A)的数量,记为p;根据如下公式:计算第一集合A和第二集合B的相似度minhashsim(A,B)。可选地,所述利用哈希函数将集合中的各元素映射为具有m个比特位长度的第一哈希值的步骤之后还包括:对于任意一个集合,将该集合中各元素对应的所述第一哈希值按照由小至大或由大至小的顺序进行排序。为实现上述目的,本专利技术还提供了一种基于minhash的集合相似度计算系统,包括:哈希映射模块,用于利用哈希函数将集合中的各元素映射为具有m个比特位长度的第一哈希值,其中,m为整数;类组建立模块,用于建立2k个类组,每个类组对应一个标签,该标签为具有k个比特位长度的第二哈希值,不同类组对应的标签不同,其中,k为整数,且k小于m;分配模块,用于对于任意一个集合,将该集合中的各元素对应的第一哈希值分配至与其前k个比特位相同的标签所对应的类组中;最小哈希值确定模块,用于根据分配结果确定该集合对应于每个类组的最小哈希值,其中,若该类组中存在至少一个第一哈希值,则将该类组中最小的一个第一哈希值的后m-k个比特位的值作为该集合对应于该类组的最小哈希值,若该类组中不存在第一哈希值,则该集合对应于该类组的最小哈希值记为NULL;最小哈希签名生成模块,用于将该集合对应于每个类组的最小哈希值构成数组,所述数组作为该集合的最小哈希签名;相似度计算模块,用于根据任意两个集合的最小哈希签名计算该两个集合的相似度。可选地,所述两个集合分别为第一集合A和第二集合B;第一集合的最小哈希签名记为H(A)H(A)={h1(A),h2(A),……,hn(A)}第二集合的最小哈希签名记为H(A)H(B)={h1(B),h2(B),……,hn(B)}其中,hi(A)为第一集合对应第i个类组的最小哈希值,i为大于等于1且小于等于n的整数,n取值等于2k;所述相似度计算模块包括:第一统计单元,用于根据第一集合的最小哈希签名H(A)和第二集合的最小哈希签名H(B),统计第一集合的最小哈希签名H(A)中满足hi(A)等于hi(B)且hi(A)不等于NULL的hi(A)的数量,记为s;第二统计单元,用于根据第一集合的最小哈希签名H(A)和第二集合的最小哈希签名H(B),统计第一集合的最小哈希签名H(A)中满足hi(A)等于hi(B)且hi(A)等于NULL的hi(A)的数量,记为p;计算单元,用于根据如下公式:计算第一集合A和本文档来自技高网
...
一种基于minhash的集合相似度计算方法和系统

【技术保护点】
一种基于minhash的集合相似度计算方法,其特征在于,包括:利用哈希函数将集合中的各元素映射为具有m个比特位长度的第一哈希值,其中,m为整数;建立2

【技术特征摘要】
1.一种基于minhash的集合相似度计算方法,其特征在于,包括:利用哈希函数将集合中的各元素映射为具有m个比特位长度的第一哈希值,其中,m为整数;建立2k个类组,每个类组对应一个标签,该标签为具有k个比特位长度的第二哈希值,不同类组对应的标签不同,其中,k为整数,且k小于m;对于任意一个集合,将该集合中的各元素对应的第一哈希值分配至与其前k个比特位相同的标签所对应的类组中;根据分配结果确定该集合对应于每个类组的最小哈希值,其中,若该类组中存在至少一个第一哈希值,则将该类组中最小的一个第一哈希值的后m-k个比特位的值作为该集合对应于该类组的最小哈希值,若该类组中不存在第一哈希值,则该集合对应于该类组的最小哈希值记为NULL;将该集合对应于每个类组的最小哈希值构成数组,所述数组作为该集合的最小哈希签名;根据任意两个集合的最小哈希签名计算该两个集合的相似度。2.根据权利要求1所述的集合相似度计算方法,其特征在于,所述两个集合分别为第一集合A和第二集合B;第一集合的最小哈希签名记为H(A)H(A)={h1(A),h2(A),……,hn(A)}第二集合的最小哈希签名记为H(B)H(B)={h1(B),h2(B),……,hn(B)}其中,hi(A)为第一集合对应第i个类组的最小哈希值,i为大于等于1且小于等于n的整数,n取值等于2k;计算两个集合的相似度的步骤具体包括:根据第一集合的最小哈希签名H(A)和第二集合的最小哈希签名H(B),统计第一集合的最小哈希签名H(A)中满足hi(A)等于hi(B)且hi(A)不等于NULL的hi(A)的数量,记为s;根据第一集合的最小哈希签名H(A)和第二集合的最小哈希签名H(B),统计第一集合的最小哈希签名H(A)中满足hi(A)等于hi(B)且hi(A)等于NULL的hi(A)的数量,记为p;根据如下公式:计算第一集合A和第二集合B的相似度minhashsim(A,B)。3.根据权利要求1所述的集合相似度计算方法,其特征在于,所述利用哈希函数将集合中的各元素映射为具有m个比特位长度的第一哈希值的步骤之后还包括:对于任意一个集合,将该集合中各元素对应的所述第一哈希值按照由小至大或由大至小的顺序进行排序。4.一种基于minhash的集合相似度计算系统,其特征在于,包...

【专利技术属性】
技术研发人员:李鹏陆承恩
申请(专利权)人:北京酷云互动科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1