(十八)從零開始學人工智慧-智慧推薦系統:矩陣分解
推薦系統系列之二:矩陣分解
@[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∏ni=1∏m[N(ru,i∣puqiT,σ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∏nN(pu∣0,σp2I),p(q∣σq2)=i=1∏mN(qi∣0,σq2I).
注意這個公式中的 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∏ni=1∏m[N(ru,i∣puqiT,σ2)]Iu,i×u=1∏n[N(pu∣0,σp2I)]×i=1∏m[N(qi∣0,σ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 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σ21u=1∑ni=1∑mIij(ru,i−puqiT)2−2σp21i=1∑NpupuT−2σq21i=1∑MqiqiT
−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∑nj=1∑mIu,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=1∑ni=1∑mIu,i∣∣∣∣ru,i−puqiT∣∣∣∣2+2λpu=1∑n∣∣pu∣∣2+2λqi=1∑m∣∣qi∣∣2
詳細推導見:
2. 隨機梯度下降法(SGD)
當 λp=λqlambda_{p}=lambda_{q}λp=λq 時,PMF 目標函式就如下:
目標函式:
minp,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)∈O∑∥∥ru,i−puqiT∥∥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−puqiT)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−puqiT)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−puqiT)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−puqiT)pu−λqi)
令 eui=ru,i−puqiTe_{ui}= r_{u,i}-mathbf{p}_{u} mathbf{q}^T_{i}eui=ru,i−puqiT ,上述式子簡化為:
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+η(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) qi←qi+η(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).
目標函式:
minp,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,qmin21(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+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) pu←pu+η(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) qi←qi+η(euipu−λ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.
目標函式:
min12∑(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 ) min21(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∣−21j∈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+η(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) qi←qi+η⎝⎛eui⎝⎛pu+∣Iu∣−21j∈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∣−21qi−λ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.
目標函式:
min12∑(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 ) min21(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 模型。
目標函式:
minU,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)∈O∑ci,j∥∥ru,i−uivjT∥∥2+21λui∑∥ui∥2+21λvj∑∥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).
示意圖:
紅色的框架為上一個模型,藍色圖為新增的社交資訊框架。
目標函式:
minU,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)∈O∑ci,j∥∥ru,i−uivjT∥∥2+21λui∑∥ui∥2+21λvj∑∥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λgi,f∑∥∥gi,f−uisfT∥∥2+21λsk∑∥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 構建。
目標函式:
minU,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,Vmin21(i,j)∈O∑∥∥ru,i−uivjT∥∥2+21λui∑∥ui∥2+21λvj∑∥vj−cnn(W,Xj)∥2+21λkk∑∥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部落格 ” ,連結:http://blog.itpub.net/854/viewspace-2825406/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 推薦系統-矩陣分解原理詳解矩陣
- 想學人工智慧,先從理解矩陣乘法開始人工智慧矩陣
- 推薦系統實踐 0x0b 矩陣分解矩陣
- 用Spark學習矩陣分解推薦演算法Spark矩陣演算法
- 從零開始學golang之圖-鄰接矩陣Golang矩陣
- ML.NET 示例:推薦之矩陣分解矩陣
- 從零開始學習開發人工智慧(一)人工智慧
- ML.NET 示例:推薦之One Class 矩陣分解矩陣
- 從零開始一起學習SLAM | 神奇的單應矩陣SLAM矩陣
- 人工智慧-機器學習-演算法:非負矩陣分解(NMF)人工智慧機器學習演算法矩陣
- 矩陣分解矩陣
- 從零開始學機器學習——構建一個推薦web應用機器學習Web
- 人工智慧數學基礎—-矩陣人工智慧矩陣
- 人工智慧數學基礎----矩陣人工智慧矩陣
- 從零開始學習C++之遞推C++
- 【譯文】構建一個圖書推薦系統 – 基礎知識、knn演算法和矩陣分解KNN演算法矩陣
- 矩陣分解在協同過濾推薦演算法中的應用矩陣演算法
- python矩陣下標從幾開始?Python矩陣
- 從零開始學習KafkaKafka
- 從零開始學習機器學習機器學習
- 【ROS】從零開始學ROSROS
- 從零開始學習laravelLaravel
- 從零開始學PythonPython
- 機器學習:推薦系統(五. 以矩陣分來解協作過濾)機器學習矩陣
- 達觀資料周顥鈺:想寫出人見人愛的推薦系統,先了解經典矩陣分解技術矩陣
- 兒童節,我們從零開始——Python 入門資源推薦Python
- FORCE矩陣公智慧合約系統開發軟體矩陣
- 從零開始學 Spring BootSpring Boot
- 從零開始學golang之udpGolangUDP
- 從零開始學golang之 PrimGolang
- 從零開始學golang之TCPGolangTCP
- eclipse學習從零開始Eclipse
- 《推薦系統學習》之推薦系統那點事
- 【許曉笛】從零開始執行EOS系統
- 從零開始實踐大模型 - 安裝系統大模型
- 推薦系統與協同過濾、奇異值分解
- 《從零開始學Swift》學習筆記(Day 17)——Swift中陣列集合Swift筆記陣列
- 矩陣分解--超詳細解讀矩陣