您的位置:首页 > 产品设计 > 产品经理

【推荐系统算法】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的学生。源码和数据都可以下载。本文使用篮球比赛举例。

模型

关系矩阵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).中篇
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: