基于矩阵分解模型的协同过滤理论概述(涉及到SVD,SVD++,TimeSVD++)

前言

本篇文章是对博客:从item-base到svd再到rbm,多种Collaborative Filtering(协同过滤算法)从原理到实现的补全,感谢该作者的分享

本文补全的内容为:

  • SVD++中 y j y_j yj的实际含义理解,以及对应的梯度下降公式
  • TimeSVD++梯度下降公式的分析

正文

SVD++

SVD++的原模型应该是如下形式:
在这里插入图片描述
其中 w i j w_{ij} wij是物品与物品的关联矩阵(梯度下降要学习的内容)
如果将 w i j w_{ij} wij再次进行QP分解,Q向量即物品i的隐向量,可与前式合并,得到如下形式:
在这里插入图片描述
即SVD++的公式模型
视上式中的所有字符为自变量求导,可得SVD++的梯度下降公式:
在这里插入图片描述

TimeSVD++

TimeSVD++的时序信息从基线预测模型和用户偏好模型两方面体现
一是基线预测模型,在SVD++的基础上,对 b i b_i bi增加了电影的受欢迎度在30个时间区间下的波动常值(也就是30个待优化的参数),记为 b i , B i n ( t ) b_{i,Bin(t)} bi,Bin(t),修正后的 b i b_i bi如下式:
在这里插入图片描述
还对 b u b_u bu增加了线性偏置量 d e v u ( t ) dev_u(t) devu(t)以及用户 u u u的波动常值 b u , t b_{u,t} bu,t(原文中按天给,数据集一共40天,所以是40个待优化的参数),修正后的 b u b_u bu如下式:
在这里插入图片描述
二是用户偏好模型,对 p u p_u pu引入时间变量,按隐向量维度f分为:
p u ( t ) = { p u 1 ( t ) , . . . , p u f ( t ) } p_{u}(t)=\{p_{u1}(t),...,p_{uf}(t)\} pu(t)={pu1(t),...,puf(t)}
对其中某一维k来说,引入的时间变量仍可按照线性偏置量以及用户 u u u在该维度的波动常值来代替,即修正为下式:
在这里插入图片描述
依向量化的思想,文中引入的新变量可以分为三类:

  • b i b_i bi中的波动常值 b i , B i n ( t ) b_{i,Bin(t)} bi,Bin(t)(有30个待优化量)
  • b u b_u bu以及 p u p_u pu中的线性偏置量(前者有3个待优化量,后者有3*f个待优化量)
  • b u b_u bu以及 p u p_u pu中的波动常值(前者有40个待优化量,后者有40*f个待优化量)

对上述三类新变量分别求梯度,与SVD++的梯度下降公式结合即可建立起TimeSVD++的梯度下降模型,其中:

  • 波动常值可视作一个向量,对向量求梯度,而不是对每一个待优化量求梯度
  • 线性偏置量因为3个带优化量有运算关系,应分别对3个待优化量求梯度,而不能视作向量求梯度
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值