当前位置:   article > 正文

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

基于svd推荐系统

简介

通过本文,你可以了解

  • 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
  • 1

安装即可。

核心思想

关于SVD的纯数学意义

在矩阵M的奇异值分解中

M=UV

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/713954
推荐阅读
相关标签
  

闽ICP备14008679号