推荐系统--矩阵分解(2)

推荐系统–矩阵分解(1)
推荐系统–矩阵分解(2)
推荐系统–矩阵分解(3)
推荐系统–矩阵分解(4)
推荐系统–矩阵分解(5)
推荐系统–矩阵分解(6)

3 BiasSVD:考虑偏置

有一些用户会给出偏高的评分,有一些物品也会收到偏高的评分,比如电影观众为铁粉,一些受某时期某事件影响的电影。所以需要考虑偏置对评分的影响,其公式如下:
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μbubipuTqi)2+λ(pu22+qi22+bu22+bi22)(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=ruirui^
μ \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)

4 SVD++:增加历史行为

通过观看B站上的视频,终于把SVD++核心思想搞清楚了:

  • 它是来探索物品与物品之间关联关系的,比如对逃学威龙1评分高的人,可能也会给逃学威龙2高评分;
  • 由于需要探索物品与物品之间的关联关系,可以使用显式反馈,也可以使用显式反馈+隐式反馈;
  • 利用隐式反馈来探索物品与物品之间的关联关系,信息更加丰富:少数用户会主动点评电影或者美食,大多数用户只会浏览或者观看,也就是说显式反馈比隐式反馈少。

SVD++模型的步骤如下:

  • 对于某一个用户 u u u,它提供了反馈的物品集合定义为 N ( u ) N(u) N(u)
  • 假设 j ∈ N ( u ) j \in N(u) jN(u),该物品 j j j和预测物品 i i i之间的关系为 w i j w_{ij} wij
  • 将这个关系作为预测评分的一个部分,则有如下公式:
    r u i ^ = μ + b u + b i + p u T q i + 1 ∣ N ( u ) ∣ ∑ j ∈ N ( u ) w i j (6) \begin{aligned} \hat{r_{ui}}=\mu+b_{u}+b_{i}+p_{u}^T q_{i} + \frac{1}{\sqrt{|N(u)|}} \sum_{j \in N(u)}w_{ij} \tag6 \end{aligned} rui^=μ+bu+bi+puTqi+N(u) 1jN(u)wij(6)
    引入 1 ∣ N ( u ) ∣ \frac{1}{\sqrt{|N(u)|}} N(u) 1是为了消除不同 ∣ N ( u ) ∣ |N(u)| N(u)个数引起的差异。
    W W W矩阵如下表所示:
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
  • W W W矩阵维度为 n × n n \times n n×n,维度很大,我们对 W W W进行矩阵分解后得到如下公式:
    r u i ^ = μ + b u + b i + p u T q i + 1 ∣ N ( u ) ∣ x u T ∑ j ∈ N ( u ) y j (7) \begin{aligned} \hat{r_{ui}}=\mu+b_{u}+b_{i}+p_{u}^{T} q_{i} + \frac{1}{\sqrt{|N(u)|}} x_u^T \sum_{j \in N(u)}y_{j} \tag7 \end{aligned} rui^=μ+bu+bi+puTqi+N(u) 1xuTjN(u)yj(7)
    推荐系统--矩阵分解(2)_第1张图片
  • x u x_u xu表示用户的隐向量,可以用 p u p_u pu替换,这样就减少了对 W W W矩阵的分解,则上式可以表示为:
    r u i ^ = μ + b u + b i + p u T q i + 1 ∣ N ( u ) ∣ p u T ∑ j ∈ N ( u ) y j = μ + b u + b i + p u T ( q i + 1 ∣ N ( u ) ∣ ∑ j ∈ N ( u ) y j ) (10) \begin{aligned} \hat{r_{ui}}=\mu+b_{u}+b_{i}+p_{u}^{T} q_{i} + \frac{1}{\sqrt{|N(u)|}} p_u^T \sum_{j \in N(u)}y_{j} \\ = \mu+b_{u}+b_{i}+p_{u}^{T} \left(q_{i} + \frac{1}{\sqrt{|N(u)|}} \sum_{j \in N(u)}y_{j}\right)\tag{10} \end{aligned} rui^=μ+bu+bi+puTqi+N(u) 1puTjN(u)yj=μ+bu+bi+puTqi+N(u) 1jN(u)yj(10)

其优化目标函数:
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,iruiμbubipuTqipuTN(u) 1jN(u)yj2+λpu22+qi22+bu22+bi22+jN(u)yj22(11)

对公式(11)求偏导,令 e u i = r u i − r u i ^ e_{ui}=r_{ui}- \hat{r_{ui}} eui=ruirui^,整理后可以得到迭代公式:
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+η(euiqiλpu)qi=qi+η(eui(pu+N(u) 1jN(u)yj)λqi)yj=yj+η(euiN(u) 1qiλqi)(12)
参考的迭代公式如下:
推荐系统--矩阵分解(2)_第2张图片

你可能感兴趣的:(推荐系统,推荐算法,矩阵)