
👆点击“博文视点Broadview”,获取更多书讯

序列推荐(Sequential Recommendation)是一种通过建模用户行为与项目在时间序列上的模式,以给用户推荐相关物品的一种推荐系统范式。
推荐系统中的对象有两种,分别为用户(user)和物品(item),二者在时间维度上包含若干次交互行为,例如用户浏览、点击和购买转化等行为。
序列推荐系统将这些交互行为按照时间次序依次排列,利用多种不同的建模方法挖掘其中的序列化模式(sequential patterns),并用于支持下一时刻的一个或多个物品的推荐。
本文首先介绍序列推荐的研究动机与数学定义,并按照相关技术与算法发表的顺序介绍序列推荐技术的三种分类;然后会重点讲解基于深度学习方法的序列推荐算法;最后介绍目前学术界与工业界重点关注的若干前沿话题。

01
序列推荐的动机、定义与分类
在平时的网上浏览过程中,用户会产生多种多样的浏览行为。如图1所示,某用户在电子商务平台的浏览记录以发生时间的先后次序排列。

图1 用户历史行为序列示例
该用户在该平台最近的历史行为依次出现了 “浏览”“搜索”“购买”等多种不同的交互行为,其目标物品包括“手机”“耳机”“手机贴膜”等物品,可见这是一位正在选购移动通信工具及相关商品的用户。
根据该用户的最近历史行为序列,该电商平台在该用户下一次访问平台时,可能给他推荐“手机保护壳”等产品,会更加容易获得用户的正反馈行为,即“点击浏览”或者“转化购买”。
通过这个例子,读者应该能够理解序列推荐出现的场景,即根据用户动态变化的历史行为序列,针对未来时刻用户可能感兴趣的物品进行推荐。
在现实生活中,人们的兴趣随着时间推进往往会产生变化,与此同时,用户兴趣驱动所呈现出的行为序列亦是多种多样的。
例如,在旅游之前,用户往往对旅馆、机票、出行装备等物品比较感兴趣;在春节等节假日来临之际,节日主题的物品往往是用户当前特别感兴趣的对象。
所以,在不同的时间、不同的用户、不同的场景下,用户行为序列呈现出各种不同的形态与变化。
读者可以思考一下:在平时生活中,你的网上购物、网页内容浏览等行为是否也呈现出持续且动态变化的特性呢?
互联网从20世纪末发展到现在,已经产生了众多在线服务平台,例如电子商务领域的亚马逊、阿里巴巴,新闻媒体领域的今日头条,社交媒体中的Meta、新浪微博,等等。
这些平台往往已经经过了用户大量增长的“增量发展”时期,进入了“存量增长”时期,即新用户增长已经延缓,更多的发展机会点存在于已经在平台注册的用户群体中。
如何为这些用户提供更好的服务与体验,已经成为大部分互联网在线服务平台的首要考虑要素。
这些平台已有的存量用户无时无刻不在产生多种多样的交互行为。
Ren等人统计了2018年4月至9月期间,国内电商平台阿里巴巴旗下“淘宝网”的用户行为数据,这份数据展示了半年时间内平台不同行为数量的用户在平台所有用户中的占比,这些行为仅统计了用户 “加入购物车” 与最终购买之间的行为数量。
表1 阿里巴巴电商平台“淘宝网”2018 年4 月至9 月用户行为统计数据

从表1中可以看出,用户在“淘宝网”的交互次数数量众多,有超过一半的用户交互在200次以上,即这些用户在这半年的行为序列长度超过200次。
如何建模这些用户的动态兴趣变化以帮助下一次用户访问时的推荐内容呈现,逐渐成为“淘宝网”等互联网服务平台的重要研究探索方向。
序列推荐的种类根据使用场景可以分为三类,如图2所示。

图2 时序推荐的分类
时序推荐(Temporal Recommendation)指的是给定特定用户u在t时刻之前的历史行为序列,为其推荐下一个(next item)或者下一组(next bas-\linebreak ket)用户所感兴趣的物品。
在前面的数学定义中,我们的推荐目标定义在“下一个”物品推荐;若推荐“下一组”物品,则需要将定义中的v定义为“一组物品”,其他定义保持不变。
在推荐系统中,用户可能没有登录,那么根据匿名用户在短期一次会话(session)之内的序列推荐,就称为会话推荐。
在会话推荐中,一般序列长度较短,且无法关联更久远之前的用户历史交互行为。
第三种则是将前两种序列进行组合,系统会考虑已登录用户的当前会话中的短期浏览行为与长期历史行为,进行综合推荐。
序列推荐场景有三个难点,导致难以使用传统的推荐算法解决。
传统的推荐算法,例如矩阵分解算法、宽深网络算法一般将用户历史行为看作静态信息,即使考虑用户历史行为序列,也仅仅通过复杂的人工特征设计来达成目的,难以解决上述难点。
于是,序列推荐算法的研究应运而生。

02
序列推荐算法的分类
如图3所示,序列推荐算法可以分为四类。接下来本文将对其分别做简略介绍。

图3 序列推荐算法分类
▊ 序列模式挖掘方法
基于序列模式挖掘(Sequential Pattern Mining)的个性化模式挖掘方法由Yap等人在2012年提出。
在此之前,Agrawal等人提出了序列模式挖掘方法,通过挖掘序列模式来对下一物品进行推荐。
这种技术做出了一个假设:若许多用户在物品 之后浏览了 ,那么推荐系统的合理做法是将 推荐给浏览了 的用户。
图4展示了序列模式挖掘算法的流程。Yap等人认为传统做法难以做到个性化的推荐目的,在传统序列模式挖掘的基础上,利用系统对特定用户过去浏览历史的模式挖掘结果计算支持(support)与预测性(predictive power),并用于个性化序列推荐。

图4 序列模式挖掘算法的流程
这类方法使用的是传统的序列模式挖掘算法,需要较多的计算资源与序列模式规则的设计,同时难以建模复杂的序列关系,但这是序列推荐算法的初期探索。
▊ 时间隐向量因子表征方法
第二类方法是时间隐向量因子表征(Latent Factor Representation)方法。
这类方法与传统的协同过滤算法和因子分解机算法一脉相承,通过隐式表征向量来建模用户和物品的特征,并进行一阶运算与二阶运算来预测用户的评分或者点击概率。
Koren在2009年首次提出了针对用户兴趣迁移变化进行建模的协同过滤算法,通过将时间因素引入因子模型,在原始SVD++算法的基础上,通过线性函数与样条函数,综合建模了随时间变化的用户全局兴趣迁移,与特定时间内的兴趣迁移,形成了timeSVD++算法:
式中, 是平均评分; 和 分别是随时间变化的用户偏置与物品偏置; 是物品特征向量,可以认为其不随时间发生显著变化(因为物品与人不同的是,特征不随时间发生明显变化); 则是随时间变化的用户特征; 是包含了用户评分过的物品集合; 则是物品因子特征。
这个公式将用户评分拆解成了不同的部分,同时又考虑到随时间变化的用户特征与偏置项,具有建模时序特征的能力。
该算法由于显式建模了用户兴趣的变化,性能比传统方法获得了大幅提高。
此后,将时间或者用户行为序列加入建模方案的因子表征算法也有相关文献发表。
Tong Chen 等人在一份研究工作中提出,传统的因子分解机一般都忽略了用户交互行为中的序列信息,即使 Rajiv Pasricha 等人在文献中已经建模了序列特征,但仅仅考虑了最新的一个物品的影响,以至于可能导致信息偏差与错误的推荐结果。
Tong Chen在文中提出了序列感知的因子分解机算法,用于预测用户下一时刻评分或点击概率。
如图5所示,用户与物品端的特征被分为静态视角特征与动态视角特征两个部分,文章采用了静态视角特征交互,同时采用了类似于早期因子分解机方法的交叉视角特征交互以及动态视角特征交互,后者基于自注意力机制的神经网络结构实现。

图5 用于时序预测分析的序列感知因式分解机模型
另外,文章还根据用户访问物品的顺序,针对输入的序列进行掩码,以保证用户访问序列在建模时的正确使用顺序,不至于产生信息泄露。
文章在对比实验中取得了远超过传统因子分解机方法的诸多算法,充分证明了利用序列信息进行因子建模用于序列预测的优越性。
▊ 基于马氏链的序列建模方法
第三类是基于马氏链或者马尔可夫链(Markov Chain,MC)的序列建模方法。
马氏链是一种用于建模状态概率分布与状态转移概率的著名方法,它的核心思想是将用户在 时刻的购买或者点击行为建模为在 时刻的购买行为下的条件发生概率:
式中, 表征该时刻下的用户购买行为; 表示所有物品的集合。
在建模了用户购买物品的条件概率之后,用户购买某件物品 之后购买物品 的概率 可以定义为
Steffen在论文中首次提出将基于马氏链的序列建模方法用于推荐系统中用户序列行为的因子分解算法FPMC(Factorizing Personalized Markov Chains)。根据上式的定义,Steffen首先定义了用户 的个性化的条件购买概率:
然后提出了基于Tucker 张量分解的因子分解算法:
式中, 是核心张量; 、 、 分别是用户特征矩阵、前次购买特征矩阵、预测物品特征矩阵, 则是特征的长度,属于模型的超参数。
文章使用预估的转移概率张量 来估计下一时刻用户感兴趣(更有意愿购买)的物品:
由于用户对物品 的兴趣与 无关,所以可以将 、 项移到求和式外。这篇论文首次将马氏链模型用于个性化推荐,并提出了针对马氏链中转移概率矩阵的个性化因子分解,用于降低转移概率矩阵的估算复杂度问题。
但是,FPMC算法难以解决稀疏性问题,以及在很多长尾分布的数据集中表现不佳,即针对特定用户、特定物品的推荐可能存在数据量小、难以被模型准确刻画的问题。
He等人在另一篇文章中提出了一种基于物品相似度建模与高阶马氏链的时序推荐方法Fossil,并做出了两个改进。
首先,使用物品相似度矩阵代替用户对物品的全局偏好的建模,并利用用户历史行为集合 对用户偏好进行了筛选。
同时,该论文引入了高阶马氏链的建模方法,同时考虑了最近 个用户行为对当前预测的影响。
Fossil模型中针对时序用户行为进行建模的部分基本与FPMC保持一致,不过加入了高阶马氏链的用户偏好加权系数,在实验对比中也表现出了相比传统基于马氏链的推荐算法FMC以及个性化马氏链建模方法FPMC更优的预测性能与推荐效果。
▊ 基于深度学习的序列推荐算法
第四类方法是基于深度学习的序列推荐算法。
传统的序列推荐算法主要依赖于矩阵分解或者因子分解的求解范式,即将高维、稀疏的用户-物品历史交互行为矩阵,或者是马氏链中的物品偏好转移概率矩阵分解为低秩的表达,抑或是将用户交互行为构建为独热编码,再使用因子分解机进行特征交互建模,用于用户行为预测与序列推荐。
这类方法虽然在一定程度上已经支持用户行为序列的建模与优化,但是难以建模更长的用户行为序列,同时在复杂特征的建模、特征交互与表征学习上存在固有的局限性。
如图6所示,从2015年开始,随着深度学习方法在推荐系统与用户反馈预估任务中的广泛应用,序列化推荐系统也适应深度学习的浪潮,众多基于深度学习的序列化推荐算法大量出现,最近几年相关论文发表呈现井喷式增长。

图6 基于深度学习的序列推荐算法论文发展趋势
按照深度学习模型的角度来区分,基于深度学习的序列推荐算法主要由自回归的循环神经网络或非自回归的深度学习模型构建,以及通过记忆神经网络来建模用户行为序列。
同时,深度学习方法的提出主要是为了解决用户序列行为建模的难题,例如序列模式的挖掘、超长用户行为序列的建模。
也有一些研究工作介绍了如何将用户端行为序列和物品端访问用户序列进行联合建模,以加强序列推荐的综合效果。
本文节选自《推荐系统:前沿与实践》(李东胜 练建勋 张乐 任侃 卢暾 邬涛 谢幸 著)。
粉丝专享六折,扫描下方二维码抢购!

如果喜欢本文欢迎 在看丨留言丨分享至朋友圈 三连
热文推荐
硅谷来信:快速行动,Facebook、Quora等成功的“神器”!
访谈实录:疫情期间,电商的生意该怎么做?
《迁移学习导论》第2版,升级内容抢先看!
北京站!《学习的学问》首场新书分享会
▼点击阅读原文,了解本书详情~本文分享自 博文视点Broadview 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!