推荐系统–矩阵分解(1)
推荐系统–矩阵分解(2)
推荐系统–矩阵分解(3)
推荐系统–矩阵分解(4)
推荐系统–矩阵分解(5)
推荐系统–矩阵分解(6)
8 基于隐式反馈的矩阵分解
8.1 引入
相对于显示反馈的评分数据,隐式反馈有以下几方面的特征:
- 只有正反馈,没有负反馈,只能得到用户喜欢那些物品,对于用户不喜欢的物品没有数据支持;
- 隐式反馈噪声比较多,不像用户评分行为是用户强烈的主动行为,用户浏览行为、点击行为都相对比较被动。例1,某个页面是因为用户默认打开页面导致打分较高;例2,买东西可能只是用来送礼;
- 显式反馈的评分数据代表用户真实的喜好程度,隐式反馈代表置信度;
- 需要有合适的方法来对隐式反馈进行评价,而不能直接用RMSE。
8.2 模型
模型引入喜好变量和置信度变量。
fui={1rui>00rui=0(1)f_{u i}=\left\{\begin{array}{cc} 1 & r_{u i}>0 \\ 0 & r_{u i}=0 \end{array}\right. \tag1 fui={10rui>0rui=0(1)
符号说明:
喜好变量fuif_{u i}fui:一个二元变量,表示用户是否具有该偏好。
置信度变量的计算有两种方式:
cui=1+αrui(2)c_{u i}=1+\alpha r_{u i} \tag2 cui=1+αrui(2)
或
cui=1+αlog(1+rui/ϵ)(3)c_{u i}=1+\alpha \log \left(1+r_{u i} / \epsilon\right) \tag3 cui=1+αlog(1+rui/ϵ)(3)
符号说明:
置信度变量 cuic_{u i}cui:表示用户对物品喜好的置信程度。
最终得到如下优化目标函数:
L(p,q)=minp⋆,q⋆∑u,icui(fui−puTqi)2+λ(∑u∥pu∥2+∑i∥qi∥2)(4)L(p, q) = \min _{p_{\star}, q_{\star}} \sum_{u, i} c_{u i}\left(f_{u i}-p_{u}^{T} q_{i}\right)^{2}+\lambda\left(\sum_{u}\left\|p_{u}\right\|^{2}+\sum_{i}\left\|q_{i}\right\|^{2}\right) \tag4 L(p,q)=p⋆,q⋆minu,i∑cui(fui−puTqi)2+λ(u∑∥pu∥2+i∑∥qi∥2)(4)
8.3 求解pup_upu和qiq_iqi
首先计算梯度:
12∂L(p,q)∂pu=∑icui(puTqi−fui)qi+λpu=∑icui(qiTpu−fui)qi+λpu=QTCuQpu−QTCuf(u)+λpu\begin{aligned} \frac{1}{2} \frac{\partial L(p, q)}{\partial p_{u}} &=\sum_{i} c_{u i}\left(p_{u}^{T} q_{i}-f_{u i}\right) q_{i}+\lambda p_{u} \\ &=\sum_{i} c_{u i}\left(q_{i}^{T} p_{u}-f_{u i}\right) q_{i}+\lambda p_{u} \\ &=Q^{T} C^{u} Q p_{u}-Q^{T} C^{u} f(u)+\lambda p_{u} \end{aligned} 21∂pu∂L(p,q)=i∑cui(puTqi−fui)qi+λpu=i∑cui(qiTpu−fui)qi+λpu=QTCuQpu−QTCuf(u)+λpu
有两种方法可以求解pup_upu和qiq_iqi:
- 第一种方法为直接法,令偏导为0,则有:
pu=(QTCuQ+λI)−1QTCuf(u)p_{u}=\left(Q^{T} C^{u} Q+\lambda I\right)^{-1} Q^{T} C^{u} f(u) pu=(QTCuQ+λI)−1QTCuf(u)
矩阵计算的维度如下:
(k×n&n×n&n×k)&(k×n)&(n×n)&(n×1)=k×1(k \times n \& n \times n \& n \times k) \& (k \times n) \& (n \times n) \& (n \times 1)= k \times 1(k×n&n×n&n×k)&(k×n)&(n×n)&(n×1)=k×1
同理可得:
qi=(PTCiP+λI)−1PTCif(i)q_{i}=\left(P^{T} C^{i} P+\lambda I\right)^{-1} P^{T} C^{i} f(i) qi=(PTCiP+λI)−1PTCif(i)
符号说明:
f(u)∈Rnf(u) \in \mathbb{R}^{n}f(u)∈Rn:包含用户uuu的所有偏好向量;
f(i)∈Rmf(i) \in \mathbb{R}^{m}f(i)∈Rm:包含用户对物品tit_iti的偏好向量;
P∈Rm×kP \in \mathbb{R}^{m \times k}P∈Rm×k:潜在用户特征矩阵;
Q∈Rn×kQ \in \mathbb{R}^{n \times k}Q∈Rn×k:潜在物品特征矩阵;
Cu∈Rn×nC^{u} \in \mathbb{R}^{n \times n}Cu∈Rn×n:是Ciiu=cuiC_{i i}^{u}=c_{u i}Ciiu=cui,其余地方为0的对角矩阵,如下所示:
C11uC_{11}^{u}C11u | ||||
---|---|---|---|---|
C22uC_{22}^{u}C22u | ||||
C33uC_{33}^{u}C33u | ||||
C44uC_{44}^{u}C44u | ||||
C55uC_{55}^{u}C55u |
Ci∈Rm×mC^{i} \in \mathbb{R}^{m \times m}Ci∈Rm×m:是Cuui=cuiC_{uu}^{i}=c_{u i}Cuui=cui的对角矩阵,其余地方为0的对角矩阵,如下所示:
C11iC_{11}^{i}C11i | ||||
---|---|---|---|---|
C22iC_{22}^{i}C22i | ||||
C33iC_{33}^{i}C33i | ||||
C44iC_{44}^{i}C44i | ||||
C55iC_{55}^{i}C55i |
- 第二种方法为迭代法:
梯度计算如下:
12∂L(p,q)∂pu=∑i[cui(puTqi−fui)]qi+λpu=∑i[cui(qiTpu−fui)]qi+λpu12∂L(p,q)∂qi=∑u[cui(puTqi−fui)]pu+λqi\begin{aligned} \frac{1}{2} \frac{\partial L(p, q)}{\partial p_{u}} &=\sum_{i} \left[c_{u i}\left(p_{u}^{T} q_{i}-f_{u i}\right)\right] q_{i}+\lambda p_{u} \\ &=\sum_{i} \left[c_{u i}\left(q_{i}^{T} p_{u}-f_{u i}\right)\right] q_{i}+\lambda p_{u} \\ \frac{1}{2}\frac{\partial L(p, q)}{\partial {q}_{i}}&= \sum_{u}\left[c_{u i}\left({p}_{u}^{T}{q}_{i}- f_{u i}\right)\right] {p}_{u}+ \lambda {q}_{i} \end{aligned} 21∂pu∂L(p,q)21∂qi∂L(p,q)=i∑[cui(puTqi−fui)]qi+λpu=i∑[cui(qiTpu−fui)]qi+λpu=u∑[cui(puTqi−fui)]pu+λqi
迭代公式为:
pu=pu−γ∂L(p,q)∂puqi=qi−γ∂L(p,q)∂qi\begin{aligned} {p}_{u}&={p}_{u}-\gamma \frac{\partial L(p, q)}{\partial {p}_{u}}\\ {q}_{i}&={q}_{i}-\gamma \frac{\partial L(p, q)}{\partial {q}_{i}} \end{aligned} puqi=pu−γ∂pu∂L(p,q)=qi−γ∂qi∂L(p,q)