前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于矩阵分解的推荐系统

基于矩阵分解的推荐系统

作者头像
张凝可
发布2019-08-21 22:44:46
6870
发布2019-08-21 22:44:46
举报
文章被收录于专栏:技术圈技术圈

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_27717921/article/details/78257450

关于矩阵分解

矩阵分解活跃在推荐领域,基于SVD的推荐系统也是矩阵分解的一种。给定一个用户评分表,通常这个是个很大的矩阵,m行n列,m代表用户的个数,n代表项目的个数。并且这个矩阵在实际情况中是非常稀疏的,用户只能评价少部分的项目,因而矩阵中会存在很多?,用户并没有对对应的项目打分或者是评价过,所以我们很难对了解用户对相应项目的偏好情况。

这里写图片描述
这里写图片描述

而我们推荐矩阵分解就是希望能通过用户已有的评分来预测用户对未打分或者评价项目的评价情况,而通过矩阵分解则能挖掘用户的潜在因子和项目的潜在因子,来估计缺失值。

这里写图片描述
这里写图片描述

矩阵Um,k的行向量表示用户u的k维的潜在因子,表达用户的内部特性,矩阵Vn,k的行向量表示项目i的k维的潜在因子,表示项目的内部特性。利用矩阵U和V可以估计用户u对项目i的评分为:

这里写图片描述
这里写图片描述

对于任意矩阵,一定存在矩阵U和V使得Y=U*VT么? 但是一般情况下不一定能非常完美的进行矩阵分解,所以我们可以利用最小化偏差来不断训练参数,这里的参数theta = (U,V);

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

为利用矩阵U、V矩阵预测用户u对项目i的打分情况。

Basic MF:

Basic MF的目标函数为误差平方和作为优化目标:

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

我们可以一般采用梯度下降来优化参数theta,为了减少计算的复杂度,我们这里采用的是随机梯度下降

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

采用负梯度进行梯度下降

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

迭代更新U、V矩阵,直到趋于收敛。

Regularized MF

这里写图片描述
这里写图片描述

如果待分解的矩阵Y非常的稀疏,我们在不断减少平方误差的过程中就很可能会出现的过拟合的现象,为了使训练出来的U、V矩阵更好的拟合现有的数据而导致在缺失上的数据效果不好就可能会造成过拟合现象。因此我们应该在一定程度上限制参数,因为U、V上的每一个元素都是待更新的参数,我们要在优化目标上加入正则项,也就是惩罚项。

这里写图片描述
这里写图片描述

梯度为:

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

梯度更新式为:

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

迭代更新U、V矩阵,直到趋于收敛。

Regularized MF + 偏置项

我们用

这里写图片描述
这里写图片描述

可能无法表达用户u和项目i的关系,可能除了受用户和项目的潜在因素影响,可能还会受到其他因素的影响,所以我们需要用偏置项来表示这些其他因素对预测的影响。

这里写图片描述
这里写图片描述

误差平方和以及加上损失项的目标函数

这里写图片描述
这里写图片描述

这时我们的theta 除了包含U,V矩阵还包含bu、bi向量,U、V的更新式和Regularized MF 保持一致,而bu,bi的更新式为:

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

不断迭代更新,直到参数收敛,我们就可以利用

这里写图片描述
这里写图片描述

来估计用户u对项目i的打分情况。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年10月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于矩阵分解
  • Basic MF:
  • Regularized MF
  • Regularized MF + 偏置项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档