作  者:一元
公众号:炼丹笔记

背景

本文是一篇较老的文章,是Yahoo的研究员关于协同过滤中时间动态建模的最为细致的讨论。

顾客对产品的偏好随着时间的推移而变化。随着新选择的出现,产品的认知和受欢迎程度也在不断变化。同样地,顾客的偏好也在不断演变,导致他们不断地重新定义自己的品味。因此,在设计推荐系统或一般客户偏好模型时,时间动态建模是一个关键。然而,这会有独特的挑战。在跨多个产品和客户的生态系统中,许多不同的特征同时发生变化,而其中许多特征又相互影响,这些变化往往是微妙的,并与一些数据实例相关联。这将问题与概念漂移(concept drift)探索区分开来。传统的时间窗或实例衰减方法可能无法奏效,因为它们在丢弃数据实例时会丢失太多信号。需要一种更敏感的方法,以便更好地区分瞬态效应和长期模式。我们提供的范例是创建一个模型来跟踪数据生命周期中随时间变化的行为。这允许我们利用所有数据实例的相关组件,同时丢弃那些被建模为不相关的组件。

跟踪不断变化的客户偏好

消费者的喜好会伴随着时间而变化, 客户喜好漂移的这一方面突出了文献中一个共同的范式,即全球漂移概念影响整个数据。在推荐系统中,我们面临一种更为复杂的概念漂移(concept drift),即许多用户的相互关联的偏好在不同的时间点以不同的方式漂移。

这需要学习算法来跟踪多种变化的概念。此外,与单个消费者相关联的典型的低量的数据实例需要更简洁有效的学习方法,从而最大限度地利用数据中的信号。

  • instance selection: (1).丢弃和系统当前状态低相关的;一个常见的变体是时间窗口方法,只考虑最近的实例。这个简单模型的一个可能的缺点是,它对所考虑的时间窗口内的所有实例都赋予相同的意义,而完全丢弃所有其他实例。当时间偏移突然时,这可能是合理的,但当时间偏移是渐进的时,则不太合理。(2).一个精化是实例权重是基于实例的估计相关性进行加权的。使用时间衰减函数,当实例发生在更深的过去时,我们会对其进行加权。(3).第三种方法是基于集成学习,它保持了一系列预测因素,这些因素共同产生最终结果。这些预测因素根据其与当前时间点的感知相关性进行加权,例如,在最近的实例中更成功的预测者获得更高的权重。

所以我们尝试对变化的用户喜好进行建模:

  • 寻求能够解释整个时间段内用户行为的模型,而不仅仅是当前行为(同时受到性能限制)。这是能够从每个时间点提取信号而忽略噪声的关键;
  • 应该捕捉到多个不断变化的概念。有些依赖于用户,有些依赖于商品。同样,有些是渐进的,有些是突然的;
  • 虽然我们需要为每个用户和/或商品分别建模独立的漂移“概念”或喜好,但必须在单个框架内组合所有这些概念。这允许跨用户和商品建模交互,从而识别更高级别的模式;
  • 一般来说,我们不会试图推断未来的时间动态,例如,估计用户偏好的未来变化。这可能非常有用,但太难了,尤其是在已知数据量有限的情况下。相反,我们的目标是捕获过去的时间模式,以便将持续信号从瞬态噪声中分离出来。这确实有助于预测未来的行为.

时间感知的分解模型

因子模型剖析

这种纯因子模型很好地捕捉了用户和项目之间的交互作用。然而,大部分观察到的评分值都是由于与用户或者商品相关联的影响,而与它们的交互作用无关。一个主要的例子是,典型的CF数据显示出很大的用户和项目偏差,即一些用户给出的评分高于其他用户,而某些项目的评分高于其它商品。

我们将把这些不涉及用户商品交互的影响封装在基线预测值中。这些基线预测器倾向于捕捉大部分观察到的信号,特别是数据中的大部分时间动态。因此,对它们进行精确的建模是至关重要的,这样可以更好地识别真正代表用户-商品交互的信号部分,并且应该进行因式分解。

时变基线预测因子

通过两个主要的时间效应,大部分时间变异性包含在基线预测因子中

  • 第一个问题是解决:一个商品的受欢迎程度随着时间的推移而变化。例如,电影可能会因为外部事件(如演员在新电影中的出现)而进入或退出流行状态。这一点在我们的模型中得到了体现,即项目偏差不是一个常数,而是一个随时间变化的函数。
  • 第二个主要的时间效应与用户偏见有关-用户随着时间的推移改变了他们的基准评分。例如,一个倾向于给一部普通电影评“4星”的用户,现在可能会给这样一部电影评“3星”,这是因为前面解释过的各种原因。因此,在我们的模型中,我们希望将参数bu作为时间的函数。

基于上述的问题,我们对之前我们的假设进行修改:

决定如何将时间线划分为多个箱子时,应在实现更高分辨率(因此,更小的箱子)和每个箱子有足够评级(因此,更大箱子)的需求之间取得平衡。对于电影分级数据,有各种各样的垃圾箱大小,它们的准确度大致相同。在我们的实现中,每个bin对应于大约连续10周的数据,因此在数据集中,总共有30个bin跨越所有的时间。一天t与一个整数Bin(t)相关联(在我们的数据中是一个介于1和30之间的数字),因此电影偏差被分成固定部分和时间变化部分:

虽然binning参数在项目上工作得很好,但对用户来说这是一大的挑战。一方面,我们想要一个更好的分辨率,以便用户检测非常短暂的时间效应。另一方面,我们不期望每个用户有足够的打分,以产生可靠的估计孤立的bins。不同的函数形式可以用来参数化用户时间行为,但也伴有不同的复杂性和准确性。

上面的函数已经非常好了,但在许多应用程序中,会出现与一天或一个会话相关的突然漂移。例如,在电影分级数据集中,我们发现一个用户在一天内给出的多个评分往往集中在一个值上。这种影响不会超过一天。这可能反映了用户当天的情绪,一天内给出的评分对彼此的影响,或多人帐户中实际评分者的变化。为了解决这种短暂的影响,我们为每个用户和每一天分配一个参数,吸收特定日期的变化。这个参数用表示。注意,在某些应用程序中,要使用的基本原始时间单位可以短于或长于一天。

所以我们得到线性函数:

基于曲线的模型变为:

将上面所说的综合起来,我们使用线性函数加入突变的情况来建模得到:

于是我们最终就需要优化下面的式子:

实验对比

上面的时间没有考虑时间的周期性影响,我们也可以将其加入进来(但在我们但数据集中并没有发现明显但周期性,所以暂时就没有使用).

时变因子模型

上面主要都是在讨论时间对于baseline predictor的影响,同时这也会影响用户和商品的交互。此处我们使用用户的每个喜好.

于是我们有:

于是我们便可以得到 timesSVD++.

实验对比

所有的方法都得益于越来越多的因素维度,这使得它们能够更好地表达复杂的电影用户交互。请注意,timeSVD++相对于SVD++的改进比SVD++相对于SVD++的改进更为显著

邻域模型的时间动力学

原先的加入i2i的信息,

于是我们的优化目标变为:

通过加入时间信息,我们可以将原先的RMSE从0.9002降低为0.8885.

小结

跟踪客户对产品偏好的时间动态带来了独特的挑战。每个用户和商品都可能在其特性上经历一系列不同的变化。此外,我们通常需要在一个模型中对所有这些变化进行建模,从而将用户(或产品)相互连接,以识别共同的行为模式。仅仅是老的实例的衰减或多个独立模型的使用会损失太多信号,从而降低预测精度。我们采用的解决方案是在整个时间段内建立时间动态模型,使我们能够智能地将时间因素和全局时间因素分离开来。我们将此方法应用于两种主要的推荐技术。在因子分解模型中,我们模拟了用户和产品特性随时间的变化方式,以便从噪声模式中提取长期趋势。在一个商品-商品邻域模型中,我们展示了如何通过学习用户评价的两个项目之间的影响如何随时间衰减来揭示项目之间更基本的关系。在因子分解和邻域模型中,时间动态的包含被证明对提高预测质量非常有用,比各种算法的增强更有效。这导致了迄今为止在广泛分析的电影分级数据集上公布的最佳结果。

参考文献

  1. Collaborative Filtering with Temporal Dynamics:https://www.cc.gatech.edu/~zha/CSE8801/CF/kdd-fp074-koren.pdf

推荐系统炼丹笔记:令人着迷的时间动态CF算法相关推荐

  1. 分级加权打分算法 java_推荐算法炼丹笔记:令人着迷的时间动态CF算法

    作 者:一元 公众号:炼丹笔记 背景 本文是一篇较老的文章,是Yahoo的研究员关于协同过滤中时间动态建模的最为细致的讨论. 顾客对产品的偏好随着时间的推移而变化.随着新选择的出现,产品的认知和受欢迎 ...

  2. 推荐系统炼丹笔记:RecSys2020-SSE-PT解锁序列数据挖掘新姿势

    作 者:一元 公众号:炼丹笔记 背景 现在诸多的推荐算法在处理时间信息上, 除了在自然语言常用的RNN,CNN等模型, 就是基于Transformer的模型,但是和SASRec类似, 效果不错,但是缺 ...

  3. 推荐系统炼丹笔记:推荐系统Bias/Debias大全

    作者:一元 公众号:炼丹笔记 背景 在实践中,做推荐系统的很多朋友思考的问题是如何对数据进行挖掘,大多数论文致力于开发机器学习模型来更好地拟合用户行为数据.然而,用户行为数据是观察性的,而不是实验性的 ...

  4. 推荐系统炼丹笔记:EdgeRec阿里边缘计算推荐系统

    作者:一元 公众号:炼丹笔记 背景 推荐系统(RS)已经成为大多数web应用程序的关键模块.最近,大多数RSs都是基于云到边缘框架的瀑布式的,其中推荐的结果通过在云服务器中预先计算传送到edge(例如 ...

  5. 推荐系统炼丹笔记:阿里边缘计算+奉送20个推荐系统强特

    作者:一元 公众号:炼丹笔记 背景 推荐系统(RS)已经成为大多数web应用程序的关键模块.最近,大多数RSs都是基于云到边缘框架的瀑布式的,其中推荐的结果通过在云服务器中预先计算传送到edge(例如 ...

  6. 推荐系统炼丹笔记:多模态推荐之用户评论篇

    作者:一元 公众号:炼丹笔记 目前非常多的推荐系统主要使用用户的一些基础反馈信息来作为最终的标签进行模型的训练,例如点击/购买等,但是却鲜有文章去进一步挖掘用户的其它反馈,例如用户对于该产品的评论,很 ...

  7. 推荐系统炼丹笔记:用户评论在推荐中的应用

    作者:一元 公众号:炼丹笔记 目前非常多的推荐系统主要使用用户的一些基础反馈信息来作为最终的标签进行模型的训练,例如点击/购买等,但是却鲜有文章去进一步挖掘用户的其它反馈,例如用户对于该产品的评论,很 ...

  8. 推荐系统炼丹笔记:边缘计算+奉送20个推荐系统强特

    作者:一元 公众号:炼丹笔记 背景 推荐系统(RS)已经成为大多数web应用程序的关键模块.最近,大多数RSs都是基于云到边缘框架的瀑布式的,其中推荐的结果通过在云服务器中预先计算传送到edge(例如 ...

  9. 推荐系统炼丹笔记:阿里DMIN多重兴趣网络

    作 者:一元 公众号:炼丹笔记 背景 许多现有的建模开始基于用户的历史行为序列进行建模并且取得了相当不错的效果,为了捕获用户动态和变化的兴趣, 我们观测到用户经常在某个时间点拥有大量的兴趣, 与此同时 ...

最新文章

  1. seaborn箱图(box plot)可视化、并且在箱图中使用三角形标注均值的位置(showmeans=True)
  2. 雷军做程序员时写的文章,太牛了!
  3. Check failed: status == CUDNN_STATUS_SUCCESS (4 vs. 0) CUDNN_STATUS_INTERNAL_ERROR
  4. 服务器系统磁盘,服务器系统重装与磁盘阵列
  5. 如何基于ERP的sales organization 创建CRM对应的数据
  6. jzoj5230-队伍统计【状压dp】
  7. 【分享一套网站源代码】wufowang网源码下载
  8. 用java写jsp页面跳转页面跳转_五种 JSP页面跳转方法详解
  9. 对项目管理和软件开发过程的感受和理解
  10. PDF转换工具安装教程
  11. (连载0.2)加强版Python提取上市公司年报报告中财务报表
  12. 华为网络设备-DHCP基础配置实验
  13. 大连英语培训百家外语雅思考试词汇量要求与记忆方法是什么
  14. 【老九】【Python】函数与模块
  15. Java 已知直角三角形周长,求整数边
  16. 用Python蹭别人家图片接口,做一个【免费图床】吧
  17. 大数据Hadoop集群搭建
  18. 阿里矢量图标iconfont在微信小程序的使用
  19. JavaSE基础(21) 打印数组
  20. 深度解析:电商直播基地运营及盈利模式

热门文章

  1. Virtualization基础
  2. 自学ng2 -生命周期钩子
  3. R语言入门心得(3) -- 向量相关
  4. ubuntu mysql汉字写入只写入了一个字符
  5. A watermeten 《Before an Exam》
  6. 服务器会自动创建cookie,网站的cookie机制是什么
  7. Visual Studio 2008 查找耗时函数 C++ Profiler 性能 优化
  8. 大学电路题目怎么搜_电路(二),中国大学MOOC(慕课)答案公众号搜题
  9. python3精要(40)-数组与矩阵
  10. mxnet基础到提高(27)-Dense