修正余弦相似度与皮尔森相关系数

在数据分析和数据挖掘过程中,通常需要比较个体之间的相似度,比较常用的三种度量方法分别是:余弦相似度、皮尔森相关系数和修正的余弦相似度。

  • 余弦相似度(Cosine Similarity)

相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。用户一项目评分矩阵可以看作是n维空间上的向量,余弦相似性度量方法是通过计算向量间的余弦夹角来度量用户间相似性的。设向量x和y分别表示用户X和用户Y在n维空间上的评分,则用基于协同过滤推荐算法研究X和Y之间的相似性公式为:

  • 修正的余弦相似度(Adjusted Cosine Similarity、调整余弦相似度)

余弦相似度未考虑到用户评分尺度问题,如在评分区间[1-5]的情况下,对用户X来说评分3以上就是自己喜欢的,而对于用户Y,评分4以上才是自己喜欢的。通过减去用户对项的平均评分,修正的余弦相似性度量方法改善了以上问题。计算公式为:

  • 皮尔森相关系数(Pearson Correlation Coefficient)

即相关分析中的相关系数r,分别对X和Y基于自身总体标准化后计算空间向量的余弦夹角。公式如下:

比较

需要注意的一点是修正的余弦相似度与皮尔森相关系数之间的细微差别。我之前也一直以为两个公式一样,只是意义上不同,但是仔细观察可以看到两者的分母是不同的:

修正余弦相似度的分母中计算的是每个用户自己有过评分的所有项目;
皮尔森相关系数的分母中计算的是两个用户共同评过分的项目。

两个公式的分子是相同的,需要针对两个用户共同评过分的项目,分别减去该用户的平均评分来得到相对分数。而每个用户的平均评分分别由每个用户自己所有评过分的项目计算得到。