本质矩阵svd分解_矩阵分解在推荐中的应用

21feee29bed7a9c2dcc542ab89804c90.png

  本篇文章旨在梳理一下在NetFlix推荐系统中大放异彩的矩阵分解模型,介绍svd模型及其相关变种。

  在评分预测问题中,最基本的算法是协同过滤算法,但是协同过滤模型又存在以下几个缺陷:
  a.物品间的相关性不会因为维度增加而增加
  b.历史评分矩阵过于稀疏,计算结果容易受维度数量影响,计算结果波动较大

  这些问题都可以在矩阵分解中得到解答,矩阵分解就是将一个大的矩阵分解成几个小的矩阵相乘,其中最著名的就属svd算法,具体原理可以参考这篇博客。

漫漫成长:奇异值分解(SVD)​zhuanlan.zhihu.com

  评分公式为:

54a584cd7d8f7ea02478146c6ebc91b5.png

  其中k为保留的奇异值的个数,一般k的取值远小于物品数或用户数。若我们需要预测某个缺失的评分结果,只需要计算对应小矩阵的乘积即可。

Funk SVD

  但在使用svd时需要对矩阵中的缺失值进行填充,对于一个用户没有发生过行为的物品,使用何种填充算法表达用户偏好是一个难题,这也导致svd在实际的推荐场景中应用并不广泛。

  为了解决以上问题,funk svd 应运而生。为简化计算,funk svd仅将矩阵分解成2个矩阵,使用均方差作为损失函数,通过梯度下降更新P、Q矩阵的值,可以理解为在svd中引入了线性回归。

将M矩阵分解成P、Q两个矩阵

dd0eb70e38d2742cd20b286aa0012281.png

预测结果:

f1afab4c57bbdd825c1348b5245aedcd.png

添加正则项,定义损失函数:

7a32898671c401bd93e47c573aa2a849.png

分别对P、Q矩阵求偏导:

41700a314f399f6afe661d84675740c2.png

更新:

8925d66bb8657c508589d24f62e07da7.png

Bias-SVD

  在funk-svd的基础上添加了用户的个性化部分,
bi(物品偏移):表示了物品接受的评分和用户没有多大关系,物品本身质量决定了的偏移。bu(用户偏移):有些用户喜欢打高分,有些用户喜欢打低分,用户决定的偏移
μ(全局平均值偏移):根据网站全局打分设置的偏移,可能和整体用户群和物品质量有相对应的关系。

预测公式:

b7e032bfd0c5602ddf7741655f5f8bc6.png

所以这里最小化的损失函数:

f5b2cd88f16a823958d9dd2cd2adc1d3.png

更新:

63d083437f059c6132842fbf4b2c7ddc.png

svd ++

  在bias-SVD的基础上引入用户的隐式反馈,引出了svd++算法。对于某个用户u的隐式反馈物品集合为N(u), yi为隐藏的评价了物品j的个人喜好偏置,这里缩放因子取经验值。

预测公式:

cd6513548321970719bc4bdaa3f9eb4a.png

更新的参数需要增加,以及更改qi的更新公式:

03eb75760a6e48d732cc7e9750a77b9f.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值