【推荐系统算法】DPMF(Dependent Probabilistic Matrix Factorization).中篇
2016-01-25 22:36
676 查看
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).
上一篇博客介绍了DPMF方法的概率模型,本篇博客继续讨论该论文的求解和预测。
采用MCMC方法,在已知数据的条件下,每次固定其他变量,写出待求变量的条件概率。根据这个概率(目标分布)对此变量进行采样,采样结果用来更新此变量的取值。
为了明确起见,再次列出各个变量的尺寸。
比赛场次s=1:Ss=1:S,主队编号m=1:Mm=1:M,客队编号n=1:Nn=1:N。一般来说M=NM=N。xx: 表示D种辅助信息。例如D=2,同时考虑时间和主客场信息。
以下推导中,用all表示全部隐变量,用others表示出当前更新变量外的其他隐变量。以下推导为了书写简便,省略了一些上标和下标。
p(LU|ZO,ZF,others)∝p(ZO,ZF|LU,other)⋅p(LU,others)∝p(ZO,ZD|all)⋅p(LU)∝p(ZO,ZD|all)p(L^U|ZO,ZF,others) \propto p(ZO,ZF|L^U,other) \cdot p(L^U, others) \propto p(ZO,ZD|all) \cdot p(L^U) \propto p(ZO,ZD|all)
其中
p(ZO,ZD|all)=∏sp(ZOs(x),ZDs(x)|all)p(ZO,ZD|all) = \prod_s p(ZO_s(x),ZD_s(x)|all)
已知其他变量条件下,
[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] )
这个概率非常重要,是采样后面几个变量都要用到的。
p(μU|ZO,ZD,others)∝p(ZO,ZD|all)⋅N(μU;mU,cU)p(\mu^U|ZO,ZD,others) \propto p(ZO,ZD|all) \cdot N(\mu^U; m_U, c_U)
p(σ,ρ|ZO,ZD,others)∝p(ZO,ZD|all)⋅p(σ)⋅p(ρ)∝p(ZO,ZD|all)p(\sigma,\rho|ZO,ZD,others) \propto p(ZO,ZD|all)\cdot p(\sigma) \cdot p(\rho) \propto p(ZO,ZD|all)
以上三类变量都根据目标分布,采用slice sampling方式进行采样,对变量进行更新。
p(fUm(s)|ZO,ZD,others)∝p(ZO,ZD|all)⋅p(fU)∝p(ZO,ZD|all)p(f_{m(s)}^U|ZO,ZD,others) \propto p(ZO,ZD|all)\cdot p(f^U) \propto p(ZO,ZD|all)
采用elliptical slice sampling进行采样,用采样结果更新fU,fVf^U,f^V。
要逐个更新MM个进攻特征fUmf_m^U,以及NN个防守特征fVnf_n^V。更新一个特征时,要使用当前最新的其他特征。
队伍mm在历史上的所有主场比赛相当于对高斯过程fUmf_m^U进行了多次采样。
队伍mm的主场比赛数量记为J(m)J(m),得分记为gUmg_m^U。gUmg_m^U的所有元素服从联合高斯分布,其均值为0,协方差矩阵由超参数θm\theta_m和J(m)J(m)场比赛中的辅助信息xx共同确定。
举例:某一年联赛共有31支球队参加,则M=31M=31,fU∼M×K,fUm∼1×Kf^U \sim M\times K, f_m^U \sim 1\times K。共进行了1200场比赛,则S=2501S=2501。某一队伍m在主场打了82场,J(m)=82,gm∼J(m)×KJ(m) = 82, g_m \sim J(m) \times K。
在已知观测数据,以及联合高斯随机变量gmg_m的前提下,求解其相关性参数θm\theta_m,有经典的reparameterization方法,其粗略原理可以参看这篇博客。
具体来说,记θm\theta_m对应的协方差矩阵为L(θm)L(\theta_m)。首先计算一个尺寸为J(m)×KJ(m)\times K的隐变量νm=L(θm)−1⋅gm\nu_m = L(\theta_m)^{-1}\cdot g_m。而后用以下概率对θm\theta_m进行采样:
p(θm|ZO,ZD,others)∝p(ZO,ZD|all)p(\theta_m|ZO,ZD,others) \propto p(ZO,ZD|all)
p(ZO,ZD|all)p(ZO,ZD|all)的计算方法和之前一样,只不过涉及到的fmf_m由νm\nu_m和当前采样的θm\theta_m计算而来:fm=L(θm)⋅νmf_m = L(\theta_m) \cdot \nu_m。
论文中要求预测任意主队mm和任意客队nn的比赛得分。可以直接求解:
Ymn=fUm⋅fVnY_{mn} = f_m^U \cdot f_n^V
值得注意的是,论文中的预测并没有利用从属信息。
在代码中,优化和预测是同步进行的。先启动μ,L,σ,ρ,f\mu,L,\sigma,\rho,f的优化,MCMC执行了一定步数之后,burn-in阶段结束,启动θ\theta的优化,同时可以执行预测。
在执行预测的同时,也同时更新模型参数。
本论文的理论部分已经介绍完毕,对源码运行和实验细节感兴趣的同学,可以继续阅读下篇。
上一篇博客介绍了DPMF方法的概率模型,本篇博客继续讨论该论文的求解和预测。
优化
历史比赛的主客场得分ZO,ZDZO,ZD已知,需要估计模型参数θ,μ,L,σ,ρ\theta,\mu,L,\sigma,\rho。为了便于求解,同时估计高斯过程ff。采用MCMC方法,在已知数据的条件下,每次固定其他变量,写出待求变量的条件概率。根据这个概率(目标分布)对此变量进行采样,采样结果用来更新此变量的取值。
为了明确起见,再次列出各个变量的尺寸。
ZOs,ZDs,YOs,YDsZO_s,ZD_s,YO_s,YD_s | Um(s),fUm(s)U_{m(s)}, f_{m(s)}^U | Vn(s),fVn(s)V_{n(s)},f_{n(s)}^V | LU,LVL^U,L^V | xx | θU,θV\theta^U, \theta^V |
---|---|---|---|---|---|
1×11\times 1 | 1×K1 \times K | 1×K1 \times K | K×KK \times K | D×1D \times 1 | K×1K \times 1 |
以下推导中,用all表示全部隐变量,用others表示出当前更新变量外的其他隐变量。以下推导为了书写简便,省略了一些上标和下标。
特征的协方差LU,LVL^U,L^V
在源码中认为LUL^U服从一个均匀分布,换言之不知道任何LUL^U的先验信息。目标分布为:p(LU|ZO,ZF,others)∝p(ZO,ZF|LU,other)⋅p(LU,others)∝p(ZO,ZD|all)⋅p(LU)∝p(ZO,ZD|all)p(L^U|ZO,ZF,others) \propto p(ZO,ZF|L^U,other) \cdot p(L^U, others) \propto p(ZO,ZD|all) \cdot p(L^U) \propto p(ZO,ZD|all)
其中
p(ZO,ZD|all)=∏sp(ZOs(x),ZDs(x)|all)p(ZO,ZD|all) = \prod_s p(ZO_s(x),ZD_s(x)|all)
已知其他变量条件下,
[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] )
这个概率非常重要,是采样后面几个变量都要用到的。
特征的均值μU,μV\mu^U,\mu^V
源码中认为μU\mu^U服从高斯分布,其参数mU,cUm_U,c_U人工指定。和前述推导类似:p(μU|ZO,ZD,others)∝p(ZO,ZD|all)⋅N(μU;mU,cU)p(\mu^U|ZO,ZD,others) \propto p(ZO,ZD|all) \cdot N(\mu^U; m_U, c_U)
观测误差σ,ρ\sigma, \rho
同样认为σ,ρ\sigma, \rho服从均匀分布,不知道任何先验。p(σ,ρ|ZO,ZD,others)∝p(ZO,ZD|all)⋅p(σ)⋅p(ρ)∝p(ZO,ZD|all)p(\sigma,\rho|ZO,ZD,others) \propto p(ZO,ZD|all)\cdot p(\sigma) \cdot p(\rho) \propto p(ZO,ZD|all)
以上三类变量都根据目标分布,采用slice sampling方式进行采样,对变量进行更新。
独立特征fU,fVf^U,f^V
同样认为fU,fVf^U,f^V服从均匀分布,不知道任何先验。p(fUm(s)|ZO,ZD,others)∝p(ZO,ZD|all)⋅p(fU)∝p(ZO,ZD|all)p(f_{m(s)}^U|ZO,ZD,others) \propto p(ZO,ZD|all)\cdot p(f^U) \propto p(ZO,ZD|all)
采用elliptical slice sampling进行采样,用采样结果更新fU,fVf^U,f^V。
要逐个更新MM个进攻特征fUmf_m^U,以及NN个防守特征fVnf_n^V。更新一个特征时,要使用当前最新的其他特征。
超参数θU,θV\theta^U,\theta^V
主场队伍mm的进攻超参数为θUm\theta_m^U,客场队伍nn的防守超参数为θVn\theta_n^V。(以下书写略去U,V)队伍mm在历史上的所有主场比赛相当于对高斯过程fUmf_m^U进行了多次采样。
队伍mm的主场比赛数量记为J(m)J(m),得分记为gUmg_m^U。gUmg_m^U的所有元素服从联合高斯分布,其均值为0,协方差矩阵由超参数θm\theta_m和J(m)J(m)场比赛中的辅助信息xx共同确定。
举例:某一年联赛共有31支球队参加,则M=31M=31,fU∼M×K,fUm∼1×Kf^U \sim M\times K, f_m^U \sim 1\times K。共进行了1200场比赛,则S=2501S=2501。某一队伍m在主场打了82场,J(m)=82,gm∼J(m)×KJ(m) = 82, g_m \sim J(m) \times K。
在已知观测数据,以及联合高斯随机变量gmg_m的前提下,求解其相关性参数θm\theta_m,有经典的reparameterization方法,其粗略原理可以参看这篇博客。
具体来说,记θm\theta_m对应的协方差矩阵为L(θm)L(\theta_m)。首先计算一个尺寸为J(m)×KJ(m)\times K的隐变量νm=L(θm)−1⋅gm\nu_m = L(\theta_m)^{-1}\cdot g_m。而后用以下概率对θm\theta_m进行采样:
p(θm|ZO,ZD,others)∝p(ZO,ZD|all)p(\theta_m|ZO,ZD,others) \propto p(ZO,ZD|all)
p(ZO,ZD|all)p(ZO,ZD|all)的计算方法和之前一样,只不过涉及到的fmf_m由νm\nu_m和当前采样的θm\theta_m计算而来:fm=L(θm)⋅νmf_m = L(\theta_m) \cdot \nu_m。
预测
模型的所有参数θ,μ,L,σ,ρ,f\theta,\mu,L,\sigma,\rho,f都估计完之后,可以进行对未发生的比赛结果进行预测。论文中要求预测任意主队mm和任意客队nn的比赛得分。可以直接求解:
Ymn=fUm⋅fVnY_{mn} = f_m^U \cdot f_n^V
值得注意的是,论文中的预测并没有利用从属信息。
在代码中,优化和预测是同步进行的。先启动μ,L,σ,ρ,f\mu,L,\sigma,\rho,f的优化,MCMC执行了一定步数之后,burn-in阶段结束,启动θ\theta的优化,同时可以执行预测。
在执行预测的同时,也同时更新模型参数。
本论文的理论部分已经介绍完毕,对源码运行和实验细节感兴趣的同学,可以继续阅读下篇。
相关文章推荐
- 【推荐系统算法】DPMF(Dependent Probabilistic Matrix Factorization).上篇
- 产品经理演进漫谈:千万不要以为鼻祖是乔布斯
- 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类模型