推荐系统学习笔记之三 LFM (Latent Factor Model) 隐因子模型 + SVD (singular value decomposition) 奇异值分解
2017-10-19 23:14
666 查看
Low Rank Matrix Factorization低阶矩阵分解
在上一篇笔记之二里面说到我们有五部电影,以及四位用户,每个用户对电影的评分如下,?表示未评分。Movies\User | User 1 | User 2 | User 3 | User 4 |
---|---|---|---|---|
Movie 1 | 5 | 5 | 0 | 0 |
Movie 2 | 5 | ? | ? | 0 |
Movie 3 | ? | 4 | 0 | ? |
Movie 4 | 0 | 0 | 5 | 4 |
Movie 5 | 0 | 0 | 5 | ? |
R=⎡⎣⎢⎢⎢⎢⎢⎢55?005?4000?05500?40⎤⎦⎥⎥⎥⎥⎥⎥
把参数θ和特征变量x也都表示成向量的形式:
X=⎡⎣⎢⎢⎢⎢⎢−−−(x(1))T−−−−−−(x(2))T−−−...−−−(x(nm))T−−−⎤⎦⎥⎥⎥⎥⎥
Θ=⎡⎣⎢⎢⎢⎢⎢−−−(θ(1))T−−−−−−(θ(2))T−−−...−−−(θ(nu))T−−−⎤⎦⎥⎥⎥⎥⎥
那么我们有:R=ΘTX,这种方法被称为:低秩矩阵分解(Low Rank Matrix Factorization)。
相关应用:
找电影i相似的电影j:可以计算∥∥x(i)−x(j)∥∥两个特征向量的距离,其中距离最小的就是最相似的电影。
LFM (Latent Factor Model) 隐因子模型
接下来引申到LFM (Latent Factor Model) 隐因子模型,其中隐因子可以理解为一个用户喜欢一个电影的隐形原因,比如电影里面有他喜欢的romantic和action元素,还有他喜欢的某个演员或者导演编剧。如果另外一个电影有类似的元素跟演员,那么他很有可能会也喜欢这部电影。LFM的核心思路就是求出用户的θ向量和电影的x向量。在评分矩阵Rm,n中,LFM中认为评分矩阵可以表示为Rm,n=Pm,F⋅QF,n即两个矩阵的乘积,其中F为隐因子的个数。我们设r^ui为用户u对物品i的评分。
r^ui=∑f=1FPufQfi
我们的目标是减少r^ui与rui之间的差距,并且为了防止过拟合加入了正则项。
min:CostFunctionJ=∑rui≠0(ru,i−r^ui)2+λ(∑P2uf+∑Q2fi)
通过梯度下降对代价函数求偏导,可以得出:
∂J∂P(t)uf=∑i,rui≠0−2(ru,i−r^ui)Q(t)fi+2λP(t)uf
∂J∂Q(t)fi=∑u,rui≠0−2(ru,i−r^ui)P(t)uf+2λQ(t)fi
在上一步可以使用随机梯度下降方法(SGD,Stochastic Gradient Descent),它比传统的梯度下降法需要更少的迭代次数就可以收敛,这里就不详细阐述了。
SVD (singular value decomposition) 奇异值分解
我们在刚刚上面提到的r^ui中加入偏置项:r^ui=∑f=1FPufQfi+μ+bu+bi
其中μ表示训练集中物品的所有评分的平均值。bu是用户偏置项,表示一个用户评分的平均值。bi是物品偏置项,表示一个物品被评分的平均值。偏置项是固有属性,每个用户和物品都有自己的值,代表该物品是否被大众喜爱程度或某个用户对物品苛刻程度。
带偏置的LFM又被称为SVD。加入偏置项之后我们可以得到新的代价函数:
J=∑rui≠0(ru,i−r^ui)2+λ(∑P2uf+∑Q2fi+∑b2u+∑b2i) 通过随机梯度下降可以求得:
b(t+1)u:=b(t)u+α∗(ru,i−r^ui−λ∗b(t)u)
b(t+1)i:=b(t)i+α∗(ru,i−r^ui−λ∗b(t)i)
SVD++ / TIME SVD ++
我们从上一步的BiasLFM(即SVD)继续演化就可以得到SVD++。SVD++:User对Item i 有评分,则反映他对各个隐因子的喜好程度yi=(yi1,yi2,...,yiF),是物品所携带的属性。
r^ui=∑f=1F(Puf+∑j∈N(u)Yjf|N(u)|−−−−−√)Qfi+μ+bu+bi
其中Nu为User u 评价过的物品集合。
使用随机梯度下降可以求得Q与Y的偏导
∂rui^∂Qfi=Puf+∑j∈N(u)Yjf|N(u)|−−−−−√
∂rui^∂Yjf=Qfi|N(u)|−−−−−√
其他偏导于SVD的一样
TIME SVD ++: 添加了时间动态,这里就不详细阐述了~
矩阵分解优劣势
主要的优势如下:比较容易编程实现,随机梯度下降方法依次迭代即可训练出模型。
预测的精度比较高,预测准确率要高于基于领域的协同过滤以及基于内容CBR等方法。
比较低的时间和空间复杂度,高维矩阵映射为两个低维矩阵节省了存储空间,训练过程比较费时,但是可以离线完成;评分预测一般在线计算,直接使用离线训练得到的参数,可以实时推荐。
非常好的扩展性,如由SVD拓展而来的SVD++和 TIME SVD++。
矩阵分解的不足主要有:
训练模型较为费时。
推荐结果不具有很好的可解释性,无法用现实概念给分解出来的用户和物品矩阵的每个维度命名,只能理解为潜在语义空间。
相关文章推荐
- 【推荐系统系列】使用LFM(Latent factor model)隐语义模型进行Top-N推荐 (转载)
- 奇异值分解 SVD(Singular Value Decomposition)
- 实战智能推荐系统(10)-- 隐语义模型 LFM (Funk-SVD)
- 奇异值分解(singular value decomposition,SVD)
- 奇异值分解(SVD, singular value decomposition)
- 实战智能推荐系统(10)-- 隐语义模型 LFM (Funk-SVD)
- 实战智能推荐系统(10)-- 隐语义模型 LFM (Funk-SVD)
- [学习笔记]学习主题模型(Topic Model)和PLSA( probabilistic latent semantic analysis)
- Singular Value Decomposition(SVD)--奇异值分解【转】
- [机器学习笔记]奇异值分解SVD简介及其在推荐系统中的简单应用
- 实战智能推荐系统(10)-- 隐语义模型 LFM (Funk-SVD)
- 实战智能推荐系统(10)-- 隐语义模型 LFM (Funk-SVD)
- 实战智能推荐系统(10)-- 隐语义模型 LFM (Funk-SVD)
- 实战智能推荐系统(10)-- 隐语义模型 LFM (Funk-SVD)
- 使用LFM(Latent factor model)隐语义模型进行Top-N推荐
- 使用LFM(Latent factor model)隐语义模型进行Top-N推荐
- LFM(Latent factor model)隐语义模型的思想和伪代码
- 奇异值分解SVD(Singular Value Decomposition)