两者都是推荐算法中的经典算法,在此依照自己的理解描述二者的思想及求解过程,希望以此促进理解二者的联系和区别。
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=