今天在回复审稿人的问题时,看到一个问题非常有意思。

Why did you choose cosine similarity? Can you please elaborate on the fact that cosine similarity is a correlation, which is greater for objects with similar angles from the origin over the feature values? So the correlation is a similarity index. Euclidean distance is the lowest between objects with the same distance and angle from the origin. So, two objects with the same angle (corr) can have a far distance (Euclidean) from one another.

审稿人问到我们为什么在计算两个向量相似度时采用的是余弦相似度而不是其他相似度计算方法(如欧几里得距离)。

(上面是余弦相似度的定义,两个向量余弦相似度实际等于其几何夹角大小)

事实上,当时论文中选择采用余弦相似度时基本靠感觉,还真没仔细地讨论过余弦相似度这一计算方法的特点 (看来自己的科研严谨度还不够过关,先检讨一下)。

针对这个问题,我上网查询了有关资料,其中 cnblog 的一篇 文章 个人认为写得比较清晰,在醍醐灌顶的同时,顺带把关键信息摘抄在此。

  • 余弦相似度:用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比其他距离度量,余弦相似度更加注重两个向量 在方向上的差异,而非距离或长度上。

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

总结了一下,余弦相似度的特点是:

  • 从方向上区分差异,而对绝对的数值不敏感。

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

余弦相似度更适合于以下数据挖掘工作

  • 计算结果 对用户数据绝对值不敏感,例如在描述用户的兴趣、喜好、或用于情感分析时;

  • 用户数据中的评分值是用户主观的评分结果,换言之,每个用户的评价标准是不一致的,有一些对于「好」的界定标准更为苛刻(给分都偏低),而另一些则对于「好」「不好」的界定则更为宽容。这种情况下,用余弦相似度来计算用户之间的相似度或差异,可以弱化度量标准不统一这一因素。