《Probabilistic Matrix Factorization》精读笔记
- 本篇论文作者是多伦多大学计算机科学系的Ruslan Salakhutdinov和Andriy Mnih,发表于2007年NIPS。
- 文中作者提出概率矩阵分解模型,是现代推荐系统的基础算法之一。
1. 介绍
传统比较流行协同过滤的方法是基于低纬度的因子模型,一个用户的态度或偏好由这些因子可以得到。
简单来说就是用户和电影之间的关系用几个线性组合决定。例如,对于N个用户和M个电影,N×M的偏好矩阵 R R R由一个N×D的用户系数矩阵 U T U^{T} UT和一个D×M的因子矩阵 V V V的乘积给出。
训练这样的一个模型可以在给定的损失函数下,对于观测的N×M的目标矩阵 R R R发现最好的矩阵秩为D的近似值。
- 可以使用奇异值分解(SVD),基于最小化平方和距离的低秩近似找到上面说的矩阵。
- 由于大多数现实世界的数据集是稀疏的,用因子的数目代替约束近似矩阵的秩,但是在大量的数据集中要解决一个稀疏的半定问题(SDP)也是不可实行的。
上面提到的协同过滤算法,总的来说就两个问题:
- 不能很好地处理规模非常大的数据
- 不能很好地处理那些非常少做评价的用户。
对此文中提出随观测值数目线性递增适应以及在非常稀疏和失衡的数据集(例如Netflix数据集)上表现优异的概率算法.
- 在第2节中,提出了概率矩阵分解(PMF)模型,该模型将用户偏好矩阵建模为两个低秩用户矩阵和电影矩阵的乘积。
- 在第3节中,扩展了PMF模型,电影和用户特征向量的自适应先验,并展示了如何使用这些先验来自动控制模型的复杂性。
- 在第4节中,介绍了PMF模型的一个受限版本,该模型基于这样一个假设,即对相似电影集进行评分的用户具有相似的偏好。
- 在第5节中,报告了实验结果,表明PMF大大优于标准的奇异值分解模型。还表明,先验的PMF和约束PMF显著提高了模型性能。
2. 概率矩阵分解
假设有M部电影,N个用户,和从 1 1 1到 K 1 K^{1} K1的整数评价值。让 R i j R_{ij} Rij代表用户 i i i对电影 j j j的评分, U ∈ R D × N U \in R^{D \times N} U∈RD×N和 V ∈ R D × M V \in R^{D \times M} V∈RD×M是潜在的用户和电影特征矩阵,其中列向量 U i U_{i} Ui和 V j V_{j} Vj分别表示特定用户的和特定电影的潜在特征向量。
然后做两个假设
-
观测噪声(观测评分矩阵 R R R和近似评分矩阵 R ^ \hat{R} R^之差)满足高斯分布
p ( R ∣ U , V , σ 2 ) = ∏ i = 1 N ∏ j = 1 M [ N ( R i j ∣ U i T V j , σ 2 ) ] I i j p\left(R \mid U, V, \sigma^{2}\right)=\prod_{i=1}^{N} \prod_{j=1}^{M}\left[\mathcal{N}\left(R_{i j} \mid U_{i}^{T} V_{j}, \sigma^{2}\right)\right]^{I_{i j}} p(R∣U,V,σ2)=i=1∏Nj=1∏M[N(Rij∣UiTVj,σ2)]Iij( U i T V j U_{i}^{T} V_{j} UiTVj为均值,所以上式是含有高斯观测噪声的概率线性模型; I i j I_{i j} Iij为指示函数:如果用户 i i i已经对商品 j j j进行了评分,则为1,否者为0; σ \sigma σ是观测噪声的方差,人工设定) -
用户潜在特征向量和商品潜在特征向量都服从均值为0的高斯先验分布
p ( U ∣ σ U 2 ) = ∏ i = 1 N N ( U i ∣ 0 , σ U 2 I ) , p ( V ∣ σ V 2 ) = ∏ j = 1 M N ( V j ∣ 0 , σ V 2 I ) p\left(U \mid \sigma_{U}^{2}\right)=\prod_{i=1}^{N} \mathcal{N}\left(U_{i} \mid 0, \sigma_{U}^{2} \mathbf{I}\right), \quad p\left(V \mid \sigma_{V}^{2}\right)=\prod_{j=1}^{M} \mathcal{N}\left(V_{j} \mid 0, \sigma_{V}^{2} \mathbf{I}\right) p(U∣σU2)=i=1∏NN(Ui∣0,σU2I),p(V∣σV2)=j=1∏MN(Vj∣0,σV2I)(这里的 I I I表示一个对角阵; σ U , σ V \sigma_{U},\sigma_{V} σU,σV是先验噪声的方差,人工设定;在文中作者提到的球形高斯分布是指特征相互独立且方差相同,这种情况下投影为圆形)
综合以上三个概率密度函数,利用经典的后验概率推导,可以得到:
ln
p
(
U
,
V
∣
R
,
σ
2
,
σ
V
2
,
σ
U
2
)
=
−
1
2
σ
2
∑
i
=
1
N
∑
j
=
1
M
I
i
j
(
R
i
j
−
U
i
T
V
j
)
2
−
1
2
σ
U
2
∑
i
=
1
N
U
i
T
U
i
−
1
2
σ
V
2
∑
j
=
1
M
V
j
T
V
j
−
1
2
(
(
∑
i
=
1
N
∑
j
=
1
M
I
i
j
)
ln
σ
2
+
N
D
ln
σ
U
2
+
M
D
ln
σ
V
2
)
+
C
\begin{aligned} \ln p\left(U, V \mid R, \sigma^{2}, \sigma_{V}^{2}, \sigma_{U}^{2}\right)=&-\frac{1}{2 \sigma^{2}} \sum_{i=1}^{N} \sum_{j=1}^{M} I_{i j}\left(R_{i j}-U_{i}^{T} V_{j}\right)^{2}-\frac{1}{2 \sigma_{U}^{2}} \sum_{i=1}^{N} U_{i}^{T} U_{i}-\frac{1}{2 \sigma_{V}^{2}} \sum_{j=1}^{M} V_{j}^{T} V_{j} \\ &-\frac{1}{2}\left(\left(\sum_{i=1}^{N} \sum_{j=1}^{M} I_{i j}\right) \ln \sigma^{2}+N D \ln \sigma_{U}^{2}+M D \ln \sigma_{V}^{2}\right)+C \end{aligned}
lnp(U,V∣R,σ2,σV2,σU2)=−2σ21i=1∑Nj=1∑MIij(Rij−UiTVj)2−2σU21i=1∑NUiTUi−2σV21j=1∑MVjTVj−21((i=1∑Nj=1∑MIij)lnσ2+NDlnσU2+MDlnσV2)+C(由高斯分布然后等式两边取对数
ln
\ln
ln推出)
其中C是一个不依赖于参数的常数。在超参数(即观察噪声方差和先验噪声方差)保持不变的情况下,最大化电影和用户特征的对数后验概率相当于最小化具有二次正则项的误差平方和目标函数:
E
=
1
2
∑
i
=
1
N
∑
j
=
1
M
I
i
j
(
R
i
j
−
U
i
T
V
j
)
2
+
λ
U
2
∑
i
=
1
N
∥
U
i
∥
F
r
o
2
+
λ
V
2
∑
j
=
1
M
∥
V
j
∥
F
r
o
2
E=\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{M} I_{i j}\left(R_{i j}-U_{i}^{T} V_{j}\right)^{2}+\frac{\lambda_{U}}{2} \sum_{i=1}^{N}\left\|U_{i}\right\|_{F r o}^{2}+\frac{\lambda_{V}}{2} \sum_{j=1}^{M}\left\|V_{j}\right\|_{F r o}^{2}
E=21i=1∑Nj=1∑MIij(Rij−UiTVj)2+2λUi=1∑N∥Ui∥Fro2+2λVj=1∑M∥Vj∥Fro2(其中
λ
U
=
σ
2
/
σ
U
2
,
λ
V
=
σ
2
/
σ
V
2
\lambda_{U}=\sigma^{2} / \sigma_{U}^{2}, \lambda_{V}=\sigma^{2} / \sigma_{V}^{2}
λU=σ2/σU2,λV=σ2/σV2)
(到这一步,个人理解是从数学概率的角度,证明了矩阵分解(FM),区别只是概率矩阵分解(PFM)中带有二次正则项)
上面目标函数的局部最小值可以通过在 U U U和 V V V中执行随机梯度下降法(SGD)来找到。
- 等式 E E E分别对 U U U和 V V V进行求导
- 梯度下降更新 U U U和 V V V
- 直到满足收敛条件或迭代至最大的迭代次数
这个模型可以被看作是SVD模型的一个概率的扩展,因为如果所有的评价都已经观测到,先验方差趋向于无穷,由等式给出的目标会还原到SVD目标。
(上面是论文中的原话翻译,关于先验方差趋向于无穷并没有理解,待补充…)
文中提到,在实验中,用类似sigmoid函数的函数限制 U T V U^TV UTV,可以在有效评价值范围之外进行预测,其取值在 ( 0 , 1 ) (0,1) (0,1)之间,同时也把 1 1 1到 K 1 K^{1} K1的评分值映射在 ( 0 , 1 ) (0,1) (0,1)之间。
3. 关于PMF模型的自动能力控制
容量控制对于PMF模型的良好推广至关重要,关于控制模型的复杂度,最简单的控制方法是调整特征维度。
但实际数据往往是不均衡的,特征维度越大,模型就容易过拟合,反之则欠拟合,一般做法是选一个合适的维度,修改 σ 2 \sigma^2 σ2和 σ U 2 , σ V 2 \sigma_{U}^2,\sigma_{V}^2 σU2,σV2,如果用另一个模型来训练这些参数,计算代价昂贵。
然后文中提出了带有自适应先验的PMF,该模型的复杂度通过超参数控制(
σ
2
,
σ
U
2
,
σ
V
2
\sigma^2,\sigma_{U}^2,\sigma_{V}^2
σ2,σU2,σV2),引入超参数的先验并最大化模型对参数和超参数的对数后验,允许基于训练数据自动控制模型的复杂性。
ln
p
(
U
,
V
,
σ
2
,
Θ
U
,
Θ
V
∣
R
)
=
ln
p
(
R
∣
U
,
V
,
σ
2
)
+
ln
p
(
U
∣
Θ
U
)
+
ln
p
(
V
∣
Θ
V
)
+
ln
p
(
Θ
U
)
+
ln
p
(
Θ
V
)
+
C
\begin{aligned} \ln p\left(U, V, \sigma^{2}, \Theta_{U}, \Theta_{V} \mid R\right)=& \ln p\left(R \mid U, V, \sigma^{2}\right)+\ln p\left(U \mid \Theta_{U}\right)+\ln p\left(V \mid \Theta_{V}\right)+\\ & \ln p\left(\Theta_{U}\right)+\ln p\left(\Theta_{V}\right)+C \end{aligned}
lnp(U,V,σ2,ΘU,ΘV∣R)=lnp(R∣U,V,σ2)+lnp(U∣ΘU)+lnp(V∣ΘV)+lnp(ΘU)+lnp(ΘV)+C(
Θ
U
\Theta_{U}
ΘU和
Θ
V
\Theta_{V}
ΘV分别是关于在用户和电影特征向量之上的先验的超参数,
C
C
C是一个不依赖参数或者超参数的常量)
作者提到,当先验为高斯时,如果电影和用户特征向量保持不变,则最优超参数可以以封闭形式找到。因此,为了简化学习,在优化超参数和使用固定超参数值的最陡上升更新特征向量之间交替。当先验是高斯混合时,超参数可以通过执行一步EM来更新。在我们所有的实验中,我们对超参数使用了不适当的先验,但是很容易扩展封闭形式更新来处理超参数的共轭先验。
(这一段没有理解,在原有的代码框架下我不知道怎么用EM算法更新超参数的先验,关于带有自适应先验的PMF也没有得到实验,待补充…)
4. 有约束的PMF
一旦一个PMF模型被拟合,不经常作评价的用户将会有一个特征向量,这个特征向量接近于先前的平均值或者平均用户,所以这些用户的预测评价将会接近于电影的平均评价。
作者提出下面约束特定用户的特征向量的额外的方式,它对不频繁的用户有着大大的影响。
将用户
i
i
i的特征向量定义为:
U
i
=
Y
i
+
∑
k
=
1
M
I
i
k
W
k
∑
k
=
1
M
I
i
k
U_{i}=Y_{i}+\frac{\sum_{k=1}^{M} I_{i k} W_{k}}{\sum_{k=1}^{M} I_{i k}}
Ui=Yi+∑k=1MIik∑k=1MIikWk(
W
∈
R
D
×
M
W \in R^{D \times M}
W∈RD×M是一个潜在的相似度约束矩阵,
W
W
W第
i
i
i列表示用户已经评价某部电影对该用户特征向量先验平均值产生的影响;
Y
∈
R
D
×
N
Y \in R^{D \times N}
Y∈RD×N是为了得到相关用户特征向量而添加到先验分布的平均值的分支)
根据定义在观测到的评价上的条件分布为:
p
(
R
∣
Y
,
V
,
W
,
σ
2
)
=
∏
i
=
1
N
∏
j
=
1
M
[
N
(
R
i
j
∣
g
(
[
Y
i
+
∑
k
=
1
M
I
i
k
W
k
∑
k
=
1
M
I
i
k
]
T
V
j
)
,
σ
2
)
]
I
i
j
p\left(R \mid Y, V, W, \sigma^{2}\right)=\prod_{i=1}^{N} \prod_{j=1}^{M}\left[\mathcal{N}\left(R_{i j} \mid g\left(\left[Y_{i}+\frac{\sum_{k=1}^{M} I_{i k} W_{k}}{\sum_{k=1}^{M} I_{i k}}\right]^{T} V_{j}\right), \sigma^{2}\right)\right]^{I_{i j}}
p(R∣Y,V,W,σ2)=i=1∏Nj=1∏M⎣⎡N⎝⎛Rij∣g⎝⎛[Yi+∑k=1MIik∑k=1MIikWk]TVj⎠⎞,σ2⎠⎞⎦⎤Iij
接下来同第二节一样,用随机梯度下降找出三个矩阵去最小化目标函数。
(对矩阵求导,在实验过程中SGD遇到问题,在
W
W
W部分用了一个经验公式代替论文公式中的一部分)
5. 实验结果
作者在论文中给出来明显的效果对比曲线,目前个人还原实验遇到些许问题,带有自适应先验的PMF和有约束的PMF并没有做好,待补充…
6. 代码
写的太烂了,不想上传了,主要参考了本文的矩阵分解家族:推荐系统系列之二:矩阵分解家族
7. 总结
- 矩阵分解在协同过滤系统(推荐系统)中应用广泛
- 在矩阵分解家族中除了SVD和概率矩阵分解 (PMF),还包括权重矩阵分解 (WMF)、带偏置的SVD(BiasSVD)、timeSVD、PureSVD等
- (待补充…)