定义:在大数据和人工智能时代,智能推荐系统和技术已经成为电商、资讯、娱乐、教育、旅游和招聘等众多在线服务平台的核心技术、标准配置和重要引擎,用于帮助用户从海量物品中快速地找到他们感兴趣的物品(例如商品、新闻、视频、课程、景点和岗位等),特别是用户不容易发现的长尾物品(tail items),有效地缓解了信息过载(information overload)问题。
Ch-01
推荐系统中的用户与物品:需要说明的是,物品可以是一组物品(例 如旅游套餐推荐等),而用户也可以是一群用户(例如户外集体活动 推荐等)。同时,有些场景中用户也可以作为“物品”,例如社交平台上的好友推荐等,即给用户推荐有相似兴趣的用户。
在推荐系统中,通过对用户行为和其他信息的建模,相关算法和技术能较为有效地挖掘和学习用户的真实偏好,进而为用户提供精准的个性化推荐服务,这一过程可以简单地概括为“行为→偏好→推荐”。
推荐技术和信息检索的区别
智能推荐:行为→偏好→推荐
信息检索:查询串→相关性→匹配
- 行为 vs. 查询串,前者关注用户与系统的互动,后者侧重用户主动查询的内容。
- 偏好 vs. 相关性,前者关注用户的个性化需求,后者侧重查询串与候选文档(或网页)在内容方面的匹配程度。
推荐技术简介
用户行为建模的重要性:在电商、资讯等众多应用场景中,相较于物品的描述、用户的画像和行为的上下文等其他信息,用户行为往往是 与用户的偏好最直接相关的,例如,用户购买商品和阅读新闻等的行为较能体现用户的喜好和兴趣。
用户行为类型
- 显式反馈,例如用户对物品的1~5分的数值评分(numerical rating)行为和喜欢/不喜欢的二值评分(binary rating)行为,以及点赞(like)等单值行为。
- 隐式反馈(又称为单类反馈),例如用户对物品的点击(click)、浏览(browse/view/examination)、收藏(collect/favorite)、加入购物车(add-to-cart)和购买(purchase)等行为。
- 异构反馈,例如同时包含两种或两种以上的显式反馈和/或隐式反馈。
- 序列反馈,例如在隐式反馈中包含时序信息。
其他行为信息
- 多方面行为(multi-aspect behavior),如用户对物品的价格、 质量和售后服务等不同方面的反馈。
- 多粒度行为(multi-granularity behavior),如用户对商品、品牌、 商家和品类等不同粒度的反馈。
- 多模态行为(multi-modal behavior),如文本评论行为和数值反馈行为等。
- 多领域行为(multi-domain behavior),如用户在电商、资讯和社交等不同领域的行为。
面向显式反馈、隐式反馈、异构反馈和序列反馈等不同类型的行为进行建模的技术和算法是较为基础和关键的
推荐问题分类
根据推荐算法的输入和输出,也就是学习用户偏好时可以使用的用户行为或用户反馈等数据的类型以及建模的目标,我们可以得到不同的 推荐问题,包括单行为推荐、多行为推荐、序列推荐、联邦推荐和多源数据推荐等。
单行为推荐
单行为推荐(single-behavior recommendation)是指算法的输入只有一种类型的行为或反馈数据,例如,显式反馈或隐式反馈。接着,根据评分预测(rating prediction)和物品排序(item ranking)等不同的建模目标,可以得到以下三类问题:
- 基于显式反馈的评分预测,又称为协同过滤(collaborative filtering, CF)
- 基于显式反馈的物品排序,又称为协同排序(collaborative ranking, CR)
- 基于隐式反馈的物品排序,又称为单类协同过滤(one-class collaborative filtering, OCCF)
多行为推荐
多行为推荐(multi-behavior recommendation)是指算法的输入至少包含两种不同类型的行为或反馈数据,例如同时包含数值评分和二值评分的异构显式反馈、同时包含购买和浏览的异构单类反馈等。类似地,根据评分预测和物品排序等不同的建模目标,一般有以下两类问题:
- 基于异构反馈的评分预测,通常是指对异构显式反馈数据进行建模,因此又称为异构协同过滤(heterogeneous collaborative filtering, HCF)
- 基于异构反馈的物品排序,通常是指对异构隐式(或单类)反馈数据进行建模,因此又称为异构单类协同过滤(heterogeneous OCCF, HOCCF)
序列推荐
序列推荐(sequential recommendation)是指算法的输入包括用户的反馈数据(例如购买、浏览等)和行为的先后时序信息。一般有以下两类问题:
- 单行为序列推荐,通常是指序列中只有一种类型的单类反馈(例如购买行为),因此又称为序列单类协同过滤(sequential OCCF, SOCCF)
- 多行为序列推荐,通常是指序列中有两种或两种以上不同类型 的单类反馈(例如浏览、加入购物车和购买等行为),因此又称为序 列异构单类协同过滤(sequential HOCCF, SHOCCF)
联邦推荐
联邦推荐(federated recommendation)是指算法在对用户的行为数据进行建模时,还需要保护用户隐私(user privacy)和数据安全(data security)。根据不同的应用场景,以及不同程度的用户隐私和数据安 全的保护要求,可以分为以下三个类别:
-
跨用户联邦推荐(cross-user federated recommendation, CUFR)
-
跨用户联邦推荐通常是指算法的输入是同一组织内不同用户的数据,例如用户的浏览和购买行为,其中重点关注个体用户(或用户群组) 间的隐私,即每个用户(或用户群组)的数据不离开本地(即个体用户或用户群组)且隐私信息不被泄露。
-
跨用户联邦推荐与联邦学习中的横向联邦学习有一定的相似性,前者 的用户对应后者的样本,前者的物品对应后者的特征。
-
-
跨组织联邦推荐(cross-organization federated recommendation, COFR)
- 跨组织联邦推荐通常是指算法的输入包含来自两个或两个以上不同组织的用户的数据,例如来自电商平台的消费行为和来自资讯平台的阅读行为,其中重点关注组织间的数据安全,即每个组织的数据不离开本地(即组织),而不考虑同一组织内的个体用户(或用户群组)间的隐私。
- 当不同组织间用户相同(或重合较多)、物品不同(或重合较少)时, 属于纵向联邦学习范式。
- 当不同组织间用户不同(或重合较少)、物品相同(或重合较多)时, 属于横向联邦学习范式。
- 跨组织联邦推荐通常是指算法的输入包含来自两个或两个以上不同组织的用户的数据,例如来自电商平台的消费行为和来自资讯平台的阅读行为,其中重点关注组织间的数据安全,即每个组织的数据不离开本地(即组织),而不考虑同一组织内的个体用户(或用户群组)间的隐私。
-
双跨联邦推荐(dual-cross federated recommendation, DCFR)
- 双跨联邦推荐同时考虑组织间的数据安全和每个组织内的个体用户(或用户群组)间的隐私。
此外,结合评分预测和物品排序等不同的建模目标,每一类联邦推荐问题又可以进一步细分为面向评分预测的联邦推荐问题和面向物品排 序的联邦推荐问题。
多源数据推荐
多源数据推荐(multi-source recommendation)是指算法可以使用用户行为数据和其他数据,包括物品的类别、内容描述和知识图谱数据,用户的社交关系数据,行为的时间、位置等上下文信息,等等。
为了有效地融合多种数据和知识,在工业界的应用中,通常通过与特征工程(feature engineering)、知识图谱(knowledge graph)、深度 学习(deep learning)、集成学习(ensemble learning)、检索重排、 混合推荐和A/B测试等相结合的方式进行建模,因为这种方式往往具有较好的推荐效果和可扩展性。
说明:多源数据推荐侧重于工程实践,本课程重点关注单行为推荐、 多行为推荐、序列推荐和联邦推荐等问题中关于用户行为建模的技术
我们可以看到研究话题的历史变迁,特别是近几年新出现的话题, 如经济、偏置、跨域和创新交互等。
常用数据集
-
MovieLens电影评分数据集:是推荐算法研究中最常用的数据集之一, 由美国明尼苏达大学(University of Minnesota)的GroupLens研究组收 集和发布,包含了多个在不同时间段内收集到的规模各不相同的子数 据集,例如,最经典的由943个用户对1682部电影的100000条评分记 录组成的MovieLens 100K数据集(1998年4月发布)、由6040个用户对 3952部电影的1000209条评分记录组成的MovieLens 1M数据集(2003 年2月发布)和由71567个用户对10681部电影的10000054条评分记录 组成的MovieLens 10M数据集(2009年1月发布),以及较新的在2019 年12月发布的MovieLens 25M数据集,等等。考虑到推荐系统数据的 稀疏性问题,MovieLens数据集中仅保留了评分记录数不小于20的用 户的数据。并且,除了最基本的(用户ID,物品ID,评分,时间戳)信息外, MovieLens数据集还提供了一些用户的基本信息(性别、年龄和职业) 和物品的描述信息(电影名、电影类型和上映日期)。
-
Netflix电影评分数据集:也是一个推荐算法研究中常用的历史比较悠久的数据集,由电影租赁网站Netflix在2005年底发布,用于Netflix百万美元竞赛,以激励人们设计和开发更好的推荐算法。Netflix数据集 中包含了在1998年10月至2005年12月期间,480189个匿名的Netflix用户对17770部电影的99072112条评分记录(包含评分日期),并且包含了电影的标题和发行年份信息。
- Amazon电商评论数据集:美国加州大学圣迭戈分校(University of California, San Diego)的Julian McAuley教授在其个人主页上发布了他的研究团队收集的一些推荐系统数据集,其中有一个从知名电商平台 Amazon上收集到的关于商品的评论数据集。Amazon数据集包含了 1996年5月至2014年7月期间的约1.4亿条评论数据(每条评论由评分及 文字评论等组成),并且给出了一些商品的描述、类别、价格、品牌和图像特征等信息。为了方便研究,研究人员还将原数据集按照商品 类别分为24个较小的子数据集,例如,图书数据集、电子产品数据集和电子游戏数据集等。
- 天猫电商多行为数据集:天猫(Tmall)电商多行为数据集 是在IJCAI 2015竞赛中发布的,包含了一些天猫用户在“双十一”前6个月的匿名行为日志。一条行为记录对应的信息有:用户ID、物品ID、时间戳和行为类型等等。其中,记录的行为类型包括点击、加入购物车、购买和收藏。Tmall数据集还提供了用户的性别和年龄等信息,以及物品的类别、商家和品牌等信息。
常用验证方法
交叉验证法
对于不考虑序列信息的推荐问题,我们可以使用交叉验证法(cross validation) 来对模型进行训练和验证,具体方法为:对于一个数据集,将它随机分成𝑘 (例如𝑘 = 5)个大小相同的子集,每次取其中一个子集作为测试集,其余 𝑘 − 1个子集共同构成训练集,如此重复𝑘次,最后取在𝑘个不同测试集上的结 果的平均值作为最终的评估结果。
注意,在大多数算法中,我们需要先使用一个较小的验证集来寻找最优的模 型参数。
留一法
留一法(leave-one-out)是交叉验证法的一个特例,即将数据集中的每个样本都分到一个不同的子集中(即k等于数据集的大小),只选取一个样本用作测试,其余数据全部用于训练。在推荐算法研究中,留一法多用于引入序列信息的情况。通常,为了评估模型对用户行为序列的预测能力,我们将每个用户的最后一次行为记录划入测试集,其余记录划入训练集。
注意,在进行正式的模型测试前,为了调节模型参数,可以将每个用户的倒数第二次行为记录划入一个新增加的验证集,然后使用剩下的训练集数据来 训练模型并观察在各参数下的表现。
强泛化效果验证和弱泛化效果验证
在推荐技术的验证中,比较主流的模型效果验证方法包括强泛化效果验证和弱泛化效果验证。
强泛化效果验证
强泛化效果验证先对用户进行划分从而得到训练集用户$𝒰^{tr}$、验证集 用户$𝒰^{vad}$和测试集用户$𝒰^{te}$,使得$𝒰^{tr}∩𝒰^{vad} = ∅$且$𝒰^{tr} ∪ 𝒰^{vad} ∪ 𝒰^{te} = 𝒰$,再将每一位用户的交互数据划分到对应的数据中。显然,验证集用户和测试集用户的交互数据没有出现在训练过程中, 因此模型需要具备较强的泛化能力才能获得较好的推荐效果。
弱泛化效果验证
弱泛化效果验证则将每一位用户的交互数据按照设定的阈值划分到训练集、验证集和测试集中,因此验证集用户和测试集用户在训练过程 中会以训练集用户的角色出现并参与到训练过程中。
显而易见,弱泛化效果验证在验证和测试模型效果时,需要衡量模型在每一个用户上的推荐效果,当用户数目较多时,这种验证方式相较于强泛化效果验证而言效率较低,并且由于验证集用户和测试集用户在训练中已经出现并参与了训练,因此弱泛化验证对模型泛化能力要求相对较低。
深度学习平台简介
TensorFlow和PyTorch分别是由谷歌人工智能团队和Facebook人工智能 研究院开发的两个常用的深度学习框架,两者都对Python提供了很好 的支持,具有丰富的社区资源,非常适合新手入门。
Keras是以TensorFlow或Theano作为后端进一步封装得到的高级API组件, 模块化程度较高,用户交互比较友好。
PaddlePaddle(飞桨)是百度自主研发的产业级深度学习平台,集成了推荐系统、计算机视觉和自然语言处理等领域中常见的模型,并配有详细的文档和教程,用户可以根据自己的需求快速实现相应的深度 学习算法。
需要特别说明的是,智能推荐技术的研发和部署可能会涉及用户隐私和权益、网络秩序和安全等方面的问题,因此,研究者和实践者必须 遵守有关法律法规,用好管好推荐技术,让技术给用户、企业和社会带来益处。
Comments powered by Disqus.