两者都是推荐算法中的经典算法,在此依照自己的理解描述二者的思想及求解过程,希望以此促进理解二者的联系和区别。
MF 矩阵分解算法
矩阵分解,顾名思义,将一个矩阵分解成多个矩阵相乘的形式,如评分矩阵Ri∗jRi∗j 分解成 用户矩阵 Ui∗kUi∗k 与物品矩阵Vk∗jVk∗j 的乘积。而用户矩阵中的k,代表每个用户i对物品k个属性的偏好程度,物品矩阵中的k,则代表每个物品j具有对应的k个属性的程度。要使得分解后得到的Ui∗kUi∗k 和 Vk∗jVk∗j 能尽可能还原Ri∗jRi∗j,即
Ri∗j≈Ri∗j^=Uik×VkjRi∗j≈Ri∗j^=Uik×Vkj
, 具体地,
Ri∗jRi∗j
中已有评分值,与
Ri∗j^Ri∗j^
中对应位置的值尽可能接近,这样,可以由
Ri∗j^Ri∗j^
预测
Ri∗jRi∗j
中没有值的位置可能的评分。
为了“尽可能接近”,需要对U和V矩阵的值进行训练选择,于是需要设计损失函数,和优化方法。
损失函数
在此,可以选择平方误差函数作为损失函数,即
E2=∑e2ij=∑Iij(Rij^−Rij)2=∑Iij(Rij^−∑kUikVkj)2E2=∑eij2=∑Iij(Rij^−Rij)2=∑Iij(Rij^−∑kUikVkj)2
其中 IijIij 为指示函数,当 RijRij 有评分时则为1,否则为0.
损失函数求解
在此,用梯度下降的方式求解,即
∂E2∂Uik=−2∑Iij(Rij^−∑kUikVkj)Vkj∂E2∂Uik=−2∑Iij(Rij^−∑kUikVkj)Vkj
∂E2∂Vkj=−2∑Iij(Rij^−∑kUikVkj)Uik∂E2∂Vkj=−2∑Iij(Rij^−∑kUikVkj)Uik
根据梯度,更新变量
U′