两者都是推荐算法中的经典算法,在此依照自己的理解描述二者的思想及求解过程,希望以此促进理解二者的联系和区别。
MF 矩阵分解算法
矩阵分解,顾名思义,将一个矩阵分解成多个矩阵相乘的形式,如评分矩阵 Ri∗j R i ∗ j 分解成 用户矩阵 Ui∗k U i ∗ k 与物品矩阵 Vk∗j V k ∗ j 的乘积。而用户矩阵中的k,代表每个用户i对物品k个属性的偏好程度,物品矩阵中的k,则代表每个物品j具有对应的k个属性的程度。要使得分解后得到的 Ui∗k U i ∗ k 和 Vk∗j V k ∗ j 能尽可能还原 Ri∗j R i ∗ j ,即
Ri∗j≈Ri∗j^=Uik×Vkj R i ∗ j ≈ R i ∗ j ^ = U i k × V k j
, 具体地,
Ri∗j R i ∗ j 中已有评分值,与
Ri∗j^ R i ∗ j ^ 中对应位置的值尽可能接近,这样,可以由
Ri∗j^ R i ∗ j ^ 预测
Ri∗j R i ∗ j 中没有值的位置可能的评分。
为了“尽可能接近”,需要对U和V矩阵的值进行训练选择,于是需要设计损失函数,和优化方法。
损失函数
在此,可以选择平方误差函数作为损失函数,即
E2=∑e2ij=∑Iij(Rij^−Rij)2=∑Iij(Rij^−∑kUikVkj)2 E 2 = ∑ e i j 2 = ∑ I i j ( R i j ^ − R i j ) 2 = ∑ I i j ( R i j ^ − ∑ k U i k V k j ) 2
其中
Iij I i j 为指示函数,当
Rij R i j 有评分时则为1,否则为0.
损失函数求解
在此,用梯度下降的方式求解,即
∂E2∂Uik=−2∑Iij(Rij^−∑kUikVkj)Vkj ∂ E 2 ∂ U i k = − 2 ∑ I i j ( R i j ^ − ∑ k U i k V k j ) V k j
∂E2∂Vkj=−2∑Iij(Rij^−∑kUikVkj)Uik ∂ E 2 ∂ V k j = − 2 ∑ I i j ( R i j ^ − ∑ k U i k V k j ) U i k
根据梯度,更新变量
U′ik=Uik−α∂E2∂Uik U i k ′ = U i k − α ∂ E 2 ∂ U i k
U′ik=Vkj−α∂E2∂Vkj U i k ′ = V k j − α ∂ E 2 ∂ V k j
这里,
α α 是学习率,防止步长过大,最终不收敛,经过迭代,最终收敛得到
Uik U i k 和
Vkj V k j 的最优解。
正则化的损失函数
为了增加泛化能力,减少过拟合,通常会增加正则项,若采用L2正则,即损失函数为
E2=∑e2ij=∑Iij(Rij^−Rij)2+λ2∑∑kUik2+λ2∑∑kVkj2=∑Iij(Rij^−∑kUikVkj)2+λ2∑∑kUik2+λ2∑∑kVkj2 E 2 = ∑ e i j 2 = ∑ I i j ( R i j ^ − R i j ) 2 + λ 2 ∑ ∑ k U i k 2 + λ 2 ∑ ∑ k V k j 2 = ∑ I i j ( R i j ^ − ∑ k U i k V k j ) 2 + λ 2 ∑ ∑ k U i k 2 + λ 2 ∑ ∑ k V k j 2
这样梯度下降表达式为
∂E2∂Uik=−2∑Iij(Rij^−∑kUikVkj)Vkj+λUik ∂ E 2 ∂ U i k = − 2 ∑ I i j ( R i j ^ − ∑ k U i k V k j ) V k j + λ U i k
∂E2∂Vkj=−2∑Iij(Rij^−∑kUikVkj)Uik+λVkj ∂ E 2 ∂ V k j = − 2 ∑ I i j ( R i j ^ − ∑ k U i k V k j ) U i k + λ V k j
于是,变量更新为
U′ik=Uik−α∂E2∂Uik=Uik+2α∑Iij(Rij^−∑kUikVkj)Vkj−αλUik U i k ′ = U i k − α ∂ E 2 ∂ U i k = U i k + 2 α ∑ I i j ( R i j ^ − ∑ k U i k V k j ) V k j − α λ U i k
U′ik=Vkj−α∂E2∂Vkj=Vkj+2α∑Iij(Rij^−∑kUikVkj)Uik−αλVkj U i k ′ = V k j − α ∂ E 2 ∂ V k j = V k j + 2 α ∑ I i j ( R i j ^ − ∑ k U i k V k j ) U i k − α λ V k j
预测评分
在上述正则化的损失函数通过梯度下降得到最优解后,由得到的 Uik U i k 和 Vkj V k j 求 Rij R i j 中没有评分的位置的可能评分,即
Rij=∑kUikVkj R i j = ∑ k U i k V k j
PMF概率矩阵分解算法
PMF算法思想上与MF是一致的,它是从概率的角度解释MF的可行性,同样是将评分矩阵 Ri∗j R i ∗ j 分解成 用户矩阵 Ui∗k U i ∗ k 与物品矩阵 Vk∗j V k ∗ j 的乘积,PMF基于以下两个假设
若以上高斯分布均取标准正态分布,且观测误差的方差取 σ2 σ 2 ,用户矩阵和物品矩阵的方差分别取 σ2U σ U 2 、 σ2V σ V 2 ,均为认为设定。则有
P(Rij−Rij^)=N(0,σ2) P ( R i j − R i j ^ ) = N ( 0 , σ 2 )
P(U,V)=N(0,σ2U)N(0,σ2V) P ( U , V ) = N ( 0 , σ U 2 ) N ( 0 , σ V 2 )
即
P(Rij|Rij^)=P(Rij|U,V)=N(U′V,σ2) P ( R i j | R i j ^ ) = P ( R i j | U , V ) = N ( U ′ V , σ 2 )
由贝叶斯公式,后验概率
P(Rij^|Rij)=P(Rij|Rij^)∗P(Rij^)P(Rij)=P(Rij|U,V)∗P(U,V)P(Rij)=N(U′V,σ2)∗N(0,σ2U)N(0,sigma2V)P(Rij)∝N(U′V,σ2)∗N(0,σ2U)N(0,sigma2V) P ( R i j ^ | R i j ) = P ( R i j | R i j ^ ) ∗ P ( R i j ^ ) P ( R i j ) = P ( R i j | U , V ) ∗ P ( U , V ) P ( R i j ) = N ( U ′ V , σ 2 ) ∗ N ( 0 , σ U 2 ) N ( 0 , s i g m a V 2 ) P ( R i j ) ∝ N ( U ′ V , σ 2 ) ∗ N ( 0 , σ U 2 ) N ( 0 , s i g m a V 2 )
由概率公式的含义,只要使得上述后验概率最大,即得到的预测结果最优,而上述方差均为常数,标准正态分布公式如下
N(μ,σ)=12πσ−−√e−(x−μ)22σ2 N ( μ , σ ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2
将标准正态分布代入,将常数
12πσ√ 1 2 π σ 省去(不影响求U,V的最优值),得到
P(Rij^|Rij)∝exp(−(R−U′V)22σ2−U′U2σ2u−V′V2σ2v) P ( R i j ^ | R i j ) ∝ e x p ( − ( R − U ′ V ) 2 2 σ 2 − U ′ U 2 σ u 2 − V ′ V 2 σ v 2 )
两边取对数
lnP(Rij^|Rij)∝(−(R−U′V)22σ2−U′U2σ2u−V′V2σ2v) l n P ( R i j ^ | R i j ) ∝ ( − ( R − U ′ V ) 2 2 σ 2 − U ′ U 2 σ u 2 − V ′ V 2 σ v 2 )
省去
σ σ 并做参数替换得到要使
lnP(Rij^|Rij) l n P ( R i j ^ | R i j ) 最大,只需使得
E(U,V)=(R−U′V)22+λuU′U2+λvV′V2 E ( U , V ) = ( R − U ′ V ) 2 2 + λ u U ′ U 2 + λ v V ′ V 2
最小,而
E(U,V)=(R−U′V)22+λuU′U2+λvV′V2=∑Iij(Rij^−Rij)2+λu2∑∑kUik2+λv2∑∑kVkj2 E ( U , V ) = ( R − U ′ V ) 2 2 + λ u U ′ U 2 + λ v V ′ V 2 = ∑ I i j ( R i j ^ − R i j ) 2 + λ u 2 ∑ ∑ k U i k 2 + λ v 2 ∑ ∑ k V k j 2
此时我们发现,得到的表达式和MF中带L2正则的损失函数表达式一样,于是从概率角度证明了MF的可行性。剩下的步骤就与MF一样了。