隐语义模型:LFM
作者:互联网
一、协同过滤推荐算法
协同过滤算法是指基于用户行为数据设计的推荐算法,主要包括:
- 1.基于邻域的算法:UserCF(基于用户的协同过滤算法)、ItemCF(基于物品的协同过滤算法)
- 2.隐语义模型:LFM
- 3.基于图的随机游走算法:PersonalRank
本文主要介绍隐语义模型LFM
二、隐语义模型:LFM
可以通过对用户的兴趣和物品进行分类实现推荐。在给用户推荐物品时,首先得到用户的兴趣分类,接着找出属于这些类别的物品推荐给用户。这种基于兴趣分类的的推荐方法需要解决以下3个问题:
- 1.如何给物品分类
- 2.如何确定用户对那些类别感兴趣,以及感兴趣的程度
- 3.对于一个给定的类别,选择那些属于这个类别的物品推荐给用户,以及如何确定这些物品在一个类中的权重
对于第一个问题的简单解决方法是人工的给物品进行分类,然而,人工给物品分类存在以下缺点:
- 1.分类人员的意见不能代表各种用户的意见
- 2.分类人员很难控制分类的粒度:例如对于《推荐系统实践》在粗粒度上属于计算机技术,但在细粒度上属于人工智能推荐系统,对不同的用户可能需要不同的粒度。
- 3.分类人员很难给一个物品多个分类
- 4.分类人员很难给出多维度的分类:分类是有很多维度的,例如书籍可以根据作者、出版社、内容等进行分类,不同人选择书籍的原因可能不同,有些人根据作者选择书,有些人根据书的内容选择书。
- 5.分类人员很难决定一个物品在某一类别中的权重
为了解决上面问题,LFM从数据出发,采用基于用户行为统计的自动聚类,自动的找到那些类,然后进行个性化推荐。LFM的核心是通过隐含特征联系用户兴趣和物品。
在这里插入图片描述LFM将用户物品矩阵Rm×n R_{m \times n}Rm×n
分解为用户兴趣矩阵Pm×k P_{m \times k }P
m×k
和物品类别矩阵Qk×n Q_{ k\times n}Q
k×n
的乘积:
Rm×n≈Pm×kQk×n=Rˆm×n R_{m\times n} \approx P_{m \times k} Q_{k \times n}=\hat{R}_{m\times n}R
m×n
≈P
m×k
Q
k×n
=
R
^
m×n
通过下面公式计算用户 u 对物品 i 的兴趣:
Preference(u,i)=Rˆu,i=PuQi=∑kf=1Pu,fQf,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
=P
u
Q
i
=∑
f=1
k
P
u,f
Q
f,i
其中,Pu,f表示用户u的兴趣和第f个隐类之间的关系,Qf,i表示第f个隐类和物品i之间的关系 P_{u,f}表示用户u的兴趣和第f个隐类之间的关系,Q_{f,i}表示第f个隐类和物品i之间的关系P
u,f
表示用户u的兴趣和第f个隐类之间的关系,Q
f,i
表示第f个隐类和物品i之间的关系
计算出用户u uu对所有未产生行为的物品的感兴趣程度进行排序,就可以实现对用户u的推荐
举例如下: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 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)=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
LFM的分类来自于对用户行为的统计,代表了用户的看法,每个物品可以属于多个类别,并且可以计算出物品属于每个类别的权重。隐类个数k kk控制了分类的粒度,k越大,类别个数越多,分类的粒度越细。
三、LFM模型求解
数据集构建:
对于隐性反馈数据集,只有正样本,需要利用用户没有过行为的物品生成负样本,负样本的采样应遵循以下原则:
1.对每个用户,要保证正负样本的平衡(数目相似)
2.对每个用户采样负样本时,选取很热门但用户却没有行为的物品,因为很热门但是用户却没有行为更加说明用户对该物品不感兴趣
经过负样本采样,得到用户物品集合UI={(u,i)} UI=\{(u,i)\}UI={(u,i)},若(u,i) (u,i)(u,i)是正样本,则Ru,i=1 R_{u,i}=1R
u,i
=1,否则Ru,i=0 R_{u,i}=0R
u,i
=0
求解:
损失函数:L=∑(u,i)∈UI(Ru,i−Rˆu,i)2=∑(u,i)∈UI(Ru,i−∑kf=1Pu,fQf,i)2+λ∣∣Pu∣∣2+λ∣∣Qi∣∣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|^2L=
(u,i)∈UI
∑
(R
u,i
−
R
^
u,i
)
2
=
(u,i)∈UI
∑
(R
u,i
−
f=1
∑
k
P
u,f
Q
f,i
)
2
+λ∣∣P
u
∣∣
2
+λ∣∣Q
i
∣∣
2
其中λ∣∣Pu∣∣2+λ∣∣Qi∣∣2 \lambda \left|{\left|{P_{u}}\right|}\right|^2+\lambda \left|{\left|{Q_{i}}\right|}\right|^2λ∣∣P
u
∣∣
2
+λ∣∣Q
i
∣∣
2
为正则项,用来防止过拟合,λ \lambdaλ的值可以根据实验获得
使用随机梯度下降法求解:
∂L∂Pu,f=−2(Ru,i−∑kf=1Pu,fQf,i)Qf,i+2λPu,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}
∂P
u,f
∂L
=−2(R
u,i
−
f=1
∑
k
P
u,f
Q
f,i
)Q
f,i
+2λP
u,f
∂L∂Qf,i=−2(Ru.i−∑kf=1Pu,fQf,i)Pu,f+2λQf,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}
∂Q
f,i
∂L
=−2(R
u.i
−
f=1
∑
k
P
u,f
Q
f,i
)P
u,f
+2λQ
f,i
沿着负梯度方向更新变量,步长取值α \alphaα
Pu,f=Pu,f+α((Ru,i−∑kf=1Pu,fQf,i)Qf,i−λPu,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})P
u,f
=P
u,f
+α((R
u,i
−
f=1
∑
k
P
u,f
Q
f,i
)Q
f,i
−λP
u,f
)
Qf,i=Qf,i+α((Ru,i−∑kf=1Pu,fQf,i)Pu,f−λQf,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})Q
f,i
=Q
f,i
+α((R
u,i
−
f=1
∑
k
P
u,f
Q
f,i
)P
u,f
−λQ
f,i
)
参考书籍:《推荐系统实战》
————————————————
版权声明:本文为CSDN博主「hhjhh76」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hhjhh76/article/details/89632557
标签:Pu,LFM,模型,语义,用户,UI,物品,lambda 来源: https://blog.csdn.net/pengjunlee/article/details/104833933