推荐系统学习笔记之四——相似度计算以及权重的重要性

教材:《推荐系统 技术、评估及高效算法》

上一小节:推荐系统学习笔记之三——(基于邻域的)协同过滤算法的公式化、标准化

上一小节我们跳过了 用户之间、物品之间 相似度计算的方法,在这一小节,我们详细叙述常见常用的集中相似度计算方法以及 相似度用户(物品)权重的重要性。

目录:   1、相似度

                       ---(1)、cosine(余弦相似度)

                       ---(2)、Pearson Correlation(皮尔逊相关系数)

                       ---(3)、Adjusted Cosine(改良的余弦相似度)

                      ---(4)、Spearman Rank Correlation(斯皮尔曼等级关联)

                 2、权重的重要性

 

相似度

   ML/DM领域常常用到距离和相似度的概念,在kmeans等聚类算法中,一般都是使用曼哈顿距离、欧氏距离等距离公式,这里我们要了解的是另一种——相似度。

  区分一下距离和相似度,在一个高维空间,两个点之间的距离就是距离。而两个向量是否平行、夹角多少,这就是相似度。

1、cosine(余弦相似度)

    我们高中的时候都学过余弦公式: cos(x_a,x_b) =\frac{x_a^Tx_b}{||x_a|| ||x_b||}

    并且知道它的意义:它不在乎两个向量之间的距离,只在乎两个向量之间的角度,角度越小值越大,相似度越高。    

    在协同过滤中,它被用来计算用户的相似度:

                                CV(u,v)=cos(x_v,x_u)=\frac{\sum _{i\in J_{uv}}r_{ui}r_{vi}}{\sqrt{\sum_{i\in J_u r_{ui}^2} \sum_{j\in J_v r_{vj}^2})}}

 然而在这种情况下存在一个问题,它没有考虑用户u和v的评分均值以及方差之间的差异(也就是我们前一小节的标准化)

 于是Pearson Correlation出场了。

 

2、Pearson Correlation(皮尔逊系数)

  基于用户的PC值计算 用户u和v之间的相似度,r_u^-依然代表用户u的所有评分的平均分:

     PC(u,v)=\frac{\sum _{i\in J_{uv}}(r_{ui}-r_u^-)(r_{vi}-r_v^-)}{\sqrt{\sum_{i\in J_{uv} (r_{ui}-r_u^-)^2} \sum_{j\in J_{uv} (r_{vj}-r_v^-)^2})}}

  同样的,物品i和j之间的相似度计算:

PC(i,j)=\frac{\sum _{u\in U_{ij}}(r_{ui}-r_i^-)(r_{uj}-r_j^-)}{\sqrt{\sum_{u\in U_{ij} (r_{ui}-r_i^-)^2} \sum_{u\in U_{ij} (r_{uj}-r_j^-)^2})}}

 

3、Adjusted Cosine(改良的余弦相似度)

  在一些基于物品的例子中,用户间评分的方差明显要大于物品间评分的方差,而PC(i,j)更关注于物品间的方差,这时候我们使用更关注用户间方差的Adjusted Cosine能够取得更好的效果。

  AC(i,j)=\frac{\sum _{u\in U_{ij}}(r_{ui}-r_u^-)(r_{uj}-r_u^-)}{\sqrt{\sum_{u\in U_{ij} (r_{ui}-r_u^-)^2} \sum_{u\in U_{ij} (r_{uj}-r_u^-)^2})}}

 

4、Spearman Rank Correlation(斯皮尔曼等级关联)

   SRC与PC直接使用评分值来计算不同,它是根据这些评分的排名来进行相似度计算的。

  设k_{ui}为物品i在用户u的所有评分物品中的排名(评分重复的取中间值),以用户相似度为例:

  SRC(u,v)=\frac{\sum _{i\in J_{uv}}(k_{ui}-k_u^-)(k_{vi}-k_v^-)}{\sqrt{\sum_{i\in J_{uv} (k_{ui}-k_u^-)^2} \sum_{j\in J_{uv} (k_{vj}-k_v^-)^2})}}

  公式体现上唯一的区别,就是k代替了r。一般SRC的效果不如PC。

 

权重的重要性

  当用于计算相似度的评分数据比较少的时候,相似度的精准度就会降低,这是显而易见的事情。

  所以我们提出权重:当只有少量评分用于计算时,就会降低相似度重要性的权重

  给出公式:w_{uv}^{'} =\frac{min(|J_{uv}|,\gamma )}{\gamma} * w_{uv}

  gamma是个超参数,gamma越大,代表要求评分矩阵越宽越稠密。

  在文献中发现,一般gamma>=25会显著得提高预测评分的准确性,到50的时候可能得到最好的结果。当然,具体问题需要交叉验证来确定这个最优参数。

你可能感兴趣的:(推荐系统,相似度计算)