推荐系统--矩阵分解(2)
推薦系統(tǒng)–矩陣分解(1)
推薦系統(tǒng)–矩陣分解(2)
推薦系統(tǒng)–矩陣分解(3)
推薦系統(tǒng)–矩陣分解(4)
推薦系統(tǒng)–矩陣分解(5)
推薦系統(tǒng)–矩陣分解(6)
3 BiasSVD:考慮偏置
有一些用戶會(huì)給出偏高的評(píng)分,有一些物品也會(huì)收到偏高的評(píng)分,比如電影觀眾為鐵粉,一些受某時(shí)期某事件影響的電影。所以需要考慮偏置對(duì)評(píng)分的影響,其公式如下:
L(θ)=arg?min??pu,qi∑u,i(rui?μ?bu?bi?puTqi)2+λ(∥pu∥22+∥qi∥22+∥bu∥22+∥bi∥22)(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} \tag4L(θ)=pu?,qi?argmin??u,i∑?(rui??μ?bu??bi??puT?qi?)2+λ(∥pu?∥22?+∥qi?∥22?+∥bu?∥22?+∥bi?∥22?)?(4)
符號(hào)說明:
用戶的預(yù)測評(píng)分為:rui^=puTqi+μ+bu+bi\hat{r_{ui}} = p_{u}^T q_{i} + \mu + b_{u} + b_{i}rui?^?=puT?qi?+μ+bu?+bi?;
偏差為:eui=rui?rui^e_{ui}=r_{ui}-\hat{r_{ui}}eui?=rui??rui?^?;
μ\muμ:訓(xùn)練集中所有評(píng)分記錄的全局平均數(shù),表示了訓(xùn)練數(shù)據(jù)的總體評(píng)分情況,對(duì)于固定的數(shù)據(jù)集,它是一個(gè)常數(shù);
bub_ubu?:用戶uuu的偏置,獨(dú)立于物品特征的因素,表示某一特定用戶的打分習(xí)慣。例如,對(duì)于批判性用戶對(duì)于自己的評(píng)分比較苛刻,傾向于打低分;而樂觀型用戶則打分比較保守,總體打分要偏高;
bib_ibi?:物品iii的偏置,特立于用戶興趣的因素,表示某一特定物品得到的打分情況。以電影為例,好片獲得的總體評(píng)分偏高,而爛片獲得的評(píng)分普遍偏低,物品偏置捕獲的就是這樣的特征。
對(duì)公式(4)求偏導(dǎo),理后可以得到迭代公式為:
pu,k=pu,k+η(euiqk,i?λpu,k)qk,i=qk,i+η(euipu,k?λqi,k)bu=bu+η(eui?λbu)bi=bi+η(eui?λbi)(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,k?qk,i?bu?bi??=pu,k?+η(eui?qk,i??λpu,k?)=qk,i?+η(eui?pu,k??λqi,k?)=bu?+η(eui??λbu?)=bi?+η(eui??λbi?)?(5)
4 SVD++:增加歷史行為
通過觀看B站上的視頻,終于把SVD++核心思想搞清楚了:
- 它是來探索物品與物品之間關(guān)聯(lián)關(guān)系的,比如對(duì)逃學(xué)威龍1評(píng)分高的人,可能也會(huì)給逃學(xué)威龍2高評(píng)分;
- 由于需要探索物品與物品之間的關(guān)聯(lián)關(guān)系,可以使用顯式反饋,也可以使用顯式反饋+隱式反饋;
- 利用隱式反饋來探索物品與物品之間的關(guān)聯(lián)關(guān)系,信息更加豐富:少數(shù)用戶會(huì)主動(dòng)點(diǎn)評(píng)電影或者美食,大多數(shù)用戶只會(huì)瀏覽或者觀看,也就是說顯式反饋比隱式反饋少。
SVD++模型的步驟如下:
- 對(duì)于某一個(gè)用戶uuu,它提供了反饋的物品集合定義為N(u)N(u)N(u);
- 假設(shè)j∈N(u)j \in N(u)j∈N(u),該物品jjj和預(yù)測物品iii之間的關(guān)系為wijw_{ij}wij?;
- 將這個(gè)關(guān)系作為預(yù)測評(píng)分的一個(gè)部分,則有如下公式:
rui^=μ+bu+bi+puTqi+1∣N(u)∣∑j∈N(u)wij(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?+puT?qi?+∣N(u)∣?1?j∈N(u)∑?wij??(6)
引入1∣N(u)∣\frac{1}{\sqrt{|N(u)|}}∣N(u)∣?1?是為了消除不同∣N(u)∣|N(u)|∣N(u)∣個(gè)數(shù)引起的差異。
WWW矩陣如下表所示:
| t1t_1t1? | w11w_{11}w11? | w12w_{12}w12? | w13w_{13}w13? | w14w_{14}w14? |
| t2t_2t2? | w21w_{21}w21? | w22w_{22}w22? | w23w_{23}w23? | w24w_{24}w24? |
| t3t_3t3? | w31w_{31}w31? | w32w_{32}w32? | w33w_{33}w33? | w34w_{34}w34? |
| t4t_4t4? | w41w_{41}w41? | w42w_{42}w42? | w43w_{43}w43? | w44w_{44}w44? |
- WWW矩陣維度為n×nn \times nn×n,維度很大,我們對(duì)WWW進(jìn)行矩陣分解后得到如下公式:
rui^=μ+bu+bi+puTqi+1∣N(u)∣xuT∑j∈N(u)yj(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?+puT?qi?+∣N(u)∣?1?xuT?j∈N(u)∑?yj??(7)
- xux_uxu?表示用戶的隱向量,可以用pup_upu?替換,這樣就減少了對(duì)WWW矩陣的分解,則上式可以表示為:
rui^=μ+bu+bi+puTqi+1∣N(u)∣puT∑j∈N(u)yj=μ+bu+bi+puT(qi+1∣N(u)∣∑j∈N(u)yj)(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?+puT?qi?+∣N(u)∣?1?puT?j∈N(u)∑?yj?=μ+bu?+bi?+puT????qi?+∣N(u)∣?1?j∈N(u)∑?yj?????(10)
其優(yōu)化目標(biāo)函數(shù):
L(θ)=arg?min??pu,qi∑u,i(rui?μ?bu?bi?puTqi?puT1∣N(u)∣∑j∈N(u)yj)2+λ(∥pu∥22+∥qi∥22+∥bu∥22+∥bi∥22+∑j∈N(u)∥yj∥22)(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?argmin??u,i∑????rui??μ?bu??bi??puT?qi??puT?∣N(u)∣?1?j∈N(u)∑?yj????2+λ???∥pu?∥22?+∥qi?∥22?+∥bu?∥22?+∥bi?∥22?+j∈N(u)∑?∥yj?∥22?????(11)
對(duì)公式(11)求偏導(dǎo),令eui=rui?rui^e_{ui}=r_{ui}- \hat{r_{ui}}eui?=rui??rui?^?,整理后可以得到迭代公式:
bu=bu+η?(eui?λ?bu)bi=bi+η?(eui?λ?bi)pu=pu+η?(eui?qi?λ?pu)qi=qi+η?(eui(pu+1∣N(u)∣∑j∈N(u)yj)?λ?qi)yj=yj+η?(eui?1∣N(u)∣qi?λ?qi)(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)∣?1?j∈N(u)∑?yj?)?λ?qi?)yj?=yj?+η?(eui??∣N(u)∣?1?qi??λ?qi?)?(12)
參考的迭代公式如下:
總結(jié)
以上是生活随笔為你收集整理的推荐系统--矩阵分解(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql php宝塔 root_[转载
- 下一篇: 英雄联盟服务器维护3月17,英雄联盟将于