【矩阵分解五】TimeSVD

改进点(跟前几篇的SVD比):

一句话总结:在构建元素𝑟̂ 𝑢𝑖时,每个时间段学习一个参数,某个时间段参数使用该时间段数据进行学习,也即是加入时间权重。


主要思想:

上述模型都是静态的,但是现实中,物品的流行度会随时间变化,用户的品味也可能随着时间而改变。因此,可以采用 TimeSVD 模型基于这种假设建模。该模型的核心思想是:为每个时间段学习一个参数,某个时间段参数使用该时间段数据进行学习。通过建模海量数据,自动发现潜在的时间模式。考虑到数据可能不足的问题,我们想要使用所有数据一起学习,那么可以添加时间距离作为权重:

上述 𝑏𝑢(𝑡)、𝑏𝑖(𝑡) 分别是用户和物品偏置随着时间变化的函数,𝑝𝑢(𝑡) 是用户隐因子随时间变化的函数。对于这些随时间变化的函数,一种处理是将时间离散化,可以将整个时间窗按照一定粒度进行划分,粒度越小代表随时间变化较大,粒度越大则代表变化较慢。例如处理物品 𝑏𝑖(𝑡),若假定物品的 bias 在短期内不会很大的改变,那么可以以较大的粒度划分,假设我们选取 3 个月的交互数据进行建模,整个时间窗口为 3 个月,以 2 周为一片,共划分为 6 片,每个时间 𝑡,赋予一个 𝐵𝑖𝑛(𝑡)(即 1 到 6 之间的整数),这样就可以把 𝑏𝑖(𝑡) 分为静态以及动态两部分:𝑏𝑖(𝑡)=𝑏𝑖+𝑏𝑖,𝐵𝑖𝑛(𝑡),建模时,相当于需要额外对每个时间片求一个参数 𝑏𝑖,𝐵𝑖𝑛(𝑡),以建模物品流行度随时间变化。

如果某个时间 𝑡 数据较少,不能学习到关于该时间 t 的偏置变化参数,那么就不能添加这种和时间相关的参数。一种解决方法是,可以定义关于时间的连续函数,例如处理用户偏置,定义时间偏移量函数:𝑑𝑒𝑣𝑢(𝑡)=𝑠𝑖𝑔𝑛(𝑡−𝑡𝑢)⋅|𝑡−𝑡𝑢|𝛽, 其中 𝑡𝑢 代表该用户所有交互数据的平均时间(是指用户交互的时刻)。|𝑡−𝑡𝑢| 代表时间距离。𝛽 是超参数,衡量时间变化影响程度,越大代表受时间影响程度大。则:𝑏𝑢(𝑡)=𝑏𝑢+𝛼𝑢𝑑𝑒𝑣𝑢(𝑡)。𝛼𝑢 是模型需要为每个用户学习的参数,也就是说参数 𝛼𝑢 和时间无关,关于该用户的所有数据都能够进行学习,时间因素主要体现在 𝑑𝑒𝑣𝑢(𝑡)上。

另一种时间函数用到高斯核来衡量时间的相似性。首先获取用户所有交互时间集合,𝑘𝑢 个时间点,即 𝑡𝑢1,…,𝑡𝑢𝑘𝑢。 然后使用公式:

需要为该用户所有交互时间点学习一个参数 𝑏𝑢𝑡𝑙, 共 𝑘𝑢 个参数。预测时,使用高斯核计算时间相似性,在所有的时间上计算时间相似性,使用时间相似性对参数 𝑏𝑢𝑡𝑙 进行加权。

考虑到周期性影响,可以加入周期参数:

 

小结:

这五篇矩阵分解的内容上, 主要内容是构造矩阵的不同损失函数,在预测值𝑟̂ 𝑢的构成做文章,比如加入正则、偏置、用户偏好、时间权重这些信息。。

参考:

1.https://lumingdong.cn/recommendation-algorithm-based-on-matrix-decomposition.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值