【推荐系统算法】BPMF(Bayesian Probabilistic Matrix Factorization)

Salakhutdinov, Ruslan, and A. Mnih. “Bayesian probabilistic matrix factorization using markov chain monte carlo.” International Conference on Machine Learning 2008:880-887.

对PMF模型以及应用场景不熟悉的同学可以先阅读这篇基础PMF
本论文的模型和前文类似,但在求解时,是从贝叶斯角度而不是传统概率角度出发:不再把系统参数当做一个固定值估计,而是作为一个服从某种分布的随机变量,转而估计该分布的参数

问:明天什么天气? 传统观点估计:呃,晴天吧。 贝叶斯观点估计:60%晴天,40%下雨。传统观点估计:你个心机婊。

模型

N×M关系矩阵R来描述N个用户给M部电影的打分。这里R为观测值。

p(R)N(R|UTV,α1)=ijN(Rij|UTiVj,α1)

矩阵高斯函数等于其元素高斯函数的乘积。其中标量α为精度,等价于协方差的倒数(这样写是为了后续计算方便)。
R的各个位置(即各次观测)的精度相同。

U,V尺寸为N×D,M×D,也服从高斯分布。(在基础PMF中,U,V都是待求的固定值)

p(U)N(U|μU,Λ1U)=iN(Ui|μU,Λ1U)

p(V)N(V|μV,Λ1V)=jN(Vj|μV,Λ1V)

所有用户共享一组超参数μU,ΛU,尺寸为D×1,D×D。所有电影同样共享一组超参数μV,ΛV
超参数μ,Λ服从Gaussian-Wishart分布,表示为一个均值的高斯分布,以及一个协方差的威沙特分布的乘积。

p(μ,Λ)N(μ|μ0,(β0Λ)1)W(Λ|W0,ν0)

其中μ0=0,W0=I,ν0=D。为书写简便,记为ΘU={μU,ΛU},ΘV={μV,ΛV}

预测

R表示预测出的关系矩阵。在贝叶斯观点下,推荐问题转化为:已知观测矩阵R,求预测矩阵的概率p(R|R)
这个概率本身非常难求,所以退 而求其次:按照概率p(R|R),生成预测R即可,多输出几次在统计意义上就准确了。

在已知U,V的情况下,R的分布参数α已知。问题转化为:生成符合概率分布p(U|R)p(V|R)U,V

核心变量是特征U,V,以及超参数ΘU,ΘV。设定初始值U1,V1。使用MCMC方法,按照如下步骤逐步逼近稳态分布
- 固定U,V,按照p(ΘU|U),p(ΘV|V)ΘU,ΘV进行采样
- 固定ΘU,V以及观测 数据R,根据p(U|R,V,ΘU),对U采样
- 固定ΘV,U以及观测 数据R,根据p(V|R,U,ΘV),对V采样
每完成这样一轮,称为一个Epoch。随着epoch增加,生成的预测矩阵R的分布逐渐准确。

在迭代的第一个步骤中,由于已知U时,RΘU无影响,所以条件中没有R

根据特征,更新超参数

固定U,更新ΘU,要求的条件概率为p(ΘU|U)
利用条件概率性质,凑出两项形式已知的条件概率:

p(ΘU|U)p(U)=p(ΘU,U)=p(U|ΘU)p(ΘU)

由于U已知,故p(U)为常量:
p(ΘU|U)p(U|ΘU)p(ΘU)

已知p(A|B),欲求p(B|A)。经典推导:p(A|B)p(B)=p(B|A)p(A)

右边两项均有明确的概率形式,但如果直接计算运算量太大,以下将其转换为简单的参数形式。
右侧第一项是一个高斯分布,第二项是高斯分布和威沙特分布的乘积。由于高斯乘积仍为高斯,两项乘积仍然是高斯分布和威沙特分布的乘积。需要求其参数μ0,ν0,W0,β0,维度为D

考察上式右侧的两个高斯分布和一个威沙特分布,写出和μU,ΛU有关的项:

A1=ΛN/2Uexp[12i=1N(UiμU)TΛU(UiμU)]

A2=(β0ΛU)1/2exp[12(μUμ0)Tβ0ΛU(μUμ0)]

A3=|ΛU|(ν0D1)/2exp[12Tr(W10ΛU)]

对比标准高斯威沙特分布:

B1=(β0Λ)1/2exp[12(μUμ0)Tβ0ΛU(μUμ0)]

B2=|ΛU|(ν0D1)/2exp[12Tr((W0)1ΛU)]

应该找出这样的μ0,ν0,W0,使得A1A2A3=B1B2

考察ΛU的指数:

N+1+ν0D1=1+ν0D1ν0=ν0+N

考察指数中μTUΛUμU项:

β0=N+β0

考察指数中ΛUμU项:

i=1NUi+β0μ0=β0μ0μ0=Ni=1Ui+β0μ0β0+N

W0我实在导不出来了,哪位神指教一下论文里这是为啥:
为啥啊?!trace去哪儿了?

根据超参数,更新特征

固定V,R,ΘU,更新U。要求的条件概率是p(U|R,V,ΘU)
同样利用条件概率性质:

p(U|R,V,ΘU)p(R|V,ΘU)=p(U,R|V,ΘU)

=p(R|U,V,ΘU)p(U|V,ΘU)

在这一步中,R,V,ΘU已知,所以等号左边第二项为常数;RΘU无关,U,V无关,等号右边相应删减:

p(U|R,V,ΘU)p(R|U,V)p(U|ΘU)

由于右侧两个高斯函数的乘积仍然是高斯函数,故待求概率也是高斯分布。需要求其参数μ,Λ

考察上式指数部分:

ij[α(RijUTiVj)2]i(UTiμTU)ΛU(UμU)+C

把指数部分和U有关的项提出来:

=12ijUTiVjαVTjUi+iUTiΛUUi

=ijUTiαRijVj+iUTiΛUμU

对比一个经典高斯分布N(μ,α)的指数部分12(xμ)Tα(xμ)

=12xTΛx

=xTΛμ

两相对比,可以推导出超参数的取值:

Λ=αjVjVTj+ΛU

μ=(Λ)1αjRijVj+ΛUμU

从物理意义上来说:由于知道了V,R,对于U的了解更多了,所以精度增加了。

这种在指数部分“凑平方”(complete the square)的方法是处理高斯函数的经典方法。在《Pattern Recognition and Machine Learning》的2.3.1章有着重介绍。

p(V|R,U,ΘV)用同样方法求得高斯参数。直接对高斯函数采样即可。

实验

实验数据和基础PMF相同。由于使用了贝叶斯估计,降低了过拟合现象,精度有所提高(1.7%)。
D = 10,每轮采样需要6.6分钟;D=300,则需要220分钟。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shenxiaolu1984/article/details/50405659
个人分类: 论文解读
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

【推荐系统算法】BPMF(Bayesian Probabilistic Matrix Factorization)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭