矩阵分解常作为推荐系统中一个比较常用的方法,在传统的svd分解中,矩阵分解是把一个
Rm×n=Mm×mΣUn×nT R_{m×n}=M_{m\times m}\Sigma U_{n\times n}^{T} Rm×n=Mm×mΣUn×nT
对于M矩阵来说是RRTRR^TRRT ,而对于N是RTRR^TRRTR 的特征向量。
但是R为稀疏矩阵(因为在用户的矩阵中部分用户对于部分物品是没有评分的,也就是矩阵元素为0),这也就意味着RTRR^TRRTR 是不存在的,同样R乘以R的转置也不存在。所以这里就需要新的方法来处理这个问题。当然我们可以使用每行的平均值来填充空的元素,这一看起来比较合理的方法。不过这样会导致结果会有很大的偏见,所以不建议使用。
后来simon Funk就提出了一种分解方法,Funk mf,也就是我们日常所使用的mf。及利用中间变量来降维从而使得矩阵可分
Rm×n=Pm×kQn×kT R_{m \times n}=P_{m \times k}Q_{n \times k}^T Rm×n=Pm×kQn×kT
这里的P和Q矩阵分别是用户u-中间矩阵,和物品矩阵,上面的模型也被称为隐含语义模型,或者叫做隐式反馈。
那么就得出预测矩阵
Rˉ=P×Q \bar{R}=P\times Q Rˉ=P×Q
有了预测矩阵,那么就可以想到梯度下降来求解最优参数了,于是:
SSE=(R−Rˉ)2=(R−p×q)2 SSE=(R-\bar{R})^2=(R-p\times q)^2 SSE=(