原文地址:https://blog.csdn.net/xituget/article/details/81043476
传统的推荐算法(如协同过滤、基于物品的推荐等)采用的相似度计算公式主要有:余弦夹角、欧氏距离、杰卡德系数和皮尔森相关系数等,那么这些方法具体有哪些差异,在推荐算法中该如何选择,下面将着重基于这两个方面进行分析说明。
1)余弦夹角 和 欧氏距离
在向量空间中,任意两点(设为A、B)间的关系可通过余弦夹角和欧式距离来衡量,其中余弦夹角衡量的是A和B在空间方向上的差异,欧式距离是A和B在空间位置上的差异。因此,两者的差异主要体现:
(1)欧氏距离从向量间的绝对距离区分差异,计算得到的相似度值对向量各个维度内的数值特征非常敏感,而余弦夹角从向量间的方向夹角区分差异,对向量各个维度内的数值特征不敏感;
(2)余弦夹角公式对向量进行了归一化处理,解决了向量个体间存在度量标准不统一问题产生的计算偏差;
(3)余弦夹角的值域区间为[-1,1],相对于欧式距离的值域范围[0,正无穷大],能够很好的对向量间的相似度值进行了量化。
因此,在推荐系统场景下,推荐算法大都采用余弦夹角进行用户(或物品)的相似度计算。当然,欧氏距离能够体现个体数值特征的绝对差异,一般用于需要从维度的数值大小中体现差异的相关度分析(如从用户行为指标分析用户价值的相似度或差异)。
2)余弦夹角 和 皮尔森相关系数
皮尔森相关系数是用于衡量任意两个变量间线性相关程度的统计量,系数值越大相关性越强,值域范围为[-1,1]。在推荐系统的用户(或物品)间相似度计算过程中,余弦夹角和皮尔森相关系数的定义公式相似,具体如下:
(1)余弦夹角公式:
(2)皮尔森相关系数公式:
从两者的定义公式可知,相对于余弦夹角公式,皮尔森相关系数公式对变量进行了均值化(或去中心化)处理,其好处是减少变量个体的数值差异对变量间相似度的影响。举个例子,用户A习惯对所有物品的评分范围为[1,3],而用户B习惯对所有物品的评分范围为[3,5],因各自评分数值标准的差异,采用余弦夹角公式计算两者的相似度比较低,但实际上两者的相似度是很高的。因此,在实际的推荐系统中,大都采用皮尔森相关系数公式或者下面的修正余弦夹角公式。
(3)修正的余弦夹角公式(以计算物品i和j的相似性为例):
其中i,j代表两个物品,u代表用户,Ru,i代表用户u对物品i的评分,Ru ̄代表用户u对所有物品评分的均值,对比发现,修正的余弦夹角公式与皮尔森相关系数公式非常相似。
(4)皮尔森相关系数公式(以计算物品i和j的相似性为例):
Ri 表示第i个物品打分的平均值
两者的差异主要在评分均值的计算方式上,修正的余弦夹角计算的是用户的评分均值,皮尔森相关系数计算的是物品的评分均值。可以推断,在计算用户i和j的相似性时,两者的计算公式是完全一致的。
3)余弦夹角 与 杰卡德系数
杰卡德系数是衡量两个集合间相似性的常用公式,其定义如下:
从杰卡德系数的计算公式可知,其限制了A和B的取值范围(0或1),当然,将A或B进行向量化后即可进行余弦夹角公式进行计算,相对余弦夹角,杰卡德系数计算公式的优势是其计算复杂度不高。因此在推荐系统中,若样本的特征值为二值(0或1),大都采用杰卡德系数或者其推广公式,比如在基于物品的协同过滤推荐算法中计算物品间的相似度。