推荐系统–矩阵分解(1)
推荐系统–矩阵分解(2)
推荐系统–矩阵分解(3)
推荐系统–矩阵分解(4)
推荐系统–矩阵分解(5)
推荐系统–矩阵分解(6)
5 TimeSVD++:增加时间因素
- 物品的受欢迎度随着时间而改变,例如,电影可以因外部事件(如新电影中演员的出现)或冷或热。体现在模型中,物品偏差bib_ibi不是常数,而是随时间变化的函数。
- 用户会随着时间改变他们的基线评分。例如,一个倾向于评价电影评分“4星”的用户,因为各种原因现在可能会对这样的电影评分“3星”。
对时间敏感的基线预测为:
bui(t)=μ+bu(t)+bi(t)b_{u i}(t)=\mu+b_{u}(t)+b_{i}(t)bui(t)=μ+bu(t)+bi(t)
分时间段学习参数,某个时间段的参数使用该时间段数据进行学习,也即是加入时间权重:
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)+qiTpu(t)
符号说明:
𝑏𝑢(𝑡)𝑏_𝑢(𝑡)bu(t)、𝑏𝑖(𝑡)𝑏_𝑖(𝑡)bi(t) :分别是用户和物品偏置随着时间变化的函数;
𝑝𝑢(𝑡)𝑝_𝑢(𝑡)pu(t) 是用户隐因子随时间变化的函数。
对于这些随时间变化的函数,一种处理是将时间离散化,可以将整个时间窗按照一定粒度进行划分,粒度越小代表随时间变化较大,粒度越大则代表变化较慢。
注意:对用户和物品而言,时间效应(跨越时间的延长和缩短的效应)不一样。对物品而言,我们不希望电影的受欢迎度每天都在波动,而是在更长的时间内发生变化。对用户而言,我们观察到用户的影响每天都在变化,反映了客户行为的不一致性。在建模用户偏差时,这需要更精确的时间解析,而较低的分辨率足以捕获与项目相关的时间效应。
对于物品偏差,我们不需要太精细的分辨率,比如在TimeSVD++论文中每个bin为连续十周的数据,物品偏差就被分割为一个静态部分和一个时间变化的部分:
bi(t)=bi+bi,Bin(t)b_{i}(t)=b_{i}+b_{i, \operatorname{Bin}(t)}bi(t)=bi+bi,Bin(t)
相当于需要额外对每个时间片求一个参数bi,Bin(t)b_{i, \operatorname{Bin}(t)}bi,Bin(t),以建模物品流行度随时间变化。
对于用户偏差来说,通过几个模型来进行模拟。
-
模型1:定义关于时间的连续函数,一个线性函数刻画了用户评分偏差的漂移,再利用一个简单的线性模型来近似一个漂移行为。
devu(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∣β
参数说明:
(1)tut_utu:用户uuu评分日期的均值;
(2)∣t−tu∣\left|t-t_{u}\right|∣t−tu∣表示ttt和tut_utu之间的时间距离(例如,天数);
(3)通过实验获得β=0.4\beta= 0.4β=0.4。
bu(1)(t)=bu+αu⋅devu(t)b_{u}^{(1)}(t)=b_{u}+\alpha_{u} \cdot \operatorname{dev}_{u}(t) bu(1)(t)=bu+αu⋅devu(t)
参数说明:
(1)每个用户需要学习两个参数:bub_ubu和αu\alpha_uαu -
模型2:时间函数用高斯核来衡量时间的相似性。首先获取用户所有交互时间集合,𝑘𝑢𝑘_𝑢ku 个时间点,即 𝑡1𝑢,…,𝑡𝑘𝑢𝑢𝑡^𝑢_1,\dots,𝑡^𝑢_{𝑘_𝑢}t1u,…,tkuu。
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=1kue−γ∣t−tlu∣∑l=1kue−γ∣t−tlu∣btlu
参数说明:
(1)用户uuu有nun_unu个评分,ku=nu0.25k_u = n_u^{0.25}ku=nu0.25;
(2)kuk_uku个时间点{t1u,…,tkuu}\{t^u_1, \dots, t^u_{k_u}\}{t1u,…,tkuu}均匀分布;
(3)btlub_{t_{l}}^{u}btlu:ttlut^u_{t_l}ttlu时间点用户uuu的平均评分;
(4)e−γ∣t−tlu∣e^{-\gamma\left|t-t_{l}^{u}\right|}e−γ∣t−tlu∣:时间点的偏差;
(5)通过实验获得γ=0.3\gamma = 0.3γ=0.3。 -
模型3:
bu(3)(t)=bu+αu⋅devu(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=1kue−γ∣t−tlu∣∑l=1kue−γ∣t−tlu∣btlu+bu,t
偏差可表示为:
bui(t)=μ+bu+αu⋅devu(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)
优化目标函数为:
min∑(u,i,t)∈K(rui(t)−μ−bu−αudevu(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−αudevu(t)−bu,t−bi−bi,Bin(t))2+λ(bu2+αu2+bu,t2+bi2+bi,Bin(t)2)
6 可解释性推荐
- 矩阵分解:RRR由两个子矩阵UUU和VVV来表达,即R≈UVR \approx UVR≈UV. 其中向量pup_upu表示用户uuu的特征向量,向量qiq_iqi表示商品tit_iti的特征向量;
- 可解释性矩阵分解:当用户uuu偏好于商品tit_iti时,两者具有强相关性,其用户特征向量pup_upu与商品特征向量qiq_iqi在潜在空间上应互相接近,即∥pu−qi∥→0\|p_u -q_i \| \rightarrow 0∥pu−qi∥→0。