【推荐系统】一文梳理序列化推荐算法模型进展
| 作者:朱勇椿
| 单位:中国科学院大学
| 研究方向:跨域推荐、多任务学习
在真实场景的推荐系统中,通常会使用所有数据来训练推荐模型,学到的user embedding可以表示用户的兴趣偏好。但是这样的用户表示可能会遗漏用户的序列行为信息,而序列推荐则旨在显式地建模用户的序列行为,提升推荐系统的效果。本期为大家分享一些序列推荐算法。
文本将序列推荐分为以下几个方面:
标准序列推荐
长短期序列推荐
多兴趣表示的序列推荐
多行为序列推荐
其他序列推荐
一、标准序列推荐
标准序列推荐指通过单行为序列挖掘用户表示的推荐算法。标准序列推荐算法也非常直接,一些常见的序列建模的方法,比如Pooling, RNN, CNN, Memory Network, Attention, Transformer等等。
1.1 Pooling
将用户交互过的item的embedding,取个均值,作为序列特征加入推荐模型,比如google的推荐模型[1]。这种方法简单有效,也是业界最常见的使用序列特征的手段。
1.2 RNN-based
RNN是一种进行序列建模的非常使用的方法,广泛用于各种序列建模,比如文本、语音等等。GRU4Rec[2]将RNN引入了session-based推荐系统,将一个session内的交互作为序列历史,进行序列建模。
1.3 CNN-based
TextCNN将CNN引入了序列建模,Caser[3]将CNN引入了序列推荐。Caser中指出现在的Markov chain models只能建模point-level sequential patterns,不能建模union-level patterns,而CNN可以很好的解决这个问题。
1.4 Attention-based
上述方法没有考虑用户序列行为中哪些交互是比较重要的,注意力机制(attention)是一个很好的解决方法。SASRec[4]提出了一种基于自注意力的序列推荐方法。
阿里提出了一种深度注意力网络DIN用到推荐广告[5],在业界有着广泛的应用。
1.5 Memory-based
上述的方法只对序列交互进行了建模,而没有存储下来,当序列很长时可能会遗忘一些过去的交互,RUM[6]引入了用户记忆模块,来存储序列交互的信息。
1.6 Transformer-based
Transformer在NLP任务上取得了显著的提升,基于Transformer提出了Bert等大型预训练模型。Bert4Rec[7]将这类结构思路引入了推荐系统。
二、长短期序列推荐
用户可能拥有大量交互历史,长期交互和短期交互对用户当前兴趣可能有着不同的影响,因此有必要区分用户的长短期行为。SHAN将用户行为分为长期的和短期的,使用层次注意力网络进行建模。
三、多兴趣表示的序列推荐
上述的方法通常是将用户行为编码为一个表示,但是用户的兴趣偏好通常是多个方面的,因此有方法将用户的序列行为编码为多个兴趣表示向量[9]。
四、多行为序列推荐
用户通常有多种不同的行为序列,比如点击、分享、购买等等。因此对多行为序列建模来抓获用户兴趣偏好也是非常有必要的[10]。
五、其他序列推荐
现在还有一些其他的序列推荐方法,比如用对比学习来做序列推荐任务[11]。
另外还有一些和序列推荐很接近的任务,比如next basket[12]。
六、总结
显式地建模用户的历史交互行为对提升推荐的效果有很大的作用,因此需要使用一种高效的模块进行序列建模,此外还应该考虑长短期序列、多行为序列、多兴趣表示等多个角度的序列建模。当然在某些场景序列特征可能作用不大,可以先用pooling简单试试序列特征的效果。
七、参考文献
[1] Deep Neural Networks for YouTube Recommendations. Recsys2016.
[2] Session-based Recommendations with Recurrent Neural Networks. ICLR2016.
[3] Personalized Top-N Sequential Recommendation via Convolutional Sequence Embedding. WSDM2018.
[4] Self-Attentive Sequential Recommendation. ICDM2018.
[5] Deep Interest Network for Click-Through Rate Prediction. KDD2018.
[6] Sequential Recommendation with User Memory Networks. WSDM2018.
[7] BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer. CIKM2019.
[8] Sequential Recommender System based on Hierarchical Attention Networks. IJCAI2018.
[9] Controllable Multi-Interest Framework for Recommendation. KDD2020.
[10] Incorporating User Micro-behaviors and Item Knowledge into Multi-task Learning for Session-based Recommendation. SIGIR2021.
[11] Disentangled Self-Supervision in Sequential Recommenders. KDD2020.
[12] Factorizing Personalized Markov Chains for Next-Basket Recommendation. WWW2010.
更多论文,欢迎访问https://github.com/hongleizhang/RSPapers
往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑黄海广老师《机器学习课程》课件合集
本站qq群851320808,加入微信群请扫码:
【推荐系统】一文梳理序列化推荐算法模型进展相关推荐
- 一文梳理序列化推荐算法模型进展
作者:朱勇椿 | 单位:中国科学院大学 | 研究方向:跨域推荐.多任务学习 在真实场景的推荐系统中,通常会使用所有数据来训练推荐模型,学到的user embedding可以表示用户的兴趣偏好.但是这样 ...
- 推荐算法炼丹笔记:序列化推荐算法SASRec
作者:一元 ,公众号:炼丹笔记 背景 本文介绍一篇较早使用Self-Attention进行序列化推荐的文章,也是目前大多数序列化推荐算法非常重要的Baseline,最典型的场景可以参见标题,该篇文章的 ...
- 推荐系统(十一) 2021-2022年工业界推荐算法实践经验汇总
对2021-2022年,工业界推荐算法实践经验进行了梳理,主要以下几个维度进行归纳: 推荐系统(十一) 2021-2022年工业界推荐算法实践经验汇总对2021-2022年,工业界推荐算法实践经验进行 ...
- 自己动手写一个推荐系统,推荐系统小结,推荐系统:总体介绍、推荐算法、性能比较, 漫谈“推荐系统”, 浅谈矩阵分解在推荐系统中的应用...
自己动手写一个推荐系统 废话: 最近朋友在学习推荐系统相关,说是实现完整的推荐系统,于是我们三不之一会有一些讨论和推导,想想索性整理出来. 在文中主要以工程中做推荐系统的流程着手,穿插一些经验之谈,并 ...
- 金融领域下的数据挖掘算法应用:智能推荐算法模型
摩天,用友旗下社会化的企业数智化学习认证社区,提供数智营销.智慧医疗.数智金融.智能制造.项目管理等精品课程,数智化人才上摩天!https://mot.yonyou.com/ 你将会学到: 智能推荐系 ...
- 新闻推荐系统:基于内容的推荐算法——TFIDF、衰减机制(github java代码)
转自: 因为开发了一个新闻推荐系统的模块,在推荐算法这一块涉及到了基于内容的推荐算法(Content-Based Recommendation),于是借此机会,基于自己看了网上各种资料后对该分类方法的 ...
- 笔记:基于标签的推荐系统、基于图的推荐算法、PersonalRank
笔记:基于标签的推荐系统.基于图的推荐算法.PersonalRank 发表于11个月前(2015-05-26 19:15) 阅读(44) | 评论(0) 2人收藏此文章, 我要收藏 赞0 原文:h ...
- 在线音乐推荐网 Python+Django+Mysql开发技术 基于用户、物品的协同过滤推荐算法 个性化音乐推荐系统 音乐网站+协同过滤推荐算法 机器学习、分布式大数据、人工智能开发
在线音乐推荐网 Python+Django+Mysql开发技术 基于用户.物品的协同过滤推荐算法 个性化音乐推荐系统 音乐网站+协同过滤推荐算法 机器学习.分布式大数据.人工智能开发 MusicRec ...
- 推荐算法炼丹笔记:阿里序列化推荐算法ComiRec
作者:十方 公众号:炼丹笔记 Controllable Multi-Interest Framework for Recommendation 1.ComiRec与众不同之处 该论文是阿里在2020年 ...
最新文章
- Java集合干货——ArrayList源码分析
- 天的各种书法_寒假书法集训|小考拉硬笔书法班招募中
- python 切片 单冒号的作用[:](批量赋值最小数组单元)
- arthas jvm相关命令使用示例:jvm、sysprop
- datatables.js 简单使用--多选框和服务器端分页
- Cplex入门教程(二)
- mysql 分析函数 平均_mysql平均函数
- 三菱FX2N:PC与PLC建立通讯的几种方式(SC-09通讯电缆+FX2N-485-BD通讯板)
- 【统计知识总结系列01】回归分析、抽样技术、方差分析以及非参数统计中的方差分解
- cs5计算机丢失msvcp71,win7系统msvcp71.dll丢失怎么修复_win7计算机丢失msvcp120dll修复方法-win7之家...
- linux系统盘下垃圾文件,Linux版一键清理系统垃圾文件
- 87个电影调色PR预设包
- WCF学习(二):契约
- 这就是2020:全球云计算十一大年度话题盘点
- CorelDRAW X7导出pdf发现部分有白边如何处理
- 从二维向量跟虚数的区别到欧拉公式,复指数函数
- (转)Limboy:自学 iOS 开发的一些经验
- php针探,phpstudy探针是什么
- 黑鲨3能升级鸿蒙5g吗,黑鲨3Pro系统好用,红魔5G刷新率高!
- 计算机人离开后保护,设置屏幕保护密码防止他人在自己离开时偷窥