矩阵分解学习总结+python代码

本文总结了矩阵分解在推荐系统中的重要性,特别是针对稀疏矩阵的问题,介绍了Simon Funk提出的Funk MF方法。通过构建P和Q矩阵进行降维,预测用户评分并使用梯度下降优化参数,同时引入L2正则项防止过拟合。最后,给出了Python代码实现。
摘要由CSDN通过智能技术生成

矩阵分解常作为推荐系统中一个比较常用的方法,在传统的svd分解中,矩阵分解是把一个
R m × n = M m × m Σ U n × n T R_{m×n}=M_{m\times m}\Sigma U_{n\times n}^{T} Rm×n=Mm×mΣUn×nT
对于M矩阵来说是 R R T RR^T RRT ,而对于N是 R T R R^TR RTR 的特征向量。
但是R为稀疏矩阵(因为在用户的矩阵中部分用户对于部分物品是没有评分的,也就是矩阵元素为0),这也就意味着 R T R R^TR RTR 是不存在的,同样R乘以R的转置也不存在。所以这里就需要新的方法来处理这个问题。当然我们可以使用每行的平均值来填充空的元素,这一看起来比较合理的方法。不过这样会导致结果会有很大的偏见,所以不建议使用。
后来simon Funk就提出了一种分解方法,Funk mf,也就是我们日常所使用的mf。及利用中间变量来降维从而使得矩阵可分

R m × n = P m × k Q n × k T 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
有了预测矩阵,那么就可以想到梯度下降来求解最优参数了,于是:

S S E = (

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值