1、余弦距离

余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量。

向量,是多维空间中有方向的线段,如果两个向量的方向一致,即夹角接近零,那么这两个向量就相近。而要确定两个向量方向是否一致,这就要用到余弦定理计算向量的夹角。

余弦定理描述了三角形中任何一个夹角和三个边的关系。给定三角形的三条边,可以使用余弦定理求出三角形各个角的角度。假定三角形的三条边为a,b和c,对应的三个角为A,B和C,那么角A的余弦为:

如果将三角形的两边b和c看成是两个向量,则上述公式等价于:

其中分母表示两个向量b和c的长度,分子表示两个向量的内积。

举一个具体的例子,假如新闻X和新闻Y对应向量分别是:

x1, x2, ..., x6400和

y1, y2, ..., y6400

则,它们之间的余弦距离可以用它们之间夹角的余弦值来表示:

当两条新闻向量夹角余弦等于1时,这两条新闻完全重复(用这个办法可以删除爬虫所收集网页中的重复网页);当夹角的余弦值接近于1时,两条新闻相似(可以用作文本分类);夹角的余弦越小,两条新闻越不相关。

2、余弦距离和欧氏距离的对比

从上图可以看出,余弦距离使用两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比欧氏距离,余弦距离更加注重两个向量在方向上的差异。

借助三维坐标系来看下欧氏距离和余弦距离的区别:

从上图可以看出,欧氏距离衡量的是空间各点的绝对距离,跟各个点所在的位置坐标直接相关;而余弦距离衡量的是空间向量的夹角,更加体现在方向上的差异,而不是位置。如果保持A点位置不变,B点朝原方向远离坐标轴原点,那么这个时候余弦距离 是保持不变的(因为夹角没有发生变化),而A、B两点的距离显然在发生改变,这就是欧氏距离和余弦距离之间的不同之处。

欧氏距离和余弦距离各自有不同的计算方式和衡量特征,因此它们适用于不同的数据分析模型:

欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异。

余弦距离更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦距离对绝对数值不敏感)。

3、杰卡德相似性度量

(1)杰卡德相似系数

两个集合A和B交集元素的个数在A、B并集中所占的比例,称为这两个集合的杰卡德系数,用符号 J(A,B) 表示。杰卡德相似系数是衡量两个集合相似度的一种指标(余弦距离也可以用来衡量两个集合的相似度)。

(2)杰卡德距离

与杰卡德相似系数相反的概念是杰卡德距离(Jaccard Distance),可以用如下公式来表示:

杰卡德距离用两个两个集合中不同元素占所有元素的比例来衡量两个集合的区分度。

(3)杰卡德相似系数的应用

假设样本A和样本B是两个n维向量,而且所有维度的取值都是0或1。例如,A(0,1,1,0)和B(1,0,1,1)。我们将样本看成一个集合,1表示集合包含该元素,0表示集合不包含该元素。

p:样本A与B都是1的维度的个数

q:样本A是1而B是0的维度的个数

r:样本A是0而B是1的维度的个数

s:样本A与B都是0的维度的个数

那么样本A与B的杰卡德相似系数可以表示为:

此处分母之所以不加s的原因在于:

对于杰卡德相似系数或杰卡德距离来说,它处理的都是非对称二元变量。非对称的意思是指状态的两个输出不是同等重要的,例如,疾病检查的阳性和阴性结果。

按照惯例,我们将比较重要的输出结果,通常也是出现几率较小的结果编码为1(例如HIV阳性),而将另一种结果编码为0(例如HIV阴性)。给定两个非对称二元变量,两个都取1的情况(正匹配)认为比两个都取0的情况(负匹配)更有意义。负匹配的数量s认为是不重要的,因此在计算时忽略。

(4)杰卡德相似度算法分析

杰卡德相似度算法没有考虑向量中潜在数值的大小,而是简单的处理为0和1,不过,做了这样的处理之后,杰卡德方法的计算效率肯定是比较高的,毕竟只需要做集合操作。

4、调整余弦相似度算法(Adjusted Cosine Similarity)

余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感,因此没法衡量每个维度上数值的差异,会导致这样一种情况:

用户对内容评分,按5分制,X和Y两个用户对两个内容的评分分别为(1,2)和(4,5),使用余弦相似度得到的结果是0.98,两者极为相似。但从评分上看X似乎不喜欢2这个 内容,而Y则比较喜欢,余弦相似度对数值的不敏感导致了结果的误差,需要修正这种不合理性就出现了调整余弦相似度,即所有维度上的数值都减去一个均值,比如X和Y的评分均值都是3,那么调整后为(-2,-1)和(1,2),再用余弦相似度计算,得到-0.8,相似度为负值并且差异不小,但显然更加符合现实。

那么是否可以在(用户-商品-行为数值)矩阵的基础上使用调整余弦相似度计算呢?从算法原理分析,复杂度虽然增加了,但是应该比普通余弦夹角算法要强。

参考文献:

[1] 不同相关性度量方法的线上效果对比与分析 http://blog.sina.com.cn/s/blog_4b59de07010166z9.html

[2] 数据挖掘概念与技术 Jiawei Han等

向量点积衡量相似度_余弦距离、欧氏距离和杰卡德相似性度量的对比分析相关推荐

  1. 向量点积衡量相似度_点积相似度、余弦相似度、欧几里得相似度

    看starspace的时候发现它实现了dot和cos两种similarity的度量方式,这里总结一下: 余弦相似度衡量两个向量在方向上的相似性,而不care两个向量的实际长度,A和B的长度即使是一个超 ...

  2. 余弦相似度和余弦距离的计算方式

    余弦相似度,就是计算两个向量间的夹角的余弦值.余弦相似度的取值范围是[-1,1]. 余弦距离就是用1减去这个获得的余弦相似度. 余弦距离的取值范围为[0,2] . 计算余弦相似度,只需要将vec L2 ...

  3. 余弦距离、欧氏距离和杰卡德(Jaccard)相似性度量的比较

    1.余弦距离 余弦距离,也称为余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小的度量. 向量,是多维空间中有方向的线段,如果两个向量的方向一致,即夹角接近零,那么这两个向量就 ...

  4. mysql计算余弦相似度_余弦相似度公式及推导案例

    定义 余弦相似度通过测量两个向量的夹角的余弦值来度量它们之间的相似性.0度角的余弦值是1,而其他任何角度的余弦值都不大于1:并且其最小值是-1.从而两个向量之间的角度的余弦值确定两个向量是否大致指向相 ...

  5. cos相似度算法 余弦距离计算

    定义 余弦距离,也称余弦相似度,是用向量空间中两个向量夹角的余弦值作为衡量两个个体之间差异大小的度量.我们知道在数学领域内,cosθ 的值越接近 1,此时两个向量的夹角 θ 越接近 0度,表明这两个向 ...

  6. 使用TensorFlow实现余弦距离/欧氏距离(Euclideandistance)以及Attention矩阵的计算

    最近在使用tensorflow完成句子相似度建模等任务时常常会用到各种距离的计算,而且有很多论文提出了Attention机制,所以这里就介绍一下如何使用tensorflow实现上述各种功能. 这里首先 ...

  7. 基坑计算理论m法弹性支点法_基坑支护结构弹塑性计算方法与m法的对比分析

    月                      Chinese Journal of Geotechnical Engineering                      Nov.,  2006 ...

  8. 大板加腋 弹性板6计算_弹性板6、弹性板3、弹性模对比分析

    pkpm四种类型的楼板刚度模型:刚性楼板.弹性楼板6.弹性楼板3和弹性膜的计算模型. 刚性楼板模型 其含义是指平面内刚度无限大,内力计算时不考虑平面内变形,与板厚无关,平面外刚度为零,PKPM程序默认 ...

  9. 相似度算法和距离算法

    常见的距离算法和相似度(相关系数)计算方法 查看原文 摘要: 1.常见的距离算法 1.1欧几里得距离(Euclidean Distance)以及欧式距离的标准化(Standardized Euclid ...

最新文章

  1. OFDM专题之子载波间干扰问题(一)
  2. python怎么输入代码-如何编写python代码
  3. python人脸识别环境搭建_人脸识别:Windows10系统环境搭建
  4. 28 MM配置-采购-采购申请-定义凭证类型
  5. IDM最强大的多线程下载器 Internet Download Manager v2021 中文版+超多皮肤
  6. vue将页面导出pdf,vue导出pdf
  7. 一文足矣:Unity行为树
  8. 画费氏数列螺线的代码
  9. 计算机科学 期刊 模板,计算机学报投稿模板.doc
  10. 融资、上市,悦刻又在讲电子烟的未来
  11. java j2ee j2se_Java EE / J2EE与J2SE / JDK版本之间的关联
  12. 【Docker】Failed to get D-Bus connection: Operation not permitted解决
  13. hdu6041仙人掌图
  14. 提前还清房贷的感觉真好
  15. python绘制笛卡尔直角坐标系
  16. echarts-gl中3d曲面UV参数详解
  17. html5 canvas图片缩放,拖拽
  18. 达梦数据交换平台软件DMETL部署
  19. 开通知乎专栏和公众号啦!
  20. 读《史蒂夫•乔布斯传》(二)

热门文章

  1. Excel - 斜线表头制作
  2. 码字 层映射 预编码的概念总结
  3. 华为云ModelArts的使用教程(超详细)
  4. 交换机开启DHCP Snooping
  5. krpano 如何开启调试
  6. ps,pr,3Dmax软件使用经验
  7. python hdf5_Python HDF5属性
  8. java通过aspose.words将两个word文档合并
  9. camx框架-Camera初始化
  10. php.ini afm,nanoscope analysis(AFM数据处理软件) v1.5 官方安装免费版(附安装教程)