ITPub博客

首页 > IT职业 > IT生活 > (十八)从零开始学人工智能-智能推荐系统:矩阵分解

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

IT生活 作者:w39 时间:2021-09-09 10:42:27 0 删除 编辑

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

@[TOC]

1. 理论基础

说明介绍:

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

来源出处:

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

定义和描述

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

图片描述

主要推导:

假设关于已知评分数据的条件分布满足高斯分布:
p(R∣p,q,σ2)=∏u=1n∏i=1m[N(ru,i∣puqiT,σ2)]Iij, pleft( mathbf{R}|mathbf{p},mathbf{q},sigma^{2} right)=prod_{u=1}^{n}prod_{i=1}^{m}left[ Nleft( r_{u,i}|mathbf{p}_{u}mathbf{q}_{i}^T,sigma^{2} right)right]^{I_{ij}}, p(R∣p,q,σ2)=u=1∏n​i=1∏m​[N(ru,i​∣pu​qiT​,σ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). pleft( mathbf{p}|sigma_{p}^{2} right)=prod_{u=1}^{n}Nleft( mathbf{p}_{u}|0,sigma_{p}^{2}mathbf{I} right),pleft( mathbf{q}|sigma_{q}^{2} right)=prod_{i=1}^{m}Nleft( mathbf{q}_{i}|0,sigma_{q}^{2}mathbf{I} right). p(p∣σp2​)=u=1∏n​N(pu​∣0,σp2​I),p(q∣σq2​)=i=1∏m​N(qi​∣0,σq2​I).
注意这个公式中的 Imathbf{I}I 不是指示函数,表示一个对角阵。

然后,计算 pmathbf{p}p 和 qmathbf{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) pleft( mathbf{p},mathbf{q}|R,sigma^{2},sigma_{q}^{2}, sigma_{p}^{2}right)=frac{ pleft( mathbf{p},mathbf{q},R,sigma^{2},sigma_{q}^{2}, sigma_{p}^{2}right) }{ pleft( R,sigma^{2},sigma_{q}^{2}, sigma_{p}^{2}right) }=frac{pleft( R|mathbf{p},mathbf{q},sigma^{2}right)times pleft( mathbf{p},mathbf{q} |sigma_{q}^{2}, sigma_{p}^{2}right)}{pleft( R,sigma^{2},sigma_{q}^{2}, sigma_{p}^{2}right)} p(p,q∣R,σ2,σq2​,σp2​)=p(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∣p,q,σ2)×p(p,q∣σq2,σp2) sim pleft( R|mathbf{p},mathbf{q},sigma^{2}right)times pleft( mathbf{p},mathbf{q} |sigma_{q}^{2}, sigma_{p}^{2} right) ∼p(R∣p,q,σ2)×p(p,q∣σq2​,σp2​)

=p(R∣p,q,σ2)×p(p∣σp2)×p(q∣σq2) =pleft( R|mathbf{p},mathbf{q},sigma^{2} right)times pleft( mathbf{p} | sigma_{p}^{2}right)times pleft( mathbf{q} |sigma_{q}^{2}right) =p(R∣p,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[ Nleft( r_{u,i}|mathbf{p}_{u}mathbf{q}_{i}^T,sigma^{2} right) right]^{I_{u,i}}times prod_{u=1}^{n}left[ Nleft( mathbf{p}_{u}|0,sigma_{p}^{2}I right) right]times prod_{i=1}^{m}left[ Nleft( mathbf{q}_{i}|0,sigma_{q}^{2}I right) right] =u=1∏n​i=1∏m​[N(ru,i​∣pu​qiT​,σ2)]Iu,i​×u=1∏n​[N(pu​∣0,σp2​I)]×i=1∏m​[N(qi​∣0,σq2​I)]

等式两边取对数 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 lnpleft( mathbf{p},mathbf{q}|mathbf{R},sigma^{2},sigma_{p}^{2}, sigma_{q}^{2}right)=-frac{1}{2sigma^{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}{2sigma_{p}^{2}}sum_{i=1}^{N}{mathbf{p}_{u}mathbf{p}_{u}^{T}}-frac{1}{2sigma_{q}^{2}}sum_{i=1}^{M}{mathbf{q}_{i}mathbf{q}_{i}^{T}} lnp(p,q∣R,σ2,σp2​,σq2​)=−2σ21​u=1∑n​i=1∑m​Iij​(ru,i​−pu​qiT​)2−2σp2​1​i=1∑N​pu​puT​−2σq2​1​i=1∑M​qi​qiT​

−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) lnsigma^{2}+nKlnsigma_{p}^{2}+mKlnsigma_{q}^{2}right)+C, −21​((i=1∑n​j=1∑m​Iu,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=21​u=1∑n​i=1∑m​Iu,i​∣∣​∣∣​ru,i​−pu​qiT​∣∣​∣∣​2+2λp​​u=1∑n​∣∣pu​∣∣2+2λq​​i=1∑m​∣∣qi​∣∣2
详细推导见:

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

当 λp=λqlambda_{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,qmin​21​(u,i)∈O∑​∥∥​ru,i​−pu​qiT​∥∥​2+21​λ(∥pu​∥2+∥qi​∥2)
目标函数 LLL 分别对 pumathbf{p}_{u}pu​ 和 qimathbf{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} ∂qi​∂L​=−(ru,i​−pu​qiT​)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} ∂pu​∂L​=−(ru,i​−pu​qiT​)qi​+λpu​

采用的是随机梯度下降法(SGD)进行求解,更新 pumathbf{p}_{u}pu​ 和 qimathbf{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) pu​←pu​−η∂pu​∂L​=pu​+η((ru,i​−pu​qiT​)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) qi​←qi​−η∂qi​∂L​=qi​+η((ru,i​−pu​qiT​)pu​−λqi​)

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

qi←qi+η(euipu−λqi) mathbf{q}_{i} leftarrow mathbf{q}_{i} +eta left( e_{ui}mathbf{p}_{u}-lambda mathbf{q}_{i} right) qi​←qi​+η(eui​pu​−λ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 |^2right ) p,qmin​21​(u,i)∈O∑​∥ru,i​−ru,i​∥2+21​λ(∥pu​∥2+∥qi​∥2+∥bu​∥2+∥bi​∥2)

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​+pu​qiT​

μ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) pu​←pu​+η(eui​qi​−λpu​)

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

bu←bu+η(eui−λbu) b_uleftarrow b_u +eta left( e_{ui}-lambda b_u right) bu​←bu​+η(eui​−λbu​)

bi←bi+η(eui−λbi) b_ileftarrow b_i +eta left( e_{ui}-lambda b_i right) bi​←bi​+η(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 |^2right ) min​21​(u,i)∈O∑​∥ru,i​−ru,i​∥2+21​λ(∥pu​∥2+∥qi​∥2+∥bu​∥2+∥bi​∥2+∥yj​∥2)

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​+∣Iu​∣−21​j∈Iu​∑​yj​⎠⎞​qiT​

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

说明介绍:

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) pu​←pu​+η(eui​qi​−λ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) qi​←qi​+η⎝⎛​eui​⎝⎛​pu​+∣Iu​∣−21​j∈Iu​∑​yj​⎠⎞​−λqi​⎠⎞​

bu←bu+η(eui−λbu) b_uleftarrow b_u +eta left( e_{ui}-lambda b_u right) bu​←bu​+η(eui​−λbu​)

bi←bi+η(eui−λbi) b_ileftarrow b_i +eta left( e_{ui}-lambda b_i right) bi​←bi​+η(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) yj​←yj​+η(eui​∣Iu​∣−21​qi​−λ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 |^2right ) min​21​(u,i)∈O∑​∥ru,i​−ru,i​∥2+21​λ(∥pu​∥2+∥qi​∥2+∥bu​∥2+∥bi​∥2)

r^u,i=μ+bu(t)+bi(t)+pu(t)qiT widehat{r}_{u,i}=mu + b_uleft ( tright) + b_ileft ( tright) + mathbf{p}_uleft ( tright) mathbf{q}_i^T ru,i​=μ+bu​(t)+bi​(t)+pu​(t)qiT​

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

说明介绍:

文中假设:用户的兴趣是随时间变化的,即 pumathbf{p}_upu​ 与时间 ttt 相关。而 qimathbf{q}_iqi​ 为商品的固有特征,与时间因素无关。比如,大部分用户夏天买短袖、短裤,冬天买长袖、羽绒服,时间效应明显。qimathbf{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,Vmin​21​(i,j)∈O∑​ci,j​∥∥​ru,i​−ui​vjT​∥∥​2+21​λu​i∑​∥ui​∥2+21​λv​j∑​∥vj​−θj​∥2−j∑​h∑​log(k∑​θi,k​βk,wj,h​​)
其中,θjtheta_jθj​ 表示商品 jjj 文本信息的主题分布,βk,wj,hbeta_{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,Vmin​21​(i,j)∈O∑​ci,j​∥∥​ru,i​−ui​vjT​∥∥​2+21​λu​i∑​∥ui​∥2+21​λv​j∑​∥vj​−θj​∥2−j∑​h∑​log(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​λg​i,f∑​∥∥​gi,f​−ui​sfT​∥∥​2+21​λs​k∑​∥sk​∥2

其中,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}-cnnleft( W,X_jright) right |^2 +frac{1}{2}lambda_k sum_{k} left | w_{k} right |^2 U,Vmin​21​(i,j)∈O∑​∥∥​ru,i​−ui​vjT​∥∥​2+21​λu​i∑​∥ui​∥2+21​λv​j∑​∥vj​−cnn(W,Xj​)∥2+21​λk​k∑​∥wk​∥2
其中,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.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/854/viewspace-2825406/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-14

  • 博文量
    92
  • 访问量
    268574