推荐系统--矩阵分解(3)
推薦系統(tǒng)–矩陣分解(1)
推薦系統(tǒng)–矩陣分解(2)
推薦系統(tǒng)–矩陣分解(3)
推薦系統(tǒng)–矩陣分解(4)
推薦系統(tǒng)–矩陣分解(5)
推薦系統(tǒng)–矩陣分解(6)
5 TimeSVD++:增加時間因素
- 物品的受歡迎度隨著時間而改變,例如,電影可以因外部事件(如新電影中演員的出現(xiàn))或冷或熱。體現(xiàn)在模型中,物品偏差bib_ibi?不是常數(shù),而是隨時間變化的函數(shù)。
- 用戶會隨著時間改變他們的基線評分。例如,一個傾向于評價電影評分“4星”的用戶,因為各種原因現(xiàn)在可能會對這樣的電影評分“3星”。
對時間敏感的基線預(yù)測為:
bui(t)=μ+bu(t)+bi(t)b_{u i}(t)=\mu+b_{u}(t)+b_{i}(t)bui?(t)=μ+bu?(t)+bi?(t)
分時間段學(xué)習(xí)參數(shù),某個時間段的參數(shù)使用該時間段數(shù)據(jù)進(jìn)行學(xué)習(xí),也即是加入時間權(quán)重:
r^ui=μ+bu(t)+bi(t)+qiTpu(t)\hat{r}_{u i}=\mu+b_{u}(t)+b_{i}(t)+q_{i}^{T} p_{u}(t)r^ui?=μ+bu?(t)+bi?(t)+qiT?pu?(t)
符號說明:
𝑏𝑢(𝑡)𝑏_𝑢(𝑡)bu?(t)、𝑏𝑖(𝑡)𝑏_𝑖(𝑡)bi?(t) :分別是用戶和物品偏置隨著時間變化的函數(shù);
𝑝𝑢(𝑡)𝑝_𝑢(𝑡)pu?(t) 是用戶隱因子隨時間變化的函數(shù)。
對于這些隨時間變化的函數(shù),一種處理是將時間離散化,可以將整個時間窗按照一定粒度進(jìn)行劃分,粒度越小代表隨時間變化較大,粒度越大則代表變化較慢。
注意:對用戶和物品而言,時間效應(yīng)(跨越時間的延長和縮短的效應(yīng))不一樣。對物品而言,我們不希望電影的受歡迎度每天都在波動,而是在更長的時間內(nèi)發(fā)生變化。對用戶而言,我們觀察到用戶的影響每天都在變化,反映了客戶行為的不一致性。在建模用戶偏差時,這需要更精確的時間解析,而較低的分辨率足以捕獲與項目相關(guān)的時間效應(yīng)。
對于物品偏差,我們不需要太精細(xì)的分辨率,比如在TimeSVD++論文中每個bin為連續(xù)十周的數(shù)據(jù),物品偏差就被分割為一個靜態(tài)部分和一個時間變化的部分:
bi(t)=bi+bi,Bin?(t)b_{i}(t)=b_{i}+b_{i, \operatorname{Bin}(t)}bi?(t)=bi?+bi,Bin(t)?
相當(dāng)于需要額外對每個時間片求一個參數(shù)bi,Bin?(t)b_{i, \operatorname{Bin}(t)}bi,Bin(t)?,以建模物品流行度隨時間變化。
對于用戶偏差來說,通過幾個模型來進(jìn)行模擬。
-
模型1:定義關(guān)于時間的連續(xù)函數(shù),一個線性函數(shù)刻畫了用戶評分偏差的漂移,再利用一個簡單的線性模型來近似一個漂移行為。
dev?u(t)=sign?(t?tu)?∣t?tu∣β\operatorname{dev}_{u}(t)=\operatorname{sign}\left(t-t_{u}\right) \cdot\left|t-t_{u}\right|^{\beta} devu?(t)=sign(t?tu?)?∣t?tu?∣β
參數(shù)說明:
(1)tut_utu?:用戶uuu評分日期的均值;
(2)∣t?tu∣\left|t-t_{u}\right|∣t?tu?∣表示ttt和tut_utu?之間的時間距離(例如,天數(shù));
(3)通過實(shí)驗獲得β=0.4\beta= 0.4β=0.4。
bu(1)(t)=bu+αu?dev?u(t)b_{u}^{(1)}(t)=b_{u}+\alpha_{u} \cdot \operatorname{dev}_{u}(t) bu(1)?(t)=bu?+αu??devu?(t)
參數(shù)說明:
(1)每個用戶需要學(xué)習(xí)兩個參數(shù):bub_ubu?和αu\alpha_uαu? -
模型2:時間函數(shù)用高斯核來衡量時間的相似性。首先獲取用戶所有交互時間集合,𝑘𝑢𝑘_𝑢ku? 個時間點(diǎn),即 𝑡1𝑢,…,𝑡𝑘𝑢𝑢𝑡^𝑢_1,\dots,𝑡^𝑢_{𝑘_𝑢}t1u?,…,tku?u?。
bu(2)(t)=bu+∑l=1kue?γ∣t?tlu∣btlu∑l=1kue?γ∣t?tlu∣b_{u}^{(2)}(t)=b_{u}+\frac{\sum_{l=1}^{k_{u}} e^{-\gamma\left|t-t_{l}^{u}\right|} b_{t_{l}}^{u}}{\sum_{l=1}^{k_{u}} e^{-\gamma\left|t-t_{l}^{u}\right|}} bu(2)?(t)=bu?+∑l=1ku??e?γ∣t?tlu?∣∑l=1ku??e?γ∣t?tlu?∣btl?u??
參數(shù)說明:
(1)用戶uuu有nun_unu?個評分,ku=nu0.25k_u = n_u^{0.25}ku?=nu0.25?;
(2)kuk_uku?個時間點(diǎn){t1u,…,tkuu}\{t^u_1, \dots, t^u_{k_u}\}{t1u?,…,tku?u?}均勻分布;
(3)btlub_{t_{l}}^{u}btl?u?:ttlut^u_{t_l}ttl?u?時間點(diǎn)用戶uuu的平均評分;
(4)e?γ∣t?tlu∣e^{-\gamma\left|t-t_{l}^{u}\right|}e?γ∣t?tlu?∣:時間點(diǎn)的偏差;
(5)通過實(shí)驗獲得γ=0.3\gamma = 0.3γ=0.3。 -
模型3:
bu(3)(t)=bu+αu?dev?u(t)+bu,tb_{u}^{(3)}(t)=b_{u}+\alpha_{u} \cdot \operatorname{dev}_{u}(t)+b_{u, t} bu(3)?(t)=bu?+αu??devu?(t)+bu,t?
- 模型4:
bu(4)(t)=bu+∑l=1kue?γ∣t?tlu∣btlu∑l=1kue?γ∣t?tlu∣+bu,tb_{u}^{(4)}(t)=b_{u}+\frac{\sum_{l=1}^{k_{u}} e^{-\gamma\left|t-t_{l}^{u}\right|} b_{t_{l}}^{u}}{\sum_{l=1}^{k_{u}} e^{-\gamma\left|t-t_{l}^{u}\right|}}+b_{u, t} bu(4)?(t)=bu?+∑l=1ku??e?γ∣t?tlu?∣∑l=1ku??e?γ∣t?tlu?∣btl?u??+bu,t?
偏差可表示為:
bui(t)=μ+bu+αu?dev?u(t)+bu,t+bi+bi,Bin?(t)b_{u i}(t)=\mu+b_{u}+\alpha_{u} \cdot \operatorname{dev}_{u}(t)+b_{u, t}+b_{i}+b_{i, \operatorname{Bin}(t)} bui?(t)=μ+bu?+αu??devu?(t)+bu,t?+bi?+bi,Bin(t)?
優(yōu)化目標(biāo)函數(shù)為:
min?∑(u,i,t)∈K(rui(t)?μ?bu?αudev?u(t)?bu,t?bi?bi,Bin?(t))2+λ(bu2+αu2+bu,t2+bi2+bi,Bin?(t)2)\begin{aligned} \min \sum_{(u, i, t) \in \mathcal{K}}(&\left.r_{u i}(t)-\mu-b_{u}-\alpha_{u} \operatorname{dev}_{u}(t)-b_{u, t}-b_{i}-b_{i, \operatorname{Bin}(t)}\right)^{2} \\ &+\lambda\left(b_{u}^{2}+\alpha_{u}^{2}+b_{u, t}^{2}+b_{i}^{2}+b_{i, \operatorname{Bin}(t)}^{2}\right) \end{aligned} min(u,i,t)∈K∑?(?rui?(t)?μ?bu??αu?devu?(t)?bu,t??bi??bi,Bin(t)?)2+λ(bu2?+αu2?+bu,t2?+bi2?+bi,Bin(t)2?)?
6 可解釋性推薦
- 矩陣分解:RRR由兩個子矩陣UUU和VVV來表達(dá),即R≈UVR \approx UVR≈UV. 其中向量pup_upu?表示用戶uuu的特征向量,向量qiq_iqi?表示商品tit_iti?的特征向量;
- 可解釋性矩陣分解:當(dāng)用戶uuu偏好于商品tit_iti?時,兩者具有強(qiáng)相關(guān)性,其用戶特征向量pup_upu?與商品特征向量qiq_iqi?在潛在空間上應(yīng)互相接近,即∥pu?qi∥→0\|p_u -q_i \| \rightarrow 0∥pu??qi?∥→0。
總結(jié)
以上是生活随笔為你收集整理的推荐系统--矩阵分解(3)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (pytorch-深度学习系列)使用so
- 下一篇: aix系统升级失败提示java_AIX系