协同过滤中最常用到的三种相似度的测量方法比较

person系数:

sim(i,j)=corri,j=uU(Ru,iRi¯¯¯¯¯¯)(Ru,jRj¯¯¯¯¯¯)(Ru,iRi¯¯¯¯¯¯)2(Ru,jRj¯¯¯¯¯¯)2 s i m ( i , j ) = c o r r i , j = ∑ u ∈ U ( R u , i − R i ¯ ) ( R u , j − R j ¯ ) ( R u , i − R i ¯ ) 2 ( R u , j − R j ¯ ) 2

针对两个向量而言,要求两个向量中的各个分量的含义是一致的,更通俗的说是针对两个变量,通过计算这两个变量的person系数来衡量两个变量之间的相似性,在协同过滤中也就是计算两个item之间的相关程度。

余弦相似度:

sim(i,j)=cos(i⃗ ,j⃗ )=i⃗ j⃗ i⃗ 2×j⃗ 2 s i m ( i , j ) = c o s ( i → , j → ) = i → ⋅ j → ‖ i → ‖ 2 × ‖ j → ‖ 2

针对两个向量而言,对两个向量的分量的含义是否一致并没有特别的要求。也就是说,在得分矩阵中,既可以是针对item之间的相关程度的衡量,也可以是两个用户之间的相关程度的衡量。

修正余弦相似度:

sim(i,j)=uU(Ru,iRi¯¯¯¯¯¯)(Ru,jRj¯¯¯¯¯¯)(Ru,iRi¯¯¯¯¯¯)2(Ru,jRj¯¯¯¯¯¯)2 s i m ( i , j ) = ∑ u ∈ U ( R u , i − R i ¯ ) ( R u , j − R j ¯ ) ( R u , i − R i ¯ ) 2 ( R u , j − R j ¯ ) 2

  • 修正余弦相似度 & 余弦相似度 的区别:
    在余弦相似度上进行修正后得到修正余弦相似度,修正余弦相似度提出的前提:对于有些用户来说3分以上已经是属于喜欢的范畴了,但是对于有些用户而言4分以上才是喜欢的范畴,因此在计算的时候以用户的平均打分作为中心化标准进行修正每个用户在已有打分的item上的打分(忽略了未打分的item)。

  • person系数 & 修正余弦相似度 的区别:
    person中心化的标准是该item的打分均值
    修正余弦相似度是该user的打分均值

  • 余弦相似度 & person系数与修正余弦相似度 的区别:
    余弦相似度计算时包括了用户所有信息,也就是说包括缺省的打分信息(缺省的地方赋0值)
    person系数与修正余弦相似度进行计算时只包括了两个用户都进行了打分的item上的信息(忽略缺省的地方)

你可能感兴趣的:(算法)