为了账号安全,请及时绑定邮箱和手机立即绑定

(十八)从零开始学人工智能-智能推荐系统:矩阵分解

推荐系统系列之二:矩阵分解

@[TOC]

1. 理论基础

说明介绍:

从数学概率的角度,证明了 MF 的由来。这样使得 概率矩阵分解(PMF) 和其他模型的“搭配”有了理论的依据。

来源出处:

  • Salakhutdinov et al. Probabilistic matrix factorization. NIPS(2008): 1257-1264.

定义和描述

假设现在有 nnn 个用户, mmm 个商品,形成一个 n×mn×mn×m 维的评分矩阵 R\mathbf{R}R,其中的元素 ru,ir_{u,i}ru,i 表示用户 uuu 对商品 iii 的评分。假设潜在特征个数为 kkk,那么 n×kn×kn×k 维的 p\mathbf{p}p 表示用户的潜在特征矩阵,其中 pu\mathbf{p}_{u}pu 表示用户 uuu 的潜在特征向量; m×km×km×k 维的矩阵 q\mathbf{q}q 表示商品的潜在特征矩阵,其中 qi\mathbf{q}_{i}qi 商品 iii 的潜在特征向量。概率模型图如下图所示:

在这里插入图片描述

主要推导:

假设关于已知评分数据的条件分布满足高斯分布:
p(R∣p,q,σ2)=∏u=1n∏i=1m[N(ru,i∣puqiT,σ2)]Iij, p\left( \mathbf{R}|\mathbf{p},\mathbf{q},\sigma^{2} \right)=\prod_{u=1}^{n}\prod_{i=1}^{m}\left[ N\left( r_{u,i}|\mathbf{p}_{u}\mathbf{q}_{i}^T,\sigma^{2} \right)\right]^{I_{ij}}, p(Rp,q,σ2)=u=1ni=1m[N(ru,ipuqiT,σ2)]Iij,
其中,Iu,iI_{u,i}Iu,i 表示指示函数,当用户 uuu 与商品 iii 有互动时,Iu,i=1I_{u,i}=1Iu,i=1,否则为0。

再假设用户潜在特征向量和商品潜在特征向量都服从均值为 0 的高斯先验分布,即:
p(p∣σp2)=∏u=1nN(pu∣0,σp2I),p(q∣σq2)=∏i=1mN(qi∣0,σq2I). p\left( \mathbf{p}|\sigma_{p}^{2} \right)=\prod_{u=1}^{n}N\left( \mathbf{p}_{u}|0,\sigma_{p}^{2}\mathbf{I} \right),p\left( \mathbf{q}|\sigma_{q}^{2} \right)=\prod_{i=1}^{m}N\left( \mathbf{q}_{i}|0,\sigma_{q}^{2}\mathbf{I} \right). p(pσp2)=u=1nN(pu0,σp2I),p(qσq2)=i=1mN(qi0,σq2I).
注意这个公式中的 I\mathbf{I}I 不是指示函数,表示一个对角阵。

然后,计算 p\mathbf{p}pq\mathbf{q}q 的后验概率:
p(p,q∣R,σ2,σq2,σp2)=p(p,q,R,σ2,σq2,σp2)p(R,σ2,σq2,σp2)=p(R∣p,q,σ2)×p(p,q∣σq2,σp2)p(R,σ2,σq2,σp2) p\left( \mathbf{p},\mathbf{q}|R,\sigma^{2},\sigma_{q}^{2}, \sigma_{p}^{2}\right)=\frac{ p\left( \mathbf{p},\mathbf{q},R,\sigma^{2},\sigma_{q}^{2}, \sigma_{p}^{2}\right) }{ p\left( R,\sigma^{2},\sigma_{q}^{2}, \sigma_{p}^{2}\right) }=\frac{p\left( R|\mathbf{p},\mathbf{q},\sigma^{2}\right)\times p\left( \mathbf{p},\mathbf{q} |\sigma_{q}^{2}, \sigma_{p}^{2}\right)}{p\left( R,\sigma^{2},\sigma_{q}^{2}, \sigma_{p}^{2}\right)} p(p,qR,σ2,σq2,σp2)=p(R,σ2,σq2,σp2)p(p,q,R,σ2,σq2,σp2)=p(R,σ2,σq2,σp2)p(Rp,q,σ2)×p(p,qσq2,σp2)

∼p(R∣p,q,σ2)×p(p,q∣σq2,σp2) \sim p\left( R|\mathbf{p},\mathbf{q},\sigma^{2}\right)\times p\left( \mathbf{p},\mathbf{q} |\sigma_{q}^{2}, \sigma_{p}^{2} \right) p(Rp,q,σ2)×p(p,qσq2,σp2)

=p(R∣p,q,σ2)×p(p∣σp2)×p(q∣σq2) =p\left( R|\mathbf{p},\mathbf{q},\sigma^{2} \right)\times p\left( \mathbf{p} | \sigma_{p}^{2}\right)\times p\left( \mathbf{q} |\sigma_{q}^{2}\right) =p(Rp,q,σ2)×p(pσp2)×p(qσq2)

=∏u=1n∏i=1m[N(ru,i∣puqiT,σ2)]Iu,i×∏u=1n[N(pu∣0,σp2I)]×∏i=1m[N(qi∣0,σq2I)] =\prod_{u=1}^{n}\prod_{i=1}^{m}\left[ N\left( r_{u,i}|\mathbf{p}_{u}\mathbf{q}_{i}^T,\sigma^{2} \right) \right]^{I_{u,i}}\times \prod_{u=1}^{n}\left[ N\left( \mathbf{p}_{u}|0,\sigma_{p}^{2}I \right) \right]\times \prod_{i=1}^{m}\left[ N\left( \mathbf{q}_{i}|0,\sigma_{q}^{2}I \right) \right] =u=1ni=1m[N(ru,ipuqiT,σ2)]Iu,i×u=1n[N(pu0,σp2I)]×i=1m[N(qi0,σq2I)]

等式两边取对数 lnlnln 后得到:
lnp(p,q∣R,σ2,σp2,σq2)=−12σ2∑u=1n∑i=1mIij(ru,i−puqiT)2−12σp2∑i=1NpupuT−12σq2∑i=1MqiqiT lnp\left( \mathbf{p},\mathbf{q}|\mathbf{R},\sigma^{2},\sigma_{p}^{2}, \sigma_{q}^{2}\right)=-\frac{1}{2\sigma^{2}}\sum_{u=1}^{n}\sum_{i=1}^{m}{I_{ij}\left( r_{u,i}-\mathbf{p}_{u}\mathbf{q}_{i}^T \right)^2}-\frac{1}{2\sigma_{p}^{2}}\sum_{i=1}^{N}{\mathbf{p}_{u}\mathbf{p}_{u}^{T}}-\frac{1}{2\sigma_{q}^{2}}\sum_{i=1}^{M}{\mathbf{q}_{i}\mathbf{q}_{i}^{T}} lnp(p,qR,σ2,σp2,σq2)=2σ21u=1ni=1mIij(ru,ipuqiT)22σp21i=1NpupuT2σq21i=1MqiqiT

−12((∑i=1n∑j=1mIu,i)lnσ2+nKlnσp2+mKlnσq2)+C, -\frac{1}{2}\left( \left( \sum_{i=1}^{n}{\sum_{j=1}^{m}{I_{u,i}}} \right) ln\sigma^{2}+nKln\sigma_{p}^{2}+mKln\sigma_{q}^{2}\right)+C, 21((i=1nj=1mIu,i)lnσ2+nKlnσp2+mKlnσq2)+C,

化简得:
L=12∑u=1n∑i=1mIu,i∣∣ru,i−puqiT∣∣2+λp2∑u=1n∣∣pu∣∣2+λq2∑i=1m∣∣qi∣∣2 L=\frac{1}{2}\sum_{u=1}^{n}\sum_{i=1}^{m}{I_{u,i}\left| \left| r_{u,i}-\mathbf{p}_{u} \mathbf{q}^T_{i} \right| \right|^2}+\frac{\lambda_{p}}{2}\sum_{u=1}^{n}{\left| \left|\mathbf{p}_{u} \right| \right| ^{2}}+\frac{\lambda_{q}}{2}\sum_{i=1}^{m}{\left| \left|\mathbf{q}_{i} \right| \right|^{2}} L=21u=1ni=1mIu,iru,ipuqiT2+2λpu=1npu2+2λqi=1mqi2
详细推导见:

2. 随机梯度下降法(SGD)

λp=λq\lambda_{p}=\lambda_{q}λp=λq 时,PMF 目标函数就如下:

目标函数:
min⁡p,q12∑(u,i)∈O∥ru,i−puqiT∥2+12λ(∥pu∥2+∥qi∥2) \min \limits_ {\mathbf{p},\mathbf{q}} \frac{1}{2}\sum_{\left ( u,i \right )\in \mathbf{O}} {\left \| r_{u,i}-\mathbf{p}_{u} \mathbf{q}^T_{i} \right \|^2} +\frac{1}{2}\lambda \left ( \left \| \mathbf{p}_{u} \right \|^2 + \left \| \mathbf{q}_{i} \right \|^2 \right ) p,qmin21(u,i)Oru,ipuqiT2+21λ(pu2+qi2)
目标函数 LLL 分别对 pu\mathbf{p}_{u}puqi\mathbf{q}_{i}qi 进行求导得:
∂L∂qi=−(ru,i−puqiT)pu+λqi \frac{\partial L}{\partial \mathbf{q}_{i}}= - \left( r_{u,i}-\mathbf{p}_{u} \mathbf{q}^T_{i} \right)\mathbf{p}_{u}+ \lambda \mathbf{q}_{i} qiL=(ru,ipuqiT)pu+λqi
∂L∂pu=−(ru,i−puqiT)qi+λpu \frac{\partial L}{\partial \mathbf{p}_{u}}= - \left( r_{u,i}-\mathbf{p}_{u} \mathbf{q}^T_{i} \right)\mathbf{q}_{i} + \lambda \mathbf{p}_{u} puL=(ru,ipuqiT)qi+λpu

采用的是随机梯度下降法(SGD)进行求解,更新 pu\mathbf{p}_{u}puqi\mathbf{q}_{i}qi
pu←pu−η∂L∂pu=pu+η((ru,i−puqiT)qi−λpu) \mathbf{p}_{u} \leftarrow \mathbf{p}_{u}-\eta \frac{\partial L}{\partial \mathbf{p}_{u}} =\mathbf{p}_{u}+ \eta \left( \left( r_{u,i}-\mathbf{p}_{u} \mathbf{q}^T_{i} \right)\mathbf{q}_{i}- \lambda \mathbf{p}_{u} \right) pupuηpuL=pu+η((ru,ipuqiT)qiλpu)

qi←qi−η∂L∂qi=qi+η((ru,i−puqiT)pu−λqi) \mathbf{q}_{i} \leftarrow \mathbf{q}_{i}-\eta \frac{\partial L}{\partial \mathbf{q}_{i}} =\mathbf{q}_{i} + \eta \left( \left( r_{u,i}-\mathbf{p}_{u} \mathbf{q}_{i}^T \right)\mathbf{p}_{u}-\lambda \mathbf{q}_{i} \right) qiqiηqiL=qi+η((ru,ipuqiT)puλqi)

eui=ru,i−puqiTe_{ui}= r_{u,i}-\mathbf{p}_{u} \mathbf{q}^T_{i}eui=ru,ipuqiT ,上述式子简化为:
pu←pu+η(euiqi−λpu) \mathbf{p}_{u} \leftarrow \mathbf{p}_{u}+\eta \left( e_{ui}\mathbf{q}_{i}-\lambda \mathbf{p}_{u} \right) pupu+η(euiqiλpu)

qi←qi+η(euipu−λqi) \mathbf{q}_{i} \leftarrow \mathbf{q}_{i} +\eta \left( e_{ui}\mathbf{p}_{u}-\lambda \mathbf{q}_{i} \right) qiqi+η(euipuλqi)

核心代码:

def update(p, q, r, learning_rate=0.001, lamda_regularizer=0.1):
    error = r - np.dot(p, q.T)            
    p = p + learning_rate*(error*q - lamda_regularizer*p)
    q = q + learning_rate*(error*p - lamda_regularizer*q)
    loss = 0.5 * (error**2 + lamda_regularizer*(np.square(p).sum() + np.square(q).sum()))
    return p,q,loss

实验结果:

数据集:Movielens100K,随机分割成训练集:测试集=8:2

MAE RMSE Recall@10 Precision@10
0.7347 0.9297 0.0293 0.0620

损失函数曲线:

在这里插入图片描述

3. 改进

1). 带偏置的SVD(BiasSVD)

来源出处:

  • Koren et al. Matrix factorization techniques for recommender systems.Computer 42.8 (2009).

目标函数:
min⁡p,q12∑(u,i)∈O∥ru,i−r^u,i∥2+12λ(∥pu∥2+∥qi∥2+∥bu∥2+∥bi∥2) \min \limits_ {\mathbf{p},\mathbf{q}} \frac{1}{2}\sum_{\left ( u,i \right )\in \mathbf{O}} {\left \| r_{u,i}-\widehat{r}_{u,i} \right \|^2} +\frac{1}{2}\lambda \left ( \left \| \mathbf{p}_{u} \right \|^2 + \left \| \mathbf{q}_{i} \right \|^2 + \left \| b_{u} \right \|^2 + \left \| b_{i} \right \|^2\right ) p,qmin21(u,i)Oru,iru,i2+21λ(pu2+qi2+bu2+bi2)

r^u,i=μ+bu+bi+puqiT \widehat{r}_{u,i}=\mu + b_u + b_i + \mathbf{p}_u \mathbf{q}_i^T ru,i=μ+bu+bi+puqiT

μ\muμ :全部评分的均值

bub_ubu :用户 uuu 的评分均值

bib_ibi :商品 iii 的评分均值

说明介绍:

该方法考虑了实际生活中,用户的评分偏好和商品的特性评分。比如,有对于某商品的好与不好,有用户评分很鲜明,给5和1分;有用户评分比较委婉,给5和3分。由此产生了不同的评分习惯。加入这些因素,用潜在特征来预测用户的喜好与”均值“的偏差更合理。

更新公式
pu←pu+η(euiqi−λpu) \mathbf{p}_{u} \leftarrow \mathbf{p}_{u}+\eta \left( e_{ui}\mathbf{q}_{i}-\lambda \mathbf{p}_{u} \right) pupu+η(euiqiλpu)

qi←qi+η(euipu−λqi) \mathbf{q}_{i} \leftarrow \mathbf{q}_{i} +\eta \left( e_{ui}\mathbf{p}_{u}-\lambda \mathbf{q}_{i} \right) qiqi+η(euipuλqi)

bu←bu+η(eui−λbu) b_u\leftarrow b_u +\eta \left( e_{ui}-\lambda b_u \right) bubu+η(euiλbu)

bi←bi+η(eui−λbi) b_i\leftarrow b_i +\eta \left( e_{ui}-\lambda b_i \right) bibi+η(euiλbi)

核心代码:

def update(p, q, bu, bi, aveg_rating, r, learning_rate=0.001, lamda_regularizer=0.1):
    error = r - (aveg_rating + bu + bi + np.dot(p, q.T))            
    p = p + learning_rate*(error*q - lamda_regularizer*p)
    q = q + learning_rate*(error*p - lamda_regularizer*q)
    bu = bu + learning_rate*(error - lamda_regularizer*bu)
    bi = bi + learning_rate*(error - lamda_regularizer*bi)
    return p,q,bu,bi

实验结果:

数据集:Movielens100K,随机分割成训练集:测试集=8:2

MAE RMSE
0.7210 0.9124

loss 曲线:

在这里插入图片描述

这图是参数与本文其他模型相同时的收敛曲线,并不好看。

BiasSVD 的学习率不好调,调小 loss 曲线完美收敛,但是 MAE 和 RMSE 结果并不好看,应该是陷入了局部收敛区间;当调大时,loss 曲线又不好看,不过实验结果会好很多。我个人感觉是 BiasSVD 太“精细”了,反而容易陷入局部最优解。

2). SVD++

来源出处:

  • Koren Y. Factor in the neighbors: Scalable and accurate collaborative filtering[J]. ACM Transactions on Knowledge Discovery from Data (TKDD), 2010, 4(1): 1.

目标函数:
min⁡12∑(u,i)∈O∥ru,i−r^u,i∥2+12λ(∥pu∥2+∥qi∥2+∥bu∥2+∥bi∥2+∥yj∥2) \min \limits_ {} \frac{1}{2}\sum_{\left ( u,i \right )\in \mathbf{O}} {\left \| r_{u,i}-\widehat{r}_{u,i} \right \|^2} +\frac{1}{2}\lambda \left ( \left \| \mathbf{p}_{u} \right \|^2 + \left \| \mathbf{q}_{i} \right \|^2 + \left \| b_{u} \right \|^2 + \left \| b_{i} \right \|^2+ \left \| \mathbf{y}_{j} \right \|^2\right ) min21(u,i)Oru,iru,i2+21λ(pu2+qi2+bu2+bi2+yj2)

r^u,i=μ+bu+bi+(pu+∣Iu∣−12∑j∈Iuyj)qiT \widehat{r}_{u,i}=\mu + b_u + b_i + \left( \mathbf{p}_u +\left | I_u \right |^{-\frac{1}{2}}\sum_{j \in I_u}^{}y_j \right)\mathbf{q}_i^T ru,i=μ+bu+bi+pu+Iu21jIuyjqiT

其中 IuI_uIu 为用户 uuu 评价过的所有电影的集合; yj\mathbf{y}_jyj 为隐藏的对于商品 jjj 的隐含喜好; ∣Iu∣−12\left | I_u \right |^{-\frac{1}{2}}Iu21 是一个经验公式。

说明介绍:

SVD++ 是 BiasSVD 的改进版,它考虑了用户的历史评分行为,将这些行为数据作为一个偏置加入到模型中,使模型更“精细”。

更新公式:
pu←pu+η(euiqi−λpu) \mathbf{p}_{u} \leftarrow \mathbf{p}_{u}+\eta \left( e_{ui}\mathbf{q}_{i}-\lambda \mathbf{p}_{u} \right) pupu+η(euiqiλpu)

qi←qi+η(eui(pu+∣Iu∣−12∑j∈Iuyj)−λqi) \mathbf{q}_{i} \leftarrow \mathbf{q}_{i} +\eta \left( e_{ui}\left( \mathbf{p}_u +\left | I_u \right |^{-\frac{1}{2}}\sum_{j \in I_u}^{}\mathbf{y}_j \right) -\lambda \mathbf{q}_{i} \right) qiqi+ηeuipu+Iu21jIuyjλqi

bu←bu+η(eui−λbu) b_u\leftarrow b_u +\eta \left( e_{ui}-\lambda b_u \right) bubu+η(euiλbu)

bi←bi+η(eui−λbi) b_i\leftarrow b_i +\eta \left( e_{ui}-\lambda b_i \right) bibi+η(euiλbi)

yj←yj+η(eui∣Iu∣−12qi−λyj) \mathbf{y}_j \leftarrow \mathbf{y}_j +\eta \left( e_{ui} \left | I_u \right |^{-\frac{1}{2}}\mathbf{q}_{i} -\lambda \mathbf{y}_{j} \right) yjyj+η(euiIu21qiλyj)

核心代码:

def update(p,q,bu,bi,Y,aveg_rating,r,Ru,learning_rate=0.001,lamda_regularizer=0.1):
    Iu = np.sum(Ru>0)
    y_sum = np.sum(Y[np.where(Ru>0)],axis=0)
    error = r - (aveg_rating + bu + bi + np.dot(p+Iu**(-0.5)*y_sum, q.T))            
    p = p + learning_rate*(error*q - lamda_regularizer*p)
    q = q + learning_rate*(error*(p + Iu**(-0.5)*y_sum) - lamda_regularizer*q)
    bu = bu + learning_rate*(error - lamda_regularizer*bu)
    bi = bi + learning_rate*(error - lamda_regularizer*bi)
    
    for j in np.where(Ru>0):
        Y[j] = Y[j] + learning_rate*(error*Iu**(-0.5)*q - lamda_regularizer*Y[j])

    return p,q,bu,bi,Y

实验结果:

数据集:Movielens100K,随机分割成训练集:测试集=8:2

MAE RMSE
0.7162 0.9109

3). timeSVD

来源出处:

  • Koren et al. Collaborative filtering with temporal dynamics. Communications of the ACM 53.4 (2010): 89-97.

目标函数:
min⁡12∑(u,i)∈O∥ru,i−r^u,i∥2+12λ(∥pu∥2+∥qi∥2+∥bu∥2+∥bi∥2) \min \limits_ {} \frac{1}{2}\sum_{\left ( u,i \right )\in \mathbf{O}} {\left \| r_{u,i}-\widehat{r}_{u,i} \right \|^2} +\frac{1}{2}\lambda \left ( \left \| \mathbf{p}_{u} \right \|^2 + \left \| \mathbf{q}_{i} \right \|^2 + \left \| b_{u} \right \|^2 + \left \| b_{i} \right \|^2\right ) min21(u,i)Oru,iru,i2+21λ(pu2+qi2+bu2+bi2)

r^u,i=μ+bu(t)+bi(t)+pu(t)qiT \widehat{r}_{u,i}=\mu + b_u\left ( t\right) + b_i\left ( t\right) + \mathbf{p}_u\left ( t\right) \mathbf{q}_i^T ru,i=μ+bu(t)+bi(t)+pu(t)qiT

其中,ttt 为时间因子,表示不同的时间状态。

说明介绍:

文中假设:用户的兴趣是随时间变化的,即 pu\mathbf{p}_upu 与时间 ttt 相关。而 qi\mathbf{q}_iqi 为商品的固有特征,与时间因素无关。比如,大部分用户夏天买短袖、短裤,冬天买长袖、羽绒服,时间效应明显。qi\mathbf{q}_iqi 反映的是商品属性:你评价或者不评价,我都在这里,不增不减。同时,假设用户和商品的评分偏置也随时间 ttt 的变化而变化。

4. 模型对比

在相同学习率 η\etaη、相同正则项系数 λ\lambdaλ、相同特征维度 KKK、相同迭代次数的情况下,

即 learning_rate = 0.005,lamda_regularizer = 0.1,K = 10,max_iteration = 100

MAE (比前一个算法提升 %) RMSE (比前一个算法提升 %)
MF, SVD, Funk-SVD, PMF 0.7279 (-) 0.9297 (-)
BiasSVD 0.7203 (+1.0%) 0.9154 (+0.7%)
SVD++ 0.7162 (+0.5%) 0.9109 (+0.5%)

从上到下,算法刚开始提升效果非常明显,到后来提升效果越来越小。当然,如果再调整参数,结果肯定还会有所提升。

5. 拓展

1) 与主题模型结合

来源出处

  • Wang, Chong, and David M. Blei. “Collaborative topic modeling for recommending scientific articles.” Proceedings of the 17th ACM SIGKDD international conference on Knowledge discovery and data mining. 2011.

示意图:

在这里插入图片描述

大的框架为 LDA 主题模型,小的框架为 PMF 模型。

目标函数:
min⁡U,V12∑(i,j)∈Oci,j∥ru,i−uivjT∥2+12λu∑i∥ui∥2+12λv∑j∥vj−θj∥2−∑j∑hlog(∑kθi,kβk,wj,h) \min \limits_ {\mathbf{U},\mathbf{V}} \frac{1}{2}\sum_{\left ( i,j \right )\in \mathbf{O}}c_{i,j} {\left \| r_{u,i}-u_{i} v^T_{j} \right \|^2} +\frac{1}{2}\lambda_u \sum_{i} \left \| u_{i} \right \|^2 + \frac{1}{2}\lambda_v \sum_{j}\left \| v_{j}- \theta_j \right \|^2 -\sum_{j}\sum_{h}log \left(\sum_{k} \theta_{i,k}\beta_{k,w_{j,h}} \right) U,Vmin21(i,j)Oci,jru,iuivjT2+21λuiui2+21λvjvjθj2jhlog(kθi,kβk,wj,h)
其中,θj\theta_jθj 表示商品 jjj 文本信息的主题分布,βk,wj,h\beta_{k,w_{j,h}}βk,wj,h 表示文中 jjj 中主题 kkk 下词语 hhh 的分布。

简单说明:

有些领域它们除了有交互信息外,文本内容比较丰富,比如新闻,学术论文。用主题模型获取文本信息,弥补交互信息不足时的情况。当交互信息丰富时,PMF 依旧其主要作用。

2) 与社交网络结合

来源出处

  • Purushotham, Sanjay, Yan Liu, and C-C. Jay Kuo. “Collaborative topic regression with social matrix factorization for recommendation systems.” arXiv preprint arXiv:1206.4684 (2012).

示意图:

在这里插入图片描述

红色的框架为上一个模型,蓝色图为添加的社交信息框架。

目标函数:
min⁡U,V12∑(i,j)∈Oci,j∥ru,i−uivjT∥2+12λu∑i∥ui∥2+12λv∑j∥vj−θj∥2−∑j∑hlog(∑kθi,kβk,wj,h) \min \limits_ {\mathbf{U},\mathbf{V}} \frac{1}{2}\sum_{\left ( i,j \right )\in \mathbf{O}}c_{i,j} {\left \| r_{u,i}-u_{i} v^T_{j} \right \|^2} +\frac{1}{2}\lambda_u \sum_{i} \left \| u_{i} \right \|^2 + \frac{1}{2}\lambda_v \sum_{j}\left \| v_{j}- \theta_j \right \|^2 -\sum_{j}\sum_{h}log \left(\sum_{k} \theta_{i,k}\beta_{k,w_{j,h}} \right) U,Vmin21(i,j)Oci,jru,iuivjT2+21λuiui2+21λvjvjθj2jhlog(kθi,kβk,wj,h)

+12λg∑i,f∥gi,f−uisfT∥2+12λs∑k∥sk∥2 +\frac{1}{2}\lambda_g \sum_{i,f}\left \| g_{i,f}- u_{i}s_f^T \right \|^2 +\frac{1}{2}\lambda_s \sum_{k} \left \| s_{k} \right \|^2 +21λgi,fgi,fuisfT2+21λsksk2

其中,sks_{k}sk 为用户的社交矩阵。

简单说明:

上一个模型上“丰富”了商品的特征向量,这个模型采用用户的社交信息来“丰富”用户的特征矩阵。

3) 与神经网络(CNN)结合

来源出处

  • Kim, Donghyun, et al. “Convolutional matrix factorization for document context-aware recommendation.” Proceedings of the 10th ACM Conference on Recommender Systems. 2016.

示意图:

在这里插入图片描述

左侧为 PMF 模型,右侧为 CNN 构建。

目标函数:
min⁡U,V12∑(i,j)∈O∥ru,i−uivjT∥2+12λu∑i∥ui∥2+12λv∑j∥vj−cnn(W,Xj)∥2+12λk∑k∥wk∥2 \min \limits_ {\mathbf{U},\mathbf{V}} \frac{1}{2}\sum_{\left ( i,j \right )\in \mathbf{O}} {\left \| r_{u,i}-u_i v^T_{j} \right \|^2} +\frac{1}{2}\lambda_u \sum_{i} \left \| u_{i} \right \|^2 + \frac{1}{2}\lambda_v \sum_{j}\left \| v_{j}-cnn\left( W,X_j\right) \right \|^2 +\frac{1}{2}\lambda_k \sum_{k} \left \| w_{k} \right \|^2 U,Vmin21(i,j)Oru,iuivjT2+21λuiui2+21λvjvjcnn(W,Xj)2+21λkkwk2
其中,XiX_iXi 为商品 iii 的文本评论,WWW 为 CNN 网络权重。

简单说明:

自从深度学习火了之后,很快就将深度学习的各种模型带入原来的 PMF 构架,来弥补 PMF 本身存在的不足。这里是是用 CNN 得到评论特征,丰富原来来自评分矩阵的特征向量。

声明

本博客所有内容仅供学习,不为商用,如有侵权,请联系博主谢谢。

参考文献

[1] Koren et al. Matrix factorization techniques for recommender systems.Computer 42.8 (2009).
[2] Koren Y. Factor in the neighbors: Scalable and accurate collaborative filtering[J]. ACM Transactions on Knowledge Discovery from Data (TKDD), 2010, 4(1).
[3] Koren et al. Collaborative filtering with temporal dynamics. Communications of the ACM 53.4 (2010): 89-97.
[4] Wang, Chong, and David M. Blei. “Collaborative topic modeling for recommending scientific articles.” Proceedings of the 17th ACM SIGKDD international conference on Knowledge discovery and data mining. 2011.
[5] Purushotham, Sanjay, Yan Liu, and C-C. Jay Kuo. “Collaborative topic regression with social matrix factorization for recommendation systems.” arXiv preprint arXiv:1206.4684 (2012).
[6] Kim, Donghyun, et al. “Convolutional matrix factorization for document context-aware recommendation.” Proceedings of the 10th ACM Conference on Recommender Systems. 2016.

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消