矩阵分解在协同过滤推荐算法中的应用和理解

矩阵分解在协同过滤推荐算法中的应用和理解

原文链接 原Po写的很好,大致描述一下。

矩阵分解要解决的问题

协同过滤所要达到的目的是将整个user-item矩阵中空白的位置来预测出值,矩阵分解可以满足这一要求,将原矩阵分解成两个或者三个子矩阵,然后再相乘得到一个新的矩阵,这个新的矩阵就是最终 要预测的矩阵(个人理解)

SVD矩阵分解

   SVD分解要求矩阵是稠密的,而在user-item矩阵中往往比较稀疏,所以不太适用

FunkSVD

FunkSVD是在传统SVD面临计算效率问题时提出来的,既然将一个矩阵做SVD分解成3个矩阵很耗时,同时还面临稀疏的问题,那么我们能不能避开稀疏问题,同时只分解成两个矩阵呢?也就是说,现在期望我们的矩阵M这样进行分解:
Mm×n=PTm×k * Qk×n
 我们知道SVD分解已经很成熟了,但是FunkSVD如何将矩阵M分解为P和Q呢?这里采用了线性回归的思想。我们的目标是让用户的评分和用矩阵乘积得到的评分残差尽可能的小,也就是说,可以用均方差作为损失函数,来寻找最终的P和Q。

对于某一个用户评分mij,如果用FunkSVD进行矩阵分解,则对应的表示为qTjpi,采用均方差做为损失函数,则我们期望(mij−qTjpi)2尽可能的小,如果考虑所有的物品和样本的组合,则我们期望最小化下式:
∑i,j(mij−qTjpi)2
 只要我们能够最小化上面的式子,并求出极值所对应的pi,qj,则我们最终可以得到矩阵P和Q,那么对于任意矩阵M任意一个空白评分的位置,我们可以通过qTjpi计算预测评分。很漂亮的方法! 接下来就求偏导,求出两个向量。

SVD++用于推荐算法

SVD++进一步做了增强,这里它增加考虑用户的隐式反馈。一个用户对物品的评分=显示打分+隐式反馈。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值