引言

相似度计算用于衡量对象之间的相似程度,在数据挖掘、自然语言处理中是一个基础性计算。其中的关键技术主要是两个部分,对象的特征表示,特征集合之间的相似关系。在信息检索、网页判重、推荐系统等,都涉及到对象之间或者对象和对象集合的相似性的计算。而针对不同的应用场景,受限于数据规模、时空开销等的限制,相似度计算方法的选择又会有所区别和不同。下面章节会针对不同特点的应用,进行一些常用的相似度计算方法进行介绍。

2向量空间模型

向量空间模型(Vector space model)是应用最广泛的一个基础相似度计算模型,在该模型中,每个对象映射为一个特征向量:

作为一个应用广泛的模型,向量空间模型在现有的很多应用中仍然起着至关重要的作用,也是很多扩展方法的基础。

3 基于hash方法的相似计算

基于hash的相似度计算方法,是一种基于概率的高维度数据的维度削减的方法,主要用于大规模数据的压缩与实时或者快速的计算场景下,基于hash方法的相似度计算经常用于高维度大数据量的情况下,将利用原始信息不可存储与计算的问题转化为映射空间的可存储计算问题,在海量文本重复性判断方面,近似文本查询方面有比较多的应用,google的网页去重[1],google news的协同过滤[2,3]等都是采用hash方法进行近似相似度的计算,比较常见的应用场景Near-duplicate detection、Image similarity identification、nearest neighbor search,常用的一些方法包括I-match,Shingling、Locality-Sensitive Hashing族等方法,下面针对几种常见的hash方法进行介绍。

3.1 minhash方法介绍

Minhash方法是Locality-sensitive hashing[4,5]算法族里的一个常用方法,基本的思想是,对于每一个对象的itemlist,将输入的item进行hash,这样相似的item具有很高的相似度被映射到相同的buckets里面,这样尽量保证了hash之后两个对象之间的相似程度和原来是高相似的,而buckets的数量是远远小于输入的item的,因此又达到降低复杂度的目的。

minhash方法用Jaccard进行相似度的计算方法,则对于两个集合 , 和 的相似性的计算方法为:

当两个集合越相似,则该值越接近1,否则越接近0。用minhash方法,将一个集合映射到[0-R-1]之间的值,以相同的概率随机的抽取一个[0-R-1[的一个排列,依次排列查找第一次出现1的行。

设随机排列为43201(edcab),对于C1列,第一次出现1的行是R4,所以h(C1) = 3,同理有h(C2)=2, h(C3)=4, h(C4)=3。

通过多次抽取随机排列得到n个minhash函数h1,h2,…,hn,依此对每一列都计算n个minhash值。对于两个集合,看看n个值里面对应相等的比例,即可估计出两集合的Jaccard相似度。可以把每个集合的n个minhash值列为一列,得到一个n行C列的签名矩阵。因为n可远小于R,这样在压缩了数据规模的同时,并且仍能近似计算出相似度。

3.2 simhash方法介绍

simhash方法是在大文本重复识别常用的一个方法,该方法主要是通过将对象的原始特征集合映射为一个固定长度的签名,将对象之间的相似度的度量转化为签名的汉明距离,通过这样的方式,极大限度地进行了降低了计算和存储的消耗。

3.2.1 签名计算过程

该方法通过对输入特征集合的计算步骤可以描述如下:

  1. 将一个f维的向量V初始化为0;f位的二进制数S初始化为0;
  2. 对每一个特征:用传统的hash算法对该特征产生一个f位的签名b。对i=1到f:

如果b的第i位为1,则V的第i个元素加上该特征的权重;

否则,V的第i个元素减去该特征的权重。

  1. 如果V的第i个元素大于0,则S的第i位为1,否则为0;
  2. 输出S作为签名。

通过上述步骤将输入的表示对象的特征集合转化为该对象的一个签名,在完成签名之后,度量两个对象的相似度的差异即变成了对量二者的指纹的K位的差异情况。

3.2.2 汉明距离查找优化

对于如何快速查找出某一个签名是否与其存在最大差异不超过K个bit的指纹,Detecting Near-Duplicates for Web Crawling这篇论文中进行了介绍。该查找方法的基本思想是利用空间换时间的方法,该方法的依据是需要查找的两个指纹的差异很小,这样可以通过将原始指纹进行分块索引,如果两个指纹的差异很小,则合理的分块后,根据鸽笼原理,其中存在一定数量的块是一致的,通过利用相同的块进行相似的指纹的召回,只需要比对召回的块中有差异的块的bit差异,这样减少了需要比对的数量,节省了比对的时间开销。

3.3 小结

hash方法的相似度计算的主要应用场景,一般是针对大规模数据进行压缩,在保证效果损失可接受的情况下,节省存储空间,加快运算速度,针对该方法的应用,在目前的大规模的互联网处理中,很多相似度的计算都是基于这种近似性的计算,并取得了比较好的效果。

设随机排列为43201(edcab),对于C1列,第一次出现1的行是R4,所以h(C1) = 3,同理有h(C2)=2, h(C3)=4, h(C4)=3。

通过多次抽取随机排列得到n个minhash函数h1,h2,…,hn,依此对每一列都计算n个minhash值。对于两个集合,看看n个值里面对应相等的比例,即可估计出两集合的Jaccard相似度。可以把每个集合的n个minhash值列为一列,得到一个n行C列的签名矩阵。因为n可远小于R,这样在压缩了数据规模的同时,并且仍能近似计算出相似度。

4 基于主题的相似度计算

传统的BOW(bag-of_words)模型,一般都会建立在特征独立假设的基础上,按照特征向量的匹配情况来度量对象之间的相似度,但是在实际的应用中,很多时候特征之间存在着很多的关联关系,二者在传统的BOW模型中无法解决,在这个基础上,引入了主题的概念,通过主题的思想,建立起基本特征与对象的中间层的关联关系,主题的概念的引入,主要是在原有的基本特征粒度的基础上,引入了更为丰富的隐含层特征,提高了相似性计算的效果,常用的主题分析方法包括Latent Semantic Analysis (LSA) 、 Probabilitistic Latent Semantic Analysis (PLSA)、Latent Dirichlet Allocation ( LDA)。这些方法在分类,聚类、检索、推荐等领域都有着很多的应用,并取得了比较好的效果。下面就LSA及PLSA方法进行简要介绍。

4.1 LSA简介

LSA[6,7]模型认为特征之间存在某种潜在的关联结构,通过特征-对象矩阵进行统计计算,将高维空间映射到低纬的潜在语义结构上,构建出LSA空间模型,从而提取出潜在的语义结构,并用该结构表示特征和对象,消除了词汇之间的相关性影响,并降低了数据维度。增强了特征的鲁棒性

LSA利用奇异值分解来进行计算,数学过程可以表述如下:

对于 的矩阵A,其中m为特征数,n为样本数。令  ,经过奇异值分解,矩阵A可分解成3个矩阵的乘积:

其中,U、V是 和的正交矩阵,分别称为矩阵A的奇异值对应的左、右奇异向量, 的对角矩阵,称为A的奇异标准形,其对角元素为矩阵A的奇异值。奇异值按照递减的排列构成对角矩阵 ,取 中前k个最大奇异值构成 的,取U和V最前面的k列构成的Uk 的Vk,构建A的k-秩矩阵

                                                      (6)

其中,Uk和Vk 中的行向量分别作为特征向量和对象向量,k是降维后的维数。

4.2 plas介绍

PLSA[8,9]模型是由Hofmann提出的用于文本检索的概率生成模型,与相比较于LSA,PLSA是基于概率模型的,并直接引入了潜在class变量 ,下面的用文本处理语言来描述该模型。

选定一篇文档的概率p(d),每篇文档以概率 属于一个主题,而给定一个主题,每一个词以概率 产生。将这个过程形成联合的概率模型表达式:

(7)

(8)

则:

(9)

在PLSA实际的使用过程中,存在着overfit的风险,一般训练过程是通过EM算法,进行模型参数训练,获得p(z|d)、p(w|z)概率。

PLSA和其相关的变形,在分类、聚类、检索等方面,特征相关性计算等方面,获得了广泛的应用,并取得了比较好的效果。

4.2 plas介绍

PLSA[8,9]模型是由Hofmann提出的用于文本检索的概率生成模型,与相比较于LSA,PLSA是基于概率模型的,并直接引入了潜在class变量 z∈Z={Z1…Zk },下面的用文本处理语言来描述该模型。

选定一篇文档的概率p(d),每篇文档以概率p(z|d)属于一个主题,而给定一个主题,每一个词以概率p(w|z) 产生。将这个过程形成联合的概率模型表达式:

在PLSA实际的使用过程中,存在着overfit的风险,一般训练过程是通过EM算法,进行模型参数训练,获得p(z|d)、p(w|z)概率。

PLSA和其相关的变形,在分类、聚类、检索等方面,特征相关性计算等方面,获得了广泛的应用,并取得了比较好的效果。

.3 小结

主题方法的引入,在一定程度上弥补了BOW的假设的独立性,在工业中,主题的方法也越来越多的应用到实际的机器学习中,包括在图像处理领域、传统的分类、聚类、检索等方面,都取得了比较好的效果。

总结

相似度的计算在数据挖掘方面有着广泛的应用,根据不同的应用场景,各种方法各有其优劣特点,对于相似度效果的影响,除了方法本身之外,合理有效的特征的选择和使用也是至关重要的,同时,根据应用场景的不同,选择合理的方法,对于解决问题,有着重要的作用。

参考文献: 

1. G.S. Manku, A. Jain, A.D. Sarma. Detecting Near-Duplicates for Web Crawling. WWW2007, 2007

2. A. Das, M. Datar, A.Garg. Google News Personalization: Scalable Online Collaborative Filtering. WWW2007, 2007

3. http://en.wikipedia.org/wiki/MinHash

4. M. S. Charikar. Similarity estimation techniques from rounding algorithms. STOC’02. 2002

5. http://en.wikipedia.org/wiki/Locality-sensitive_hashing

6. K. Dave, S. Lawrence, and D. Pennock. Mining the peanut gallery: opinion extraction and semantic classification of product reviews. In Proceedings of the 22th International World Wide Web Conference, Budapest, Hungary, 2003

7. http://en.wikipedia.org/wiki/Latent_semantic_analysis

8. T. Hofmann. Probabilistic Latent Semantic Analysis. In Proceedings of the 15th Conference on Uncertainty in AI(1999).

9. Y. M kim, J. F. Pressiot M. R.Amini etc. An Extension of PLSA for Document Clustering. CIKM’08

相似度计算常用方法综述相关推荐

  1. 软件工程java向量相似度计算_向量的相似度计算常用方法9个

    <向量的相似度计算常用方法9个>由会员分享,可在线阅读,更多相关<向量的相似度计算常用方法9个(5页珍藏版)>请在人人文库网上搜索. 1.向量的相似度计算常用方法相似度的计算简 ...

  2. 向量的相似度计算常用方法

    向量的相似度计算常用方法 相似度的计算简介 关于相似度的计算,现有的几种基本方法都是基于向量(Vector)的,其实也就是计算两个向量的距离,距离越近相似度越大.在推荐的场景中,在用户-物品偏好的二维 ...

  3. 中文文本相似度计算工具集

    欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! 一.基本工具集 1.分词工具 a.jieba 结巴中文分词 htt ...

  4. 智慧边缘计算安全综述

    智慧边缘计算安全综述 安星硕,1, 曹桂兴,2, 苗莉,1, 任术波,2, 林福宏,1 1 北京科技大学,北京 100083 2 中国空间技术研究院,北京 100094 引用本文: 安星硕, 曹桂兴, ...

  5. 冯登国院士团队重磅论文!《具体高效的安全多方计算协议综述》解读

    论文作者为中国科学院院士.北京信息科学技术研究院院长.中国科学院软件所客座研究员.博士生导师冯登国教授和密码科学技术国家重点实验室杨糠副教授.本文为开放隐私计算社区整理,分享仅供学习参考,如有转载,请 ...

  6. 深度学习技术选型——文本相似度计算

    目录 背景: 目标: 方案一:直接使用Bert预训练模型生成句向量,再进行相似度计算 方案二:使用DSSM模型 方案三:使用sentenceBert 结论: 背景: 笔者由于在做一个检索式智能对话系统 ...

  7. 结巴分词关键词相似度_中文文本相似度计算工具集

    [磐创AI导读]:前两篇文章中我们介绍了一些机器学习不错的项目合集和深度学习入门资源合集,本篇文章将对中文文本相似度计算工具做一次汇总.喜欢我们文章的小伙伴,欢迎大家点击上方蓝字关注我们的公众号:磐创 ...

  8. 问题对语义相似度计算-参赛总结

    时间段:2018.06.10~2018.07.20 问题对语义相似度计算(从0到0.5+) 短短一个多月的时间,我学到了很多很多东西,从一个呆头小白初长成人. 首先,必须感谢我的导师能给我这个机会从头 ...

  9. iMeta | 张彦琼/许海玉/周雪忠联合开发基于SoFDA病-证-方关联的本体表征、富集分析和相似度计算评价...

    点击蓝字 关注我们 基于SoFDA病-证-方关联的本体表征.富集分析和相似度计算评价 iMeta主页:http://www.imeta.science 方法论文 ● 原文链接DOI: https:// ...

最新文章

  1. 45本互联网圣经级别书籍!包邮送到家!一书在手,天下我有!
  2. Django进阶Model篇001 - mysql 数据库的配置
  3. 探索区块链-挖框体验
  4. python批量下载文件-python使用selenium实现批量文件下载
  5. UA MATH571B 试验设计VI 随机效应与混合效应1
  6. 让串口可以自动分辨一帧数据
  7. CMake Error include could not find load file: AwsCFlags 解決辦法
  8. python 嵌套数组_兴趣是最好的老师,快速入门:十分钟学会python
  9. Quartus II 8.1 详解--有图---图片详解 【1讲】
  10. python中深拷贝和浅拷贝_**Python中的深拷贝和浅拷贝详解
  11. PHP 中 this,self,parent 的区别、用法
  12. 屏幕颜色拾取器 (VC++)
  13. 【098】人民币数字转换大写?
  14. 物联网技术发展前景_3种推动物联网发展的技术
  15. 软件测试的未来:2021年需要关注的15大软件测试趋势
  16. Android车辆运动轨迹大数据采集最佳实践
  17. 【华为OD机试真题 python】羊、狼、农夫过河【2022 Q4 | 100分】
  18. [搬运]从曲断图自动判断下颌智齿发育阶段的深度学习
  19. 问答式网络社区(ASK)
  20. 流量见顶碰上产业疲软 汽车互联网平台走向何处?

热门文章

  1. 基于人脸识别的“带口罩”系统-python完整实现
  2. MATLAB 向量和矩阵
  3. 最长上升子序列(c++图文详解)
  4. 使用.mdf和.ldf文件还原sqlserver数据库
  5. Python解包技巧
  6. 回文数(难度系数:半颗星)
  7. 数据结构之ElemType
  8. SpringBoot HATEOAS用法简介(入门)
  9. 在线分析仪器(二)术语和技术指标
  10. Excel所有批注相关的操作都在这里了。