基于领域的协同过滤和隐语义模型

基于领域的协同过滤

  • UserCF:需要找到和他行为相似的用户,给他推荐那些用户喜欢的东西
  • ItemCF:需要给他推荐和他已经使用过的物品相似的物品
  • 隐语义模型:还有一种方法,对物品进行分类,给他推荐他喜欢的分类里的其他物品

UserCF

  • 步骤:
  1. 找到和目标用户兴趣相似的用户集合
  2. 找到这个集合中用户喜欢的,且目标用户未使用的物品集合

步骤1的关键就是计算用户之间相似性,给定用户 u u u, v v v,令 N ( u ) N(u) N(u)表示用户曾经有正反馈的物品,可用Jaccard公式计算:
w u v = ∣ N ( u ) ⋂ N ( v ) ∣ ∣ N ( u ) ⋃ N ( v ) ∣ w_{uv}=\frac{|N(u)\bigcap N(v)|}{|N(u)\bigcup N(v)|} wuv=N(u)N(v)N(u)N(v)
可以用余弦相似度计算:
w u v = ∣ N ( u ) ⋂ N ( v ) ∣ ∣ N ( u ) ∣ ⋅ ∣ N ( v ) ∣ w_{uv}=\frac{|N(u)\bigcap N(v)|}{\sqrt{|N(u) |\cdot|N(v)|}} wuv=N(u)N(v) N(u)N(v)
则用户 u u u对物品 i i i的感兴趣程度:
p ( u , i ) = ∑ v ∈ S ( u , k ) ⋂ N ( i ) w u v r v i p(u,i)=\sum_{v \in S(u,k)\bigcap N(i)}w_{uv}r_{vi} p(u,i)=vS(u,k)N(i)wuvrvi
S ( u , k ) S(u,k) S(u,k)包含用户 u u u兴趣最接近的k个用户,N(i)是对物品i有过行为的用户集合, r i r_i ri代表用户 u u u对物品 i i i的感兴趣程度。

  • 用户相似度计算的改进
    w u v = ∑ i ∈ N ( u ) ⋂ N ( v ) 1 l o g ( 1 + ∣ N ( i ) ∣ ) ∣ N ( u ) ∣ ⋅ ∣ N ( v ) ∣ w_{uv}=\frac{\sum_{i \in N(u)\bigcap N(v)}\frac{1}{log(1+|N(i)|)}}{\sqrt{|N(u) |\cdot|N(v)|}} wuv=N(u)N(v) iN(u)N(v)log(1+N(i))1
    该公式通过 1 l o g ( 1 + ∣ N ( i ) ∣ ) \frac{1}{log(1+|N(i)|)} log(1+N(i))1惩罚了用户u和用户v感兴趣列表中热门物品对他们相似度的影响。

ItemCF

  • 步骤:
  1. 计算物品之间的相似度
  2. 根据物品相似度和用户的历史行为给用户生成推荐列表
    物品 i i i与物品 j j j的相似度:
    w i j = ∣ N ( i ) ⋂ N ( j ) ∣ N ( i ) w_{ij}=\frac{|N(i) \bigcap N(j)|}{N(i)} wij=N(i)N(i)N(j)
    为了避免推荐热门商品,改进为:
    w i j = ∣ N ( i ) ⋂ N ( j ) ∣ ∣ N ( i ) ∣ ⋅ ∣ N ( j ) ∣ w_{ij}=\frac{|N(i) \bigcap N(j)|}{\sqrt{|N(i)|\cdot |N(j)|}} wij=N(i)N(j) N(i)N(j)

UserCF和ItemCF的区别

  • UserCF的推荐结果着重于反映和用户兴趣相似的小群体的热点,ItemCF着重于维护用户的历史兴趣。即 UserCF的推荐更社会化,ItemCF的推荐更个性化。
  • UserCF更适合新闻系统:因为新物品出现快,新闻的粒度粗,一般都不会很个性化
  • 而ItemCF在图书,电子商务系统,电影网站更有优势,因为在这些网站中,用户的兴趣是比较持久和固定的

隐语言模型(LFM)

模型

隐语义模型采用基于用户行为统计的自动聚类,LFM通过以下公式计算用户 u u u对物品 i i i的兴趣:
P r e f e r e n c e ( u , i ) = r u i = p u T q i = ∑ f = 1 F p u , k q i , k Preference(u,i)=r_{ui}=p_u^Tq_i=\sum_{f=1}^{F}p_{u,k}q_{i,k} Preference(u,i)=rui=puTqi=f=1Fpu,kqi,k
公式中 p u , k p_{u,k} pu,k q i , k q_{i,k} qi,k是参数, p u , k p_{u,k} pu,k表示用户和第k个隐类的关系, q i , k q_{i,k} qi,k表示第k个隐类和物品i的关系。

采样

  • 推荐系统的数据集分为两种,显示反馈数据集和隐式反馈数据集,
    隐式数据集的特点是只有正样本,没有负样本。
  • 隐式数据集上需要解决的问题就是如何给每个用户生成负样本。

负样本采样应该遵循以下原则:

  • 对每个用户,要保证正负样本的平衡
  • 对每个用户负采样时,要选取那些很热门,而用户却没有行为的物品。

经过采样,可得到一个用户和物品集合, K = { ( u , i ) } K=\{(u,i)\} K={(u,i)},其中如果 ( u , i ) (u,i) (u,i)是正样本,则 r u i = 1 r_{ui}=1 rui=1,否则 r u i = 0 r_{ui}=0 rui=0

求参数

通过最小化损失函数来找到合适的参数 p p p q q q:
C = ∑ ( u , i ) ∈ K ( r u i − r ^ u i ) 2 = ∑ ( u , i ) ∈ K ( r u i − ∑ k = 1 K p u , k q i , k ) 2 + λ ∥ p ∥ 2 + λ ∥ q ∥ 2 C=\sum_{(u,i)\in K}(r_{ui}-\hat{r}_{ui})^2\\ =\sum_{(u,i)\in K}(r_{ui}-\sum_{k=1}^{K}p_{u,k}q_{i,k})^2+\lambda\Vert p\| ^2+\lambda\Vert q\|^2 C=(u,i)K(ruir^ui)2=(u,i)K(ruik=1Kpu,kqi,k)2+λp2+λq2
可以通过梯度下降求解。

缺点

  • LFM在实际应用中有一个困难,它很难实现实时推荐,经典的LFM模型每次训练时都需要扫描所有的用户行为记录,而且LFM的训练需要在数据集K上反复迭代,很耗时。
  • 冷启动问题明显

解决方案(雅虎):
r u i r_{ui} rui的计算分为两个部分:
r u i = x u T y i + p u T q i r_{ui}=x_u^Ty_i+p_u^Tq_i rui=xuTyi+puTqi
其中,yi是根据物品的内容属性直接生成的, x u k x_{uk} xuk是用户u对内容特征 k k k的兴趣程度,用户 x u x_u xu可根据用户历史行为获得。
因此, 对于一个新加入的物品i,可先根据 x u T y i x_u^Ty_i xuTyi 估计用户 u u u对物品 i i i的兴趣,然后几个小时后,再根据 p u T q i p_u^Tq_i puTqi获得准确的预测值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值