推荐系统–矩阵分解(1)
推荐系统–矩阵分解(2)
推荐系统–矩阵分解(3)
推荐系统–矩阵分解(4)
推荐系统–矩阵分解(5)
推荐系统–矩阵分解(6)
有一些用户会给出偏高的评分,有一些物品也会收到偏高的评分,比如电影观众为铁粉,一些受某时期某事件影响的电影。所以需要考虑偏置对评分的影响,其公式如下:
L ( θ ) = arg min ⏟ p u , q i ∑ u , i ( r u i − μ − b u − b i − p u T q i ) 2 + λ ( ∥ p u ∥ 2 2 + ∥ q i ∥ 2 2 + ∥ b u ∥ 2 2 + ∥ b i ∥ 2 2 ) (4) \begin{aligned} L(\theta)=\underbrace{\arg \min }_{p_{u}, q_{i}} \sum_{u, i}\left(r_{u i}-\mu-b_{u}-b_{i}-p_{u}^{T} q_{i} \right)^{2} \\ +\lambda\left(\left\|p_{u}\right\|_{2}^{2}+\left\|q_{i}\right\|_{2}^{2}+\left\|b_{u}\right\|_{2}^{2}+\left\|b_{i}\right\|_{2}^{2}\right) \end{aligned} \tag4 L(θ)=pu,qi argminu,i∑(rui−μ−bu−bi−puTqi)2+λ(∥pu∥22+∥qi∥22+∥bu∥22+∥bi∥22)(4)
符号说明:
用户的预测评分为: r u i ^ = p u T q i + μ + b u + b i \hat{r_{ui}} = p_{u}^T q_{i} + \mu + b_{u} + b_{i} rui^=puTqi+μ+bu+bi;
偏差为: e u i = r u i − r u i ^ e_{ui}=r_{ui}-\hat{r_{ui}} eui=rui−rui^;
μ \mu μ:训练集中所有评分记录的全局平均数,表示了训练数据的总体评分情况,对于固定的数据集,它是一个常数;
b u b_u bu:用户 u u u的偏置,独立于物品特征的因素,表示某一特定用户的打分习惯。例如,对于批判性用户对于自己的评分比较苛刻,倾向于打低分;而乐观型用户则打分比较保守,总体打分要偏高;
b i b_i bi:物品 i i i的偏置,特立于用户兴趣的因素,表示某一特定物品得到的打分情况。以电影为例,好片获得的总体评分偏高,而烂片获得的评分普遍偏低,物品偏置捕获的就是这样的特征。
对公式(4)求偏导,理后可以得到迭代公式为:
p u , k = p u , k + η ( e u i q k , i − λ p u , k ) q k , i = q k , i + η ( e u i p u , k − λ q i , k ) b u = b u + η ( e u i − λ b u ) b i = b i + η ( e u i − λ b i ) (5) \begin{aligned} p_{u, k} &=p_{u, k}+\eta\left(e_{u i} q_{k, i}-\lambda p_{u, k}\right) \\ q_{k, i} &=q_{k, i}+\eta\left(e_{u i} p_{u, k}-\lambda q_{i, k}\right) \\ b_{u} &=b_{u}+\eta\left(e_{ui} -\lambda b_{u}\right) \\ b_{i} &=b_{i}+\eta\left(e_{ui} -\lambda b_{i}\right) \end{aligned} \tag5 pu,kqk,ibubi=pu,k+η(euiqk,i−λpu,k)=qk,i+η(euipu,k−λqi,k)=bu+η(eui−λbu)=bi+η(eui−λbi)(5)
通过观看B站上的视频,终于把SVD++核心思想搞清楚了:
SVD++模型的步骤如下:
t 1 t_1 t1 | t 2 t_2 t2 | t 3 t_3 t3 | t 4 t_4 t4 | |
---|---|---|---|---|
t 1 t_1 t1 | w 11 w_{11} w11 | w 12 w_{12} w12 | w 13 w_{13} w13 | w 14 w_{14} w14 |
t 2 t_2 t2 | w 21 w_{21} w21 | w 22 w_{22} w22 | w 23 w_{23} w23 | w 24 w_{24} w24 |
t 3 t_3 t3 | w 31 w_{31} w31 | w 32 w_{32} w32 | w 33 w_{33} w33 | w 34 w_{34} w34 |
t 4 t_4 t4 | w 41 w_{41} w41 | w 42 w_{42} w42 | w 43 w_{43} w43 | w 44 w_{44} w44 |
其优化目标函数:
L ( θ ) = arg min ⏟ p u , q i ∑ u , i ( r u i − μ − b u − b i − p u T q i − p u T 1 ∣ N ( u ) ∣ ∑ j ∈ N ( u ) y j ) 2 + λ ( ∥ p u ∥ 2 2 + ∥ q i ∥ 2 2 + ∥ b u ∥ 2 2 + ∥ b i ∥ 2 2 + ∑ j ∈ N ( u ) ∥ y j ∥ 2 2 ) (11) \begin{aligned} L(\theta) = \underbrace{\arg \min }_{p_{u}, q_{i}} \sum_{u, i}\left(r_{ui}-\mu-b_{u}-b_{i}-p_{u}^{T} q_{i} -p_{u}^{T} \frac{1}{\sqrt{|N(u)|}} \sum_{j \in N(u)} y_{j}\right)^{2} \\ +\lambda\left(\left\|p_{u}\right\|_{2}^{2}+\left\|q_{i}\right\|_{2}^{2}+\left\|b_{u}\right\|_{2}^{2}+\left\|b_{i}\right\|_{2}^{2}+\sum_{j \in N(u)}\left\|y_{j}\right\|_{2}^{2}\right) \end{aligned} \tag{11} L(θ)=pu,qi argminu,i∑⎝⎛rui−μ−bu−bi−puTqi−puT∣N(u)∣1j∈N(u)∑yj⎠⎞2+λ⎝⎛∥pu∥22+∥qi∥22+∥bu∥22+∥bi∥22+j∈N(u)∑∥yj∥22⎠⎞(11)
对公式(11)求偏导,令 e u i = r u i − r u i ^ e_{ui}=r_{ui}- \hat{r_{ui}} eui=rui−rui^,整理后可以得到迭代公式:
b u = b u + η ⋅ ( e u i − λ ⋅ b u ) b i = b i + η ⋅ ( e u i − λ ⋅ b i ) p u = p u + η ⋅ ( e u i ⋅ q i − λ ⋅ p u ) q i = q i + η ⋅ ( e u i ( p u + 1 ∣ N ( u ) ∣ ∑ j ∈ N ( u ) y j ) − λ ⋅ q i ) y j = y j + η ⋅ ( e u i ⋅ 1 ∣ N ( u ) ∣ q i − λ ⋅ q i ) (12) \begin{aligned} b_u = b_u + \eta \cdot (e_{ui} - \lambda \cdot b_u) \\ b_i = b_i + \eta \cdot (e_{ui} - \lambda \cdot b_i) \\ p_u = p_u + \eta \cdot (e_{ui} \cdot q_i - \lambda \cdot p_u) \\ q_i = q_i + \eta \cdot (e_{ui}(p_u + \frac{1}{\sqrt{|N(u)|}}\sum_{j \in N(u)} y_j) - \lambda \cdot q_i) \\ y_j = y_j + \eta \cdot (e_{ui} \cdot \frac{1}{\sqrt{|N(u)|}} q_i - \lambda \cdot q_i) \\ \end{aligned} \tag{12} bu=bu+η⋅(eui−λ⋅bu)bi=bi+η⋅(eui−λ⋅bi)pu=pu+η⋅(eui⋅qi−λ⋅pu)qi=qi+η⋅(eui(pu+∣N(u)∣1j∈N(u)∑yj)−λ⋅qi)yj=yj+η⋅(eui⋅∣N(u)∣1qi−λ⋅qi)(12)
参考的迭代公式如下: