基于SVD思想的简单推荐系统的实现

本文详细介绍了如何使用Python实现基于SVD的推荐系统。内容涵盖SVD算法的核心思想,数据处理,训练与测试过程,以及推荐方法。通过实例展示了如何处理评分矩阵的稀疏性,运用梯度下降优化模型参数,最后通过RMSE评估模型性能。
摘要由CSDN通过智能技术生成

简介

通过本文,你可以了解

  • Python的一些小tips
  • SVD算法的基本思想以及实现
  • 如何利用SVD来实现一个比较基础的推荐系统

实现环境

  • Pycharm Community Edition
  • Python3
  • numpy
  • pandas
  • sklearn

数据来源

  • MovieLens数据集

参考文献

《Advances in Collaborative Filtering》

环境的配置

pycharm & python3

配置方式参考上一篇BLOG。

numpy & pandas & sklearn

pandas直接用pip安装即可。
因为在windows环境下直接采用pip安装会出现错误,所以本文推荐在此下载网 1下载numpy+scpiy+sklearn的二进制文件到目录下采用

pip install ***.whl

安装即可。

核心思想

关于SVD的纯数学意义

在矩阵M的奇异值分解中

M=UV

  • V的列(columns)组成一套对 M 的正交”输入”或”分析”的基向量。这些向量是 MM 的特征向量。
  • U的列(columns)组成一套对 M 的正交”输出”的基向量。这些向量是 MM 的特征向量。
  • Σ对角线上的元素是奇异值,可视为是在输入与输出间进行的标量的”膨胀控制”。这些是 MM MM 的特征值的非负平方根,并与U和V的行向量相对应。
本算法所采用的思想

在基于SVD算法的推荐系统中,我们可以发现,对于一个打分矩阵M,可以将其分解成P,Q的两个矩阵的乘积,而我们可以分别认为P与Q两个矩阵为用户和电影对每一个因子的影响程度。
了解了以上的思想,我们发现,我们要做的就是根据一个不完整的评分矩阵(通常是如此,因为用户不会对所有的电影打分,因此才需要我们做出推荐)来得出 P Q 两个因子矩阵即可。但是我们发现,根据传统的SVD理论我们很难根据不完整的矩阵得到 P Q 两个矩阵,通常的做法例如置0或者随机赋值经过尝试后发现对于这种稀疏矩阵对结果的影响很大所以放弃,于是我们想到了采用机器学习的思想来解决这个问题。
在论文《Advances in Collaborative Filtering》中,我们找到了一种通过学习来得到 P Q 两个矩阵的方法,我们通过以下这个方程来进行打分

rui=μ+bi+
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值