对比欧氏距离与余弦相似度

欧式距离

欧氏距离就是我们平常所说的距离,如果是平面上的两个点和  ,那么 A 与 B 的欧式距离就是;如果是三维空间中的两个点 和  ,那么 A 与 B 的欧式距离就是;如果推广到高维空间,公式可以类推,再次不再赘述(编辑公式好累……)。欧几里德距离真的是数学加减乘除算出来的距离,因此这就是只能用于连续型变量的原因。

余弦相似度

余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。有一个图可以形象地说明两个概念的差异: 
余弦相似度

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

再举个非常形象简单的关于聚类的例子:

歌手大赛,三个评委给三个歌手打分,第一个评委的打分(10,8,9), 第二个评委的打分(4,2,3),第三个评委的打分(8,10,9),如果采用余弦相似度来看每个评委的差异,虽然每个评委对同一个选手的评分不一样,但第一、第二两个评委对这三位歌手实力的排序是一样的,只是第二个评委对满分有更高的评判标准,说明第一、第二个评委对音乐的品味上是一致的。

因此,用余弦相似度来看,第一、第二个评委为一类人,第三个评委为另外一类。 
如果采用欧氏距离, 第一和第三个评委的欧氏距离更近,就分成一类人了,但其实不太合理,因为他们对于三位选手的排名都是完全颠倒的。

两者各自的适用模型

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

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

两者的计算

关于欧式距离与余弦相似度的计算,在 MATLAB 中都有相应的函数。

D = pdist(X,distance)
  • 1

其中,distance 参数可根据需求来选择,详情可参阅 MATLAB 中 pdist 函数文档: 

这里写图片描述

原文地址:https://blog.csdn.net/huangfei711/article/details/78469614

猜你喜欢

转载自blog.csdn.net/u011089523/article/details/80154642
今日推荐