推荐系统中的矩阵分解

来源:互联网 发布:复杂网络建模基本概念 编辑:程序博客网 时间:2024/05/03 03:58

1、传统SVD(奇异值分解,正交的,可以将分解后的矩阵看作是原来矩阵的另一种表达)
这里写图片描述
针对用户与物品的打分表,表中肯定会存在一些缺失值,SVD是想通过将M矩阵分解,然后通过选择较大的特征值来降维。其中K是奇异值的个数,会远远小于用户数和商品数MN, 预测第i个用户对于第j个商品的打分,通过u^T∑v即可得到,这样就可以预测评分。
但是SVD要求矩阵必须是密集的,我们既然要预测打分矩阵,肯定说明打分矩阵中大部分是空白,因此很难SVD满足要求。
2、basic MF(也叫隐语义模型 latent factory model)
这里写图片描述
basic MF的思想是将矩阵分解为U^t *S,找到损失函数(下边的损失函数没有添加正则化项):
这里写图片描述
预测值接近真实值就是使其差最小,R表示用户i对于物品j的真实打分,U^t *S表示预测打分,然后对该函数进行梯度下降:
u=u+r*损失函数对于ui求偏导
v=v+r*损失函数对于vj求偏导
3、Funk SVD(非正交,就是将原来矩阵降维,分解后矩阵与原来矩阵是近似而不是等价)
由于SVD 不适合与稀疏矩阵,我们考虑将矩阵分解M=PQ,让用户的评分和预测评分的残差尽可能小,使用均方差MSE作为损失函数:
这里写图片描述
防止过拟合添加L2正则化,损失函数:
这里写图片描述
现在使用梯度下降,求解q,p
这里写图片描述
最终PQ矩阵。
4、bias SVD
就是在Funk SVD的基础上又增加了一些参数,一些和用户物品无关的评分因素,用户有一些和物品无关的评分因素,称为用户偏置项。而物品也有一些和用户无关的评分因素,称为物品偏置项。这其实很好理解。比如一个垃圾山寨货评分不可能高,自带这种烂属性的物品由于这个因素会直接导致用户评分低,与用户无关。
添加了第i个用户的偏置bi,第j个商品的偏置bj,损失函数变为:
这里写图片描述
现在需要优化四个变量,分别是pi,qj,bi,bj,通过梯度下降进行优化,最终得到PQ矩阵。
只是作为自己学习的总结:
拜读的博客:https://www.cnblogs.com/pinard/p/6351319.html