推荐召回算法---协同过滤

1. 协同过滤—基于行为相似的召回

要实现协同过滤,需要以下几个步骤:

  • 收集用户偏好
  • 找到相似的用户或物品
  • 计算并推荐

1.1 协同过滤算法

1.1.1 相似度计算

在对用户的行为进行分析得到用户的偏好后,可以根据用户的偏好计算相似用户或相似物品,然后基于相似用户或相似物品进行推荐。即基于用户的协同过滤和物品的协同过滤。

关于相似度的计算,现有的几种基本方法都是基于向量(Vector)的,也就是计算两个向量的距离,距离越近则相似度越大。

  • 1.同现相似度
    物品A和物品B的同现相似度公式定义:

w A , B = ∣ ( N ( A ) ⋂ N ( B ) ∣ ∣ N ( A ) ∣ w_{A,B} = {|(N(A)\bigcap N(B)|\over |N(A)|} wA,B=N(A)(N(A)N(B)
分母$ N(A)$是喜欢物品A的用户数
可理解为喜欢物品A的用户中有多少比例的用户也喜欢物品B。 此公式会造成任何物品都与热门物品有很大相似度。

w A , B = ∣ ( N ( A ) ⋂ N ( B ) ∣ ∣ N ( A ) ∣ ∣ N ( B ) ∣ w_{A,B} = {|(N(A)\bigcap N(B)|\over \sqrt {|N(A)||N(B)|}} wA,B=N(A)N(B) (N(A)N(B)
这个公式惩罚了物品B的权重,因此减小了热门物品与很多物品相似的可能性。

  • 2.欧几里得距离
    d ( x , y ) = ∑ ( x i − y i ) 2 d(x,y) = \sqrt {\sum (x_i-y_i)^2} d(x,y)=(xiyi)2
    当用欧几里得距离表示相似度时,采用以下公式进行转换:距离越小,相似度值越大。

s i m ( x , y ) = 1 1 + d ( x , y ) sim(x,y) = {1 \over 1+d(x,y) } sim(x,y)=1+d(x,y)1

  • 3.皮尔逊相关系数

皮尔逊相关系数一般用于计算两个定距变量间的紧密程度,取值范围为[-1,+1]。

p ( x , y ) = ∑ x i y i − n x y ‾ ( n − 1 ) s x s y p(x,y) = {\sum x_iy_i- n \overline{xy} \over (n-1)s_xs_y} p(x,y)=(n1)sxsyxiyinxy

  • 4.Cosin相似度

Cosin相似度被广泛应用于计算文档数据的相似度:
C ( x , y ) = x ⋅ y ∣ ∣ x ∣ ∣ 2 ∣ ∣ y ∣ ∣ 2 = ∑ x i y i ∑ x i 2 ∑ y i 2 C(x,y) = {x \cdot y \over ||x||^2||y||^2}={\sum x_iy_i \over \sqrt{\sum x_i^2} \sqrt{\sum y_i^2}} C(x,y)=x2y2xy=xi2 yi2 xiyi

  • 5.Tanimoto系数

Tanimoto系数也被称为Jaccard系数,是Cosine相似度的扩展,多用于计算文档数据的相似度:

T ( x , y ) = x ⋅ y ∣ ∣ x ∣ ∣ 2 + ∣ ∣ y ∣ ∣ 2 − x ⋅ y = ∑ x i y i ∑ x i 2 ∑ y i 2 − ∑ x i y i T(x,y) = {x \cdot y \over ||x||^2 + ||y||^2 - x \cdot y} = {\sum x_iy_i \over \sqrt{\sum x_i^2} \sqrt{\sum y_i^2} - \sum x_iy_i} T(x,y)=x2+y2xyxy=xi2 yi2 xiyixiyi

1.1.2 推荐计算

  • UserCF
用户/物品 物品A 物品B 物品C 物品D
用户1 ∘ \circ ∘ \circ 推荐
用户2 ∘ \circ
用户3 ∘ \circ ∘ \circ ∘ \circ
  • ItemCF
用户/物品 物品A 物品B 物品C
用户1 ∘ \circ ∘ \circ
用户2 ∘ \circ ∘ \circ ∘ \circ
用户3 ∘ \circ 推荐

1.2 协同过滤推荐算法的实现

猜你喜欢

转载自blog.csdn.net/weixin_44127327/article/details/108504183
今日推荐