【推荐系统算法】DPMF(Dependent Probabilistic Matrix Factorization).上篇
2016-01-25 22:34
495 查看
Adams, Ryan Prescott, George E. Dahl, and Iain Murray. “Incorporating
side information in probabilistic matrix factorization with gaussian
processes.” arXiv preprint arXiv:1003.4944 (2010).
对“PMF”这个概念比较陌生的同学请先阅读这篇基础PMF算法。
对“利用MCMC方法积掉后验概率”这句话感到费解的同学可以参看这篇贝叶斯PMF算法。
在PMF中,使用一个关系矩阵ZZ来描述用户对电影的评分。但除了这个基本信息之外,还有一些辅助信息:用户的身份、在网页上的操作、电影的票房、打分发生的时间等。
再以篮球比赛为例,ZZ矩阵存储球队间竞赛得分。而球队球员买卖、伤病情况、主客场、比赛时间都是辅助信息。
这篇文章在PMF的基础上,引入了辅助信息,其方法称为DPMF。作者George Dahl是Hinton的学生。源码和数据都可以下载。本文使用篮球比赛举例。
用xx表示辅助信息,其维度为DD。基础PMF中的关系矩阵ZZ是一个随机变量,这里的Z(x)Z(x)变成了关于xx的随机过程。
在一个观测中,Z(x)Z(x)每个位置上的xx值互不相同。
例子
xx可能包括比赛的地点和时间。主场/客场会影响发挥,相近似的比赛场次会有相近的结果。但即使知道了时间和地点,比赛仍然存在不确定性。某一特定时刻的Z(x0)Z(x_0)是一个随机变量。
和基础PMF类似,ZZ的每一个元素是一个高斯随机变量
Zm,n(x)∼N(Ym,n(x),σ2)=N(Um(xm)VTn(xn),σ2)Z_{m,n}(x) \sim N\left( Y_{m,n}(x), \sigma^2 \right) = N\left( U_m(x_m)V^T_n(x_n), \sigma^2 \right)
UU的第m行以及VV的第n行,对应ZZ中的一个元素mn,故UU的每一行的xx取值相同,记为xmx_m,同理VV的每一行的辅助信息记为xnx_n。例如:只讨论一个辅助信息(时间),则xm,xnx_m,x_n为标量。(后续为简洁起见,有时省略了x的脚标)
其中均值Y(x)Y(x)表示系统内部参数,方差σ\sigma。随机过程U(x),V(x)U(x),V(x)尺寸为M×K,N×KM\times K, N\times K,为低秩的系统内部参数,是要估计的。
为了在同一场比赛的两队得分间引入相关性(己方得分高→\to注重进攻→\to防守弱→\to对方得分高),用二元高斯来描述对称位置的元素。σ,ρ\sigma, \rho为待估计变量。
[Zm,n(x)Zn,m(x)]∼N(Ym,n(x)Yn,m(x),[σ2ρσ2ρσ2σ2]) \left[ \begin{matrix} Z_{m,n}(x) \\ Z_{n,m}(x)\end{matrix} \right] \sim N \left( \begin{matrix} Y_{m,n}(x) \\ Y_{n,m}(x)\end{matrix} , \left[ \begin{matrix} \sigma^2 \rho \sigma^2 \\ \rho \sigma^2 \sigma^2 \end{matrix} \right]\right)
整个关系矩阵的概率为各元素概率乘积。
p(Z(x))=∏m,np(Zm,n(x))p(Z(x)) = \prod_{m,n}p(Z_{m,n}(x))
Zm,n(x)=Um(x)T⋅Vn(x)Z_{m,n}(x) = U_m(x)^T \cdot V_n(x)
各个队伍的情况(U(x),V(x)U(x),V(x)各行)相互独立,但一支队伍的各种因素(Um(x)的K个元素U_m(x)的K个元素)关于x有相关性。例如:主客场会影响前锋的表现,也会影响中锋的表现。U,VU,V的各列之间存在联系。
用独立随机过程的线性组合来表达这种队伍内部各因素的相关性
Um(x)=LUfUm(xm)+μUU_m(x) = L^U f_m^U(x_m) + \mu ^U
Vn(x)=LVfVn(xn)+μVV_n(x) = L^V f_n^V(x_n) + \mu ^V
其中fU(x),fV(x)f^U(x),f^V(x)是随机过程,尺寸和U,VU,V相同,各元素之间独立。
μU,μV\mu^U,\mu^V描述得分/失分的均值,服从高斯分布。
LU,LVL^U,L^V尺寸为K×KK\times K,用来描述一个队伍内部特征的相关性。
用相关矩阵的Cholesky分解对其进行定义
ΣU=LU(LU)T,ΣV=LV(LV)T\Sigma^U = L^U (L^U)^T, \Sigma^V = L^V (L^V)^T
Σ\Sigma是随机正定矩阵。
μ和L\mu和L为待估计变量,在各个队伍之间通用,保证了队伍之间的相关性。
fU,fVf^U,f^V的每一个元素是关于辅助信息xx的0均值高斯过程。(设定0均值是为了书写方便,且不失一般性)
fUm,k(xm)∼GP(xm|θUk), fVn,k(xn)∼GP(xn|θVk)f^U_{m,k}(x_m) \sim GP(x_m| \theta_k^U), \ \ \ \ \ \ \ \ f^V_{n,k}(x_n) \sim GP(x_n| \theta_k^V)
m=1,2...M,n=1,2...N,k=1,2...K m=1,2...M, n=1,2...N, k=1,2...K
θU,θV\theta^U,\theta^V是高斯过程的参数,维度为K,对应进攻和防守的K个特征。
m,n是ff矩阵的行标,表示不同队伍;k是ff矩阵的列标,表示不同的特征。
ff矩阵的各行服从相同的高斯过程。换言之,可以用同一个高斯过程采样N次得到fUf^U的每一行。ff矩阵的各列对应使用相同的xx。也就是说,每只队伍的不同属性有相同的辅助特征。
辅助信息x1,x2x_1,x_2维度均为D。高斯过程的相关矩阵可以有如下形式
C(x1,x2)=exp{−12∑d=1D(x1d−x2d)2θd}C(x_1,x_2)= \exp \{ -\frac{1}{2} \sum_{d=1}^D \frac{(x_{1d}-x_{2d})^2} {\theta_d} \}
高斯形式:辅助信息相近,则相关性高。例:x表示教练风格,风格相近则战绩相近。
C(x1,x2)=exp{−2sin2(12(x1−x2))/θ}C(x_1,x_2)=\exp \{ -2\sin ^2\left( \frac{1}{2}(x_1-x_2) \right) /\theta \}
周期形式:辅助信息差距周期性影响相关性,只适用于标量。例:x表示时间,每年年末观众都会喜爱贺岁片。
这里的参数θ\theta也称为length scale,控制于高斯过程的方差,用来描述不同时刻(在本模型中对应比赛时间或者场地)高斯变量的相似性。θ\theta为待估计参数,共有2K个。
由于涉及的变量很多,用下图进行总结性说明:
已知全部SS场比赛的主队得分ZOs(x)ZO_s(x),以及相应的客队得分ZDs(x)ZD_s(x)(其中O=Offensive, D = Defensive)。每场比赛的两个得分符合联合高斯分布:
[ZOs(x),ZDs(x)]∼N([YOs(x),YFs(x)],[σ2ρσ2ρσ2σ2])[ZO_s(x), ZD_s(x)] \sim N( [YO_s(x),YF_s(x)], \left [\begin{matrix} \sigma^2 \rho \sigma^2 \\ \rho \sigma^2 \sigma^2 \end{matrix} \right] )
其中YOs(x),YDs(x)YO_s(x), YD_s(x)为第ss场比赛的期望得分。
第ss场比赛的主队和客队分别为m(s),n(s)m(s),n(s)。比赛的期望比分取决于参赛两队的进攻和防守能力。
YOs(x)=UTm(s)(x)⋅Vn(s)(x), YDs(x)=VTm(s)(x)⋅Un(s)(x)YO_s(x) = U_{m(s)}^T(x) \cdot V_{n(s)}(x), \ \ \ YD_s(x) = V_{m(s)}^T(x) \cdot U_{n(s)}(x)
为了避免“负负得正”的情况(multimodality)给参数估计过程带来困扰,利用函数ψ(t)=ln(1+et)\psi(t) = \ln(1+e^t)强行限制第二项为正。
YOs(x)=UTm(s)(x)⋅ψ(Vn(s)(x)), YDs(x)=VTm(s)(x)⋅ψ(Un(s)(x))YO_s(x) = U_{m(s)}^T(x) \cdot \psi \left( V_{n(s)}(x) \right), \ \ \ YD_s(x) = V_{m(s)}^T(x) \cdot \psi \left( U_{n(s)}(x) \right)
其余部分和原来相同。以上给出了问题的概率模型。如何优化模型参数进行预测请参看推荐系统算法(DPMF).中篇。
side information in probabilistic matrix factorization with gaussian
processes.” arXiv preprint arXiv:1003.4944 (2010).
对“PMF”这个概念比较陌生的同学请先阅读这篇基础PMF算法。
对“利用MCMC方法积掉后验概率”这句话感到费解的同学可以参看这篇贝叶斯PMF算法。
在PMF中,使用一个关系矩阵ZZ来描述用户对电影的评分。但除了这个基本信息之外,还有一些辅助信息:用户的身份、在网页上的操作、电影的票房、打分发生的时间等。
再以篮球比赛为例,ZZ矩阵存储球队间竞赛得分。而球队球员买卖、伤病情况、主客场、比赛时间都是辅助信息。
这篇文章在PMF的基础上,引入了辅助信息,其方法称为DPMF。作者George Dahl是Hinton的学生。源码和数据都可以下载。本文使用篮球比赛举例。
模型
关系矩阵Z
用ZZ描述队伍间两两比赛的结果:ZmnZ_{mn}为m,n两队比赛时m队的得分,ZnmZ_{nm}为n队的得分。用xx表示辅助信息,其维度为DD。基础PMF中的关系矩阵ZZ是一个随机变量,这里的Z(x)Z(x)变成了关于xx的随机过程。
在一个观测中,Z(x)Z(x)每个位置上的xx值互不相同。
例子
xx可能包括比赛的地点和时间。主场/客场会影响发挥,相近似的比赛场次会有相近的结果。但即使知道了时间和地点,比赛仍然存在不确定性。某一特定时刻的Z(x0)Z(x_0)是一个随机变量。
和基础PMF类似,ZZ的每一个元素是一个高斯随机变量
Zm,n(x)∼N(Ym,n(x),σ2)=N(Um(xm)VTn(xn),σ2)Z_{m,n}(x) \sim N\left( Y_{m,n}(x), \sigma^2 \right) = N\left( U_m(x_m)V^T_n(x_n), \sigma^2 \right)
UU的第m行以及VV的第n行,对应ZZ中的一个元素mn,故UU的每一行的xx取值相同,记为xmx_m,同理VV的每一行的辅助信息记为xnx_n。例如:只讨论一个辅助信息(时间),则xm,xnx_m,x_n为标量。(后续为简洁起见,有时省略了x的脚标)
其中均值Y(x)Y(x)表示系统内部参数,方差σ\sigma。随机过程U(x),V(x)U(x),V(x)尺寸为M×K,N×KM\times K, N\times K,为低秩的系统内部参数,是要估计的。
为了在同一场比赛的两队得分间引入相关性(己方得分高→\to注重进攻→\to防守弱→\to对方得分高),用二元高斯来描述对称位置的元素。σ,ρ\sigma, \rho为待估计变量。
[Zm,n(x)Zn,m(x)]∼N(Ym,n(x)Yn,m(x),[σ2ρσ2ρσ2σ2]) \left[ \begin{matrix} Z_{m,n}(x) \\ Z_{n,m}(x)\end{matrix} \right] \sim N \left( \begin{matrix} Y_{m,n}(x) \\ Y_{n,m}(x)\end{matrix} , \left[ \begin{matrix} \sigma^2 \rho \sigma^2 \\ \rho \sigma^2 \sigma^2 \end{matrix} \right]\right)
整个关系矩阵的概率为各元素概率乘积。
p(Z(x))=∏m,np(Zm,n(x))p(Z(x)) = \prod_{m,n}p(Z_{m,n}(x))
特征矩阵U,V
U,VU,V的每一行表示各个队伍的得分/失分情况(进攻/防守能力);U,VU,V的每一列代表不同内部因素。队伍mm的进攻能力,以及队伍nn的防守能力,共同决定两队比赛时,队伍mm的得分:Zm,n(x)=Um(x)T⋅Vn(x)Z_{m,n}(x) = U_m(x)^T \cdot V_n(x)
各个队伍的情况(U(x),V(x)U(x),V(x)各行)相互独立,但一支队伍的各种因素(Um(x)的K个元素U_m(x)的K个元素)关于x有相关性。例如:主客场会影响前锋的表现,也会影响中锋的表现。U,VU,V的各列之间存在联系。
用独立随机过程的线性组合来表达这种队伍内部各因素的相关性
Um(x)=LUfUm(xm)+μUU_m(x) = L^U f_m^U(x_m) + \mu ^U
Vn(x)=LVfVn(xn)+μVV_n(x) = L^V f_n^V(x_n) + \mu ^V
其中fU(x),fV(x)f^U(x),f^V(x)是随机过程,尺寸和U,VU,V相同,各元素之间独立。
μU,μV\mu^U,\mu^V描述得分/失分的均值,服从高斯分布。
LU,LVL^U,L^V尺寸为K×KK\times K,用来描述一个队伍内部特征的相关性。
用相关矩阵的Cholesky分解对其进行定义
ΣU=LU(LU)T,ΣV=LV(LV)T\Sigma^U = L^U (L^U)^T, \Sigma^V = L^V (L^V)^T
Σ\Sigma是随机正定矩阵。
μ和L\mu和L为待估计变量,在各个队伍之间通用,保证了队伍之间的相关性。
隐变量f
在这一层次,终于要和辅助信息xx发生关系了。之前使用的模型实质上都是高斯随机变量,这里开始使用高斯随机过程。fU,fVf^U,f^V的每一个元素是关于辅助信息xx的0均值高斯过程。(设定0均值是为了书写方便,且不失一般性)
fUm,k(xm)∼GP(xm|θUk), fVn,k(xn)∼GP(xn|θVk)f^U_{m,k}(x_m) \sim GP(x_m| \theta_k^U), \ \ \ \ \ \ \ \ f^V_{n,k}(x_n) \sim GP(x_n| \theta_k^V)
m=1,2...M,n=1,2...N,k=1,2...K m=1,2...M, n=1,2...N, k=1,2...K
θU,θV\theta^U,\theta^V是高斯过程的参数,维度为K,对应进攻和防守的K个特征。
m,n是ff矩阵的行标,表示不同队伍;k是ff矩阵的列标,表示不同的特征。
ff矩阵的各行服从相同的高斯过程。换言之,可以用同一个高斯过程采样N次得到fUf^U的每一行。ff矩阵的各列对应使用相同的xx。也就是说,每只队伍的不同属性有相同的辅助特征。
辅助信息x1,x2x_1,x_2维度均为D。高斯过程的相关矩阵可以有如下形式
C(x1,x2)=exp{−12∑d=1D(x1d−x2d)2θd}C(x_1,x_2)= \exp \{ -\frac{1}{2} \sum_{d=1}^D \frac{(x_{1d}-x_{2d})^2} {\theta_d} \}
高斯形式:辅助信息相近,则相关性高。例:x表示教练风格,风格相近则战绩相近。
C(x1,x2)=exp{−2sin2(12(x1−x2))/θ}C(x_1,x_2)=\exp \{ -2\sin ^2\left( \frac{1}{2}(x_1-x_2) \right) /\theta \}
周期形式:辅助信息差距周期性影响相关性,只适用于标量。例:x表示时间,每年年末观众都会喜爱贺岁片。
这里的参数θ\theta也称为length scale,控制于高斯过程的方差,用来描述不同时刻(在本模型中对应比赛时间或者场地)高斯变量的相似性。θ\theta为待估计参数,共有2K个。
由于涉及的变量很多,用下图进行总结性说明:
篮球比赛的实际情况
上述模型可以直接描述电影打分场景,但篮球比赛的情况有两处显著区别:每场比赛有两个得分,主队分和客队分;两只队伍在历史上可能多次交手,ZZ矩阵的一个元素可能对应多个观测量。需要按照以下方式对模型稍作调整。已知全部SS场比赛的主队得分ZOs(x)ZO_s(x),以及相应的客队得分ZDs(x)ZD_s(x)(其中O=Offensive, D = Defensive)。每场比赛的两个得分符合联合高斯分布:
[ZOs(x),ZDs(x)]∼N([YOs(x),YFs(x)],[σ2ρσ2ρσ2σ2])[ZO_s(x), ZD_s(x)] \sim N( [YO_s(x),YF_s(x)], \left [\begin{matrix} \sigma^2 \rho \sigma^2 \\ \rho \sigma^2 \sigma^2 \end{matrix} \right] )
其中YOs(x),YDs(x)YO_s(x), YD_s(x)为第ss场比赛的期望得分。
第ss场比赛的主队和客队分别为m(s),n(s)m(s),n(s)。比赛的期望比分取决于参赛两队的进攻和防守能力。
YOs(x)=UTm(s)(x)⋅Vn(s)(x), YDs(x)=VTm(s)(x)⋅Un(s)(x)YO_s(x) = U_{m(s)}^T(x) \cdot V_{n(s)}(x), \ \ \ YD_s(x) = V_{m(s)}^T(x) \cdot U_{n(s)}(x)
为了避免“负负得正”的情况(multimodality)给参数估计过程带来困扰,利用函数ψ(t)=ln(1+et)\psi(t) = \ln(1+e^t)强行限制第二项为正。
YOs(x)=UTm(s)(x)⋅ψ(Vn(s)(x)), YDs(x)=VTm(s)(x)⋅ψ(Un(s)(x))YO_s(x) = U_{m(s)}^T(x) \cdot \psi \left( V_{n(s)}(x) \right), \ \ \ YD_s(x) = V_{m(s)}^T(x) \cdot \psi \left( U_{n(s)}(x) \right)
其余部分和原来相同。以上给出了问题的概率模型。如何优化模型参数进行预测请参看推荐系统算法(DPMF).中篇。
相关文章推荐
- 产品经理演进漫谈:千万不要以为鼻祖是乔布斯
- libcpmt.lib(cerr.obj) : error LNK2001: unresolved external symbol @__security_ch
- libcpmt.lib(cerr.obj) : error LNK2001: unresolved external symbol @__security_ch
- RHCE 学习笔记(13) RPM 和 YUM
- 支付宝PM告诉你,互联网产品经理的工作职责有哪些?
- 网页增重不可控?试试 OneAPM Cloud Test
- 网页增重不可控?试试 OneAPM Cloud Test
- npm启动一个项目(问题:1.express不是内部或外部命令 2.This is most likely a problem with the angular-recommended package
- red hat 7.2安装libobasis5.0
- 浅谈产品和产品经理
- IIemaGpmuJ.45
- 安装RPM包或源码包
- 如何招聘产品经理?
- 如何招聘产品经理?
- npm 配置源
- PAT、PMT、SDT详解
- 【PSI/SI学习系列】2.PSI/SI深入学习2——PSI信息解析(PAT,PMT,CAT)
- NPM 无法下载任何包的原因,解决方法
- 产品经理必须掌握思维可视化的4类模型
- DataShuo产品经理肖男神给我的运营心得