隐语义模型:LFM

一、协同过滤推荐算法

协同过滤算法是指基于用户行为数据设计的推荐算法,主要包括:
1.基于邻域的算法:UserCF(基于用户的协同过滤算法)、ItemCF(基于物品的协同过滤算法)
2.隐语义模型:LFM
3.基于图的随机游走算法:PersonalRank
本文主要介绍隐语义模型LFM


二、隐语义模型:LFM

可以通过对用户的兴趣和物品进行分类实现推荐。在给用户推荐物品时,首先得到用户的兴趣分类,接着找出属于这些类别的物品推荐给用户。这种基于兴趣分类的的推荐方法需要解决以下3个问题:
1.如何给物品分类
2.如何确定用户对那些类别感兴趣,以及感兴趣的程度
3.对于一个给定的类别,选择那些属于这个类别的物品推荐给用户,以及如何确定这些物品在一个类中的权重

对于第一个问题的简单解决方法是人工的给物品进行分类,然而,人工给物品分类存在以下缺点:
1.分类人员的意见不能代表各种用户的意见
2.分类人员很难控制分类的粒度:例如对于《推荐系统实践》在粗粒度上属于计算机技术,但在细粒度上属于人工智能推荐系统,对不同的用户可能需要不同的粒度。
3.分类人员很难给一个物品多个分类
4.分类人员很难给出多维度的分类:分类是有很多维度的,例如书籍可以根据作者、出版社、内容等进行分类,不同人选择书籍的原因可能不同,有些人根据作者选择书,有些人根据书的内容选择书。
5.分类人员很难决定一个物品在某一类别中的权重

为了解决上面问题,LFM从数据出发,采用基于用户行为统计的自动聚类,自动的找到那些类,然后进行个性化推荐。LFM的核心是通过隐含特征联系用户兴趣和物品。
在这里插入图片描述LFM将用户物品矩阵 R m × n R_{m \times n} Rm×n分解为用户兴趣矩阵 P m × k P_{m \times k } Pm×k和物品类别矩阵 Q k × n Q_{ k\times n} Qk×n的乘积:
R m × n ≈ P m × k Q k × n = R ^ m × n R_{m\times n} \approx P_{m \times k} Q_{k \times n}=\hat{R}_{m\times n} Rm×nPm×kQk×n=R^m×n
通过下面公式计算用户 u 对物品 i 的兴趣:
P r e f e r e n c e ( u , i ) = R ^ u , i = P u Q i = ∑ f = 1 k P u , f Q f , i Preference(u,i)=\hat{R}_{u,i}=P_{u} Q_{i}=\sum_{f=1}^{k}{P_{u,f} Q_{f,i}} Preference(u,i)=R^u,i=PuQi=f=1kPu,fQf,i
其中, P u , f 表 示 用 户 u 的 兴 趣 和 第 f 个 隐 类 之 间 的 关 系 , Q f , i 表 示 第 f 个 隐 类 和 物 品 i 之 间 的 关 系 P_{u,f}表示用户u的兴趣和第f个隐类之间的关系,Q_{f,i}表示第f个隐类和物品i之间的关系 Pu,fuf,Qf,ifi
计算出用户 u u u对所有未产生行为的物品的感兴趣程度进行排序,就可以实现对用户u的推荐

举例如下:在这里插入图片描述 P r e f e r e n c e ( 2 , 1 ) = P 2 Q 1 = [ P 2 , 1 , P 2 , 2 , P 2 , 3 ] [ Q 1 , 1 , Q 2 , 1 , Q 3 , 1 ] T = P 2 , 1 Q 1 , 1 + P 2 , 2 Q 2 , 1 + P 2 , 3 Q 3 , 1 Preference(2,1)=P_{2}Q_{1}=[P_{2,1},P_{2,2},P_{2,3}][Q_{1,1},Q_{2,1},Q_{3,1}]^{T}=P_{2,1}Q_{1,1}+P_{2,2}Q_{2,1}+P_{2,3}Q_{3,1} Preference(2,1)=P2Q1=[P2,1,P2,2,P2,3][Q1,1,Q2,1,Q3,1]T=P2,1Q1,1+P2,2Q2,1+P2,3Q3,1

LFM的分类来自于对用户行为的统计,代表了用户的看法,每个物品可以属于多个类别,并且可以计算出物品属于每个类别的权重。隐类个数 k k k控制了分类的粒度,k越大,类别个数越多,分类的粒度越细。


三、LFM模型求解

数据集构建
对于隐性反馈数据集,只有正样本,需要利用用户没有过行为的物品生成负样本,负样本的采样应遵循以下原则:
1.对每个用户,要保证正负样本的平衡(数目相似)
2.对每个用户采样负样本时,选取很热门但用户却没有行为的物品,因为很热门但是用户却没有行为更加说明用户对该物品不感兴趣

经过负样本采样,得到用户物品集合 U I = { ( u , i ) } UI=\{(u,i)\} UI={(u,i)},若 ( u , i ) (u,i) (u,i)是正样本,则 R u , i = 1 R_{u,i}=1 Ru,i=1,否则 R u , i = 0 R_{u,i}=0 Ru,i=0
求解
损失函数: L = ∑ ( u , i ) ∈ U I ( R u , i − R ^ u , i ) 2 = ∑ ( u , i ) ∈ U I ( R u , i − ∑ f = 1 k P u , f Q f , i ) 2 + λ ∣ ∣ P u ∣ ∣ 2 + λ ∣ ∣ Q i ∣ ∣ 2 L=\sum\limits_{(u,i)\in UI}{(R_{u,i}-\hat R_{u,i})^2}=\sum\limits_{(u,i)\in UI}{(R_{u,i}-\sum\limits_{f=1}^{k}P_{u,f}Q_{f,i})^2}+\lambda \left|{\left|{P_{u}}\right|}\right|^2+\lambda \left|{\left|{Q_{i}}\right|}\right|^2 L=(u,i)UI(Ru,iR^u,i)2=(u,i)UI(Ru,if=1kPu,fQf,i)2+λPu2+λQi2
其中 λ ∣ ∣ P u ∣ ∣ 2 + λ ∣ ∣ Q i ∣ ∣ 2 \lambda \left|{\left|{P_{u}}\right|}\right|^2+\lambda \left|{\left|{Q_{i}}\right|}\right|^2 λPu2+λQi2为正则项,用来防止过拟合, λ \lambda λ的值可以根据实验获得

使用随机梯度下降法求解:
∂ L ∂ P u , f = − 2 ( R u , i − ∑ f = 1 k P u , f Q f , i ) Q f , i + 2 λ P u , f \frac{\partial L}{\partial P_{u,f}}=-2(R_{u,i}-\sum\limits_{f=1}^{k}P_{u,f}Q_{f,i})Q_{f,i}+2\lambda P_{u,f} Pu,fL=2(Ru,if=1kPu,fQf,i)Qf,i+2λPu,f
∂ L ∂ Q f , i = − 2 ( R u . i − ∑ f = 1 k P u , f Q f , i ) P u , f + 2 λ Q f , i \frac{\partial L}{\partial Q_{f,i}}=-2(R_{u.i}-\sum\limits_{f=1}^{k}P_{u,f}Q_{f,i})P_{u,f}+2\lambda Q_{f,i} Qf,iL=2(Ru.if=1kPu,fQf,i)Pu,f+2λQf,i
沿着负梯度方向更新变量,步长取值 α \alpha α
P u , f = P u , f + α ( ( R u , i − ∑ f = 1 k P u , f Q f , i ) Q f , i − λ P u , f ) P_{u,f}=P_{u,f}+\alpha((R_{u,i}-\sum\limits_{f=1}^{k}P_{u,f}Q_{f,i})Q_{f,i}-\lambda P_{u,f}) Pu,f=Pu,f+α((Ru,if=1kPu,fQf,i)Qf,iλPu,f)
Q f , i = Q f , i + α ( ( R u , i − ∑ f = 1 k P u , f Q f , i ) P u , f − λ Q f , i ) Q_{f,i}=Q_{f,i}+\alpha((R_{u,i}-\sum\limits_{f=1}^{k}{P_{u,f}Q_{f,i}})P_{u,f}-\lambda Q_{f,i}) Qf,i=Qf,i+α((Ru,if=1kPu,fQf,i)Pu,fλQf,i)



参考书籍:《推荐系统实战》
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值