- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
?相似数据检测算法分类:?计算机理论?数据结构与算法2011-10-22 22:21?4893人阅读?评论(20)?收藏?举报相似数据检测算法对给定的一对数据序列计算两者之间的相似度([0,1], 1表示完全相同)或距离([0, ), 0表示完全相同),从而度量数据之间的相似程度。相似数据检测在信息科学领域具有非常重要的应用价值,比如搜索引擎检索结果的聚类与排序、数据聚类与分类、Spam检测、论文剽窃检测、重复数据删除、Delta数据编码等应用。正是由于它的重要性,近年来成为了研究的重点,不断有新检测方法涌现并得到评估。其中,Broder提出的shingling算法和Charikar的simhash算法被认为是目前为止最好的算法。对于相似数据检测,最为简单地可以采用类似Unix diff的方法。Unix diff对文档进行逐行对比来检测相似文件,它采用经典的LCS(Longest Common Subsequence,最长公共子串)算法,运用动态规划方法来计算相似性。LCS的含义是同时包含在字符串里的一个最长字符序列,LCS的长度作为这两个字符串相似性的度量。Diff算法以整行作为字符来计算最长公共子串,性能上比字符级的LCS算法快很多。这种方法效率很低,而且只适用文本文件的相似比较,不能直接适用于二进制文件。为此,研究者们提出为每个文档提取一组特征,这样将文件相似性问题转换为集合相似性问题,如基于shingle的计算方法。这种方式的核心思想是为每个文件提取组特征值,以特征值集合来计算相似性,从而降低空间和计算复杂性来提高性能。经过对shingle算法和simhash算法以及笔者基于bloom filter实现算法的分析,相似数据检测算法大致流程如下:(1) 将数据段分解成一组shingle(即子序列或数据块),可以采用定长、变长、单词或段落(文本文件)等分块算法;(2) 为了降低空间和时间计算复杂性,可以对shingle集合进行抽样,比如Min-Wise,Modm,Mins方法;(3) 基于选定的shingle集合为数据文件抽取特征,通常是为每个shingle计算hash值组成的序列作为特征值;(4) 为了降低空间和时间计算复杂性,可以对文件特征进行降维处理,比如simhash和bloom filter;(5) 基于文件特征计算两个数据对象之间的相似性,计算方法有Cosine、Overlap、Dice、Jaccard或Hamming距离。Shingle算法Shingle算法的核心思想是将文件相似性问题转换为集合的相似性问题,集合的相似性度量方法主要有resemblance 和containment两种,其定义如下。?????????????????????????? |shingle(f1, w) ∩ shingle(f2, w)| Rw(f1, f2) = ----------------------------------------------?????????????? ? ? ? ? ? ? |shingle(f1, w) ∪ shingle(f2, w)|????????????? ? ? ? ? ?? ? |shingle(f1, w) ∩ shingle(f2, w)| Cw(f1, f2) = ----------------------------------------------????????????????????????????????????????? |shingle(f1, w)|数量较大时,如果对所有shingle进行相似性处理则系统开销较大,包括内存和CPU资源。这时就可以考虑对shingle集合进行抽样,以降低空间和时间计算复杂性,但同时由于样本覆盖率有限,相似性精确度会有所降低。shingle取样主要有三种方法,即Min-Wise,Modm,和Mins。Min-Wise技术是通过将shingle的长度w和整数值进行映射产生随机哈希的公共集,在此相同的模式下进行随机最小独立置换的采样,从而得到采样集合;Modm 技术是通过在与Min-Wise同样的公共映射集中选择所有模m为0 的哈希值对应的shingle组成取样集合;Mins技术同样也是先将shingle和整数集进行映射,然后从中选择最小s个元素组成取样集合。此外,还可以使用shingle的hash值代表shingle进行相似性计算,能够节省一定计算开销。Simhash算法Shingle算法的空间和时间计算复杂性都比较高,对于大数据集的Simlarity Join问题将难以适用。Charikar的simhash算法的核心思想是用一个b位的hash值来表示文件的特征值,然后使用simhash之间的Hamming距离来衡量相似性。Ham
文档评论(0)