本文由携程技术中心投递,ID:ctriptech。本文整理自上海交通大学计算机系教授曹健,在携程个性化推荐与人工智能Meetup上的分享。
推荐系统在我们这个时代扮演了越来越重要的角色。如何利用海量数据,来对用户的行为进行预测,向用户推荐其感兴趣的物品与服务成为各大互联网公司非常关注的问题。
目前学术界与工业界对推荐的研究与应用,主要集中在对单领域的个性化推荐,即根据用户对某一领域(如书籍)的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。领域反映了两组对象相互间的关系,比如用户对书籍的评价数据即可看作一个用户-书籍领域,而这个领域本身可以用一个用户-书籍的评分矩阵表示,其中的第i行j列的值,即用户i对书籍j的评分信息。单领域即表示输入的数据只有一组二元关系,它可以是评分关系(如用户对书籍的评分),购买关系(如用户是否购买书籍,可以用一个0-1评分矩阵表示,其中的1表示该用户购买该书籍,0表示未购买),也可以是用户或物品的特征关系(比如其中一个维度是用户,另一个维度是用户的年龄、性别等)等。推荐系统根据用户对某一领域(如书籍)的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。推荐可以大大节省用户筛选信息的时间,得以从广大信息中获取其感兴趣的,对自己有价值的信息。
现有的单领域个性化推荐大多基于协同过滤推荐方法。协同过滤推荐方法的主要思想是,利用已有用户群过去的行为或意见预测当前用户最可能喜欢哪些东西或者对哪些东西感兴趣。单领域协同过滤推荐在过去取得了很好的效果,包括Amazon公司在内的很多互联网公司都采用了这样的协同过滤推荐。
然而,单领域的个性化推荐存在一些问题和局限,主要表现在以下几个方面:
单领域推荐数据往往过于稀疏(Sparsity),因而难以通过训练样本获得好的推荐效果。以用户购买书籍这个领域为例,对于用户来说,他在某个网站购买的书的数量必然是有限的,绝大多数用户只在网站购买了一两本书籍,而这个网站的所有出售的书籍可能有上百万本。如果仅根据这样的数据进行推荐,效果肯定不会理想。
对某个领域的新用户,难以进行推荐,即冷启动(Cold-start)问题。还以用户购买书籍为例,因为是单领域推荐问题,对在该领域从未购买过书籍的用户来说,系统没有该用户在这个领域的任何信息,因此必然无法对用户进行单领域个性化推荐,只能推荐给用户一些流行热门的商品,无法体现个性化。
所谓的个性化推荐,在单领域往往是“群体分类推荐”。因为用户在单领域所留下的信息有限,比如可能只购买过两本书,而很多用户都可能只是购买了相同的这两本书,对这些购买过相同书的用户,因为已知信息完全相同,所以推荐给他们的肯定也是相同的书籍。从这一角度来看,并不能真正做到个性化推荐。
跨领域推荐是将多个领域数据联合起来,共同作用于目标领域推荐。比如一个系统拥有用户-书籍和用户-电影评价数据。关于这个问题跨领域推荐的做法,是在考虑用户-书籍评分信息的同时,也同时考虑用户-电影评分信息以及其他可获得且可能有益用户-书籍推荐的信息,综合起来对用户进行书籍的推荐。
目前跨领域推荐成为了学术界的一个研究热点,工业界如Facebook也采用了跨领域技术进行推荐。跨领域推荐有如下优势:
因为是跨领域推荐,推荐可利用的数据大大增加,其他领域数据可以更好地为主领域推荐提供帮助。同样以用户购买书籍为例,仅看用户购买书籍,所能利用的数据极其有限。然而,可能还有很多其他的数据可以被利用。比如用户购买电影、音乐等的购买数据,以及用户所浏览过的所有书籍(却未购买)的数据,用户在书籍页面停留的时间数据乃至用户的个人信息数据等等数据,有助于解决主领域的数据稀疏问题。
对主领域的新用户,可以通过其他领域的数据来对用户进行个性化推荐,解决冷启动问题。比如对一个大型网站来说,一个新用户从未购买过书籍,但系统可能拥有该用户的其他信息。比如该用户购买的电影和音乐信息,以及该用户浏览过的书籍商品页面数据。这些数据能帮助系统对该用户进行书籍购买的推荐。
因为系统拥有除主领域外的其他领域的海量数据,可以获取到包括用户生活习惯在内的各种数据。可以说,每个用户都不再类似,而是独一无二的个体。基于这样的现状,即使一个用户只购买过一两件商品,也可以联合其他数据,对用户进行真正的个性化推荐。
在现有的跨领域个性化推荐方法中,多数采用的是基于协同过滤的推荐方法,还有部分采用了迁移学习和基于知识的跨领域推荐方法。下面将介绍现有的各种方法。
2.1 基于协同过滤的跨领域推荐
2.1.1 基于矩阵合并的协同过滤
假设一个跨领域推荐场景1:有一家类似豆瓣的社区门户网站,数据包含该网站用户对于不同电影的评分矩阵,大小为。以及用户对不同书籍的评分矩阵,大小为。用户-电影和用户-书籍评分矩阵即可看作两个领域。因为用户-电影评分很稀疏,所以希望利用已有的多领域信息,对电影推荐提供帮助。
一种最直观的想法是通过把多领域用户-评分矩阵合并为一个用户-评分大矩阵后采用协同过滤进行个性化推荐的方法。以场景1为例,对于该网站的用户-电影和用户-书籍评分信息来说,用户这一维是共通的,即都是该网站的用户。于是可以直接在用户-电影矩阵后拼接用户-书籍矩阵,新的用户-物品矩阵大小为,物品维的长度是电影数与书籍数的和。该跨领域推荐算法相当于把跨领域问题转化为单领域问题。因此原先在单领域上的协同过滤推荐方法都可以使用。
2.1.2基于联合矩阵分解的协同过滤
把跨领域问题转化成单领域问题的方法的优势在于简单易懂,且可直接将现有的单领域协同过滤算法进行移植。当然问题也很明显,这种方法抹平了领域间的差异,用这种方式进行跨领域推荐效果未必会优于直接对单领域进行推荐,甚至可能会降低推荐效果。
于是,Singh等人提出了联合矩阵分解(Collective MF)方法。联合矩阵分解(Collective Matrix Factorization, CMF)是基于单矩阵分解改进的算法。联合矩阵分解,需要分解一系列相互关联的矩阵。它也需要最小化损失函数,这个损失函数的构造是按权重把各相关矩阵的损失函数相加。其中,所有相关矩阵权重和为1,且每一个维只能有一个特征矩阵。CMF在大部分数据集上的效果会比矩阵合并后分解的效果好,但CMF需要训练的参数较多,计算梯度也需要耗费较多的时间。
在CMF的基础上,Jamali等人提出了异构矩阵分解方法(HeteroMF)。这种方法是联合矩阵分解(CMF)算法的拓展。异构矩阵是基于上下文的矩阵分解,即对不同的领域有特定的与该领域相关的参数去调整训练潜在特征,相当于在CMF上增加了领域权重参数。通过引入这些参数,可以提升训练出的特征的准确率。当然,引入这些参数会使得模型变得更复杂,需要消耗更多的时间来训练模型。
2.2 基于迁移学习的跨领域推荐
人类具有知识迁移的能力,当人学会一项本领后,再去学习另外一项相关的本领会触类旁通。迁移学习的目标,是利用其他环境学到的知识,来帮助新环境中的学习任务。由此可知,迁移学习这个概念的提出,主要就是为跨领域推荐服务的。
研究者提出了用基于迁移学习的跨领域推荐来解决主领域数据稀疏性问题。特别是其中引入了“密码书(Codebook)”的概念,即用户-物品领域的评分矩阵是有其特性的,用户和用户,物品和物品可以进行聚类,类与类之间有着较大的差异,而类内部的成员则较为相似。Codebook就是一个聚类后的“浓缩矩阵”,对于场景1,用户-电影评分矩阵是一个的矩阵,用户可以聚成k类,电影可以聚成l类,那么Codebook矩阵就是一个的矩阵。这种Codebook矩阵,对于不同领域来说是可迁移的。用户-书本领域通过聚类得到的Codebook矩阵,可以直接迁移到用户-电影领域,即可认为两个领域的Codebook矩阵是相同的。基于这样的Codebook迁移性,文中提出了如下跨领域的协同过滤方法。
基于迁移学习的跨领域推荐方法有个不能回避的问题,就是Codebook的迁移缺乏直接依据,这种强硬的“迁移”对于某些强相关领域可能有好的效果,但换做一些相关性不是那么强的领域可能就没有效果甚至是反作用了。
2.3 基于知识的跨领域推荐
基于协同过滤以及基于迁移学习的跨领域推荐方法,都是在评分矩阵上做文章,即通过已知的主领域评分矩阵以及辅助领域矩阵,填充主领域评分矩阵中的未知区域,根据评分矩阵的值进行推荐。然而,跨领域推荐还可以应用在另一种场景中。假设场景2如下:有一个音乐导游系统,会在用户到达特定位置时向用户推荐一系列音乐。这是一种基于用户兴趣点(Point of Interest, POI)的音乐推荐,系统把两个不同领域(地理和音乐)联系起来,通过已知的地理信息向用户推荐音乐。与前文不同,此时并没有目标领域(用户-音乐)的偏好信息,是完全利用辅助领域(用户-地理位置信息)进行推荐。在这种场景下,对不同用户,只要他们所在地理位置相同,都给他们推荐相同的音乐。这种不依赖用户需要和偏好基础的推荐,被称为基于知识的推荐(Knowledge-based Recommendation)。在某种程度上,可以看成是一种推理(Inference)技术。而基于知识的跨领域推荐,顾名思义,是通过学习其他领域的知识,进行主领域推荐。
我们团队(上海交通大学CIT实验室)针对跨领域推荐的需要,提出了两种新颖的推荐方法。
3.1 基于张量分解的协同过滤
我们认为在跨领域协同过滤问题中,“领域”的特征需要被明确考虑,所以形成了一个三元关系:< User, Item, Domain >,而矩阵分解模型只能表示两维的关系:< User, Item >。为了学习这样三元关系上的特征,一个直观的方法就是使用张量分解(Tensor Factorization,TF)模型。然而标准的表示三元关系的张量应该是一个立方体,但是每个领域中物品集的大小是不一样的,也就是说每个领域形成的切片大小是不一样的,所以无法形成一个标准的张量。受张量分解模型PARAFAC2启发,我们提出了跨领域三元分解(Cross-Domain Triadic Factorization,CDTF)模型,它是一种非规则的张量分解模型,允许每个领域中物品的数量不相同。
CDTF把每个领域划分为一片,允许每个领域中的物品都有自己独立的特征表示,用户潜在特征矩阵用来表示从多个领域上学习来的共同偏好,领域特征矩阵用来表示每个领域各自的特性。 因此,每一个评分可以视作为< User, Item, Domain > 的潜在特征共同作用的结果。此外,用户特征和领域特征的相遇作用,生成了领域特定的用户特征:,其中,是用户的特征,是领域的特征,是用户在领域所表现出的领域特定的用户特征。因为各个领域的特征总是可以从其他用户在这个领域的反馈数据中学习得出,所以这样的三元关系张量模型总是可以得到用户在特定领域的偏好特征,从而避免了盲目迁移的问题。从辅助领域传递多少信息到目标领域对结果有很大的影响,CDTF使用一组权重变量来调节每个辅助领域对目标领域的影响。我们使用遗传算法设计了一个权重搜寻算法,以此自动搜寻最优化的权重分配。
在真实数据集上进行的一系列实验证明了CDTF的性能要远好于其他比较的主流方法。
3.2基于双线性多水平模型的跨领域推荐系统
许多物品在上市之前,已经通过各种手段进行了宣传,如:电视广告、在线社交媒体、大众口碑等。也就是说,在推荐系统中每个用户对一个物品的选择和评价都或多或少地受到外部信息的影响,所以我们提出了多水平模型来建模复合的信息,以更好的表示出这种多层次的特征。
让我们结合图1所示的一个例子来更直观地阐述这个假设。首先,我们不需要任何用户的反馈信息,仅根据市场因素我们就能估计一个物品的大致的评分(记作);比如,我们在iPhone 7上市之前,就能大致预测它在市场中的评分。此外,用户所处的群体也对用户的评分有着直接的影响;比如,时尚圈的人士可能给某个奢侈品比市场评分更高的分数(正偏倚)而IT工程师则可能给这个奢侈品较低的分数(负偏倚)。对于这样的群体偏倚,我们记作,它反应了整个群体的偏好。因为每个人的背景、收入、性格都不同,所以一个群体中的用户也存在着一定差异,对这些由个人差异引起的评分偏倚,我们记作。结合上述这些因素的影响,可以把一个用户在一个物品上的评分表示为,也就是说这个评分是有多层次的因素综合决定的,而不仅仅是个人因素。基于这样的多层次因素的假设,在处理冷启动用户时,我们仍然可以用高层因素产生的评分去产生一个大概的预测,即使用户的个人数据不存在。由此可见,我们所提出的基于多层次因素假设的模型要比传统的仅基于用户个人因素的模型更为健壮。
为了建模上述的多层次因素,我们引入了多水平模型。进一步,我们建立的基于潜在因素的多水平模型中,涉及到了多层次的用户因素和物品因素,并使用类似于矩阵分解模型的双线性形式来建模用户因素和物品因素的相互作用,因此称之为双线性多水平分析(Bi-Linear Multilevel Analysis,BLMA)模型。BLMA能对跨领域协同过滤中的多层次因素进行建模,以此来解决冷启动和盲目迁移等问题。同时,我们设计了一个并行的Gibbs采样算法来更为高效地学习参数。通过在真实数据集上进行的一系列实验证明了BLMA的性能要好于其他进行比较的主流方法。
事实上,领域概念可以表示成任何可以区分的场景。例如就用户购买图书而言,五年前你的书籍购买和目前你的书籍购买就属于不同的领域,你在京东上买书和在当当上买书也是不同的领域,你买财经类的书和买科技类的书也是不同的领域。因此,跨领域推荐具有广泛的应用场景。
目前,推荐应用的场景越来越广泛,如网页排名(Google)、新闻内容展示(Yahoo)、垃圾邮件过滤(Google)、在线约会(OK Cupid)、个性化广告显示(Yahoo)等。显然,推荐系统已经成为了信息检索、数据挖掘、社会网络分析、计算广告学等众多领域的核心技术之一。随着移动穿戴设备、智能家居的发展,推荐系统也必将融入其中,与医疗、营养、食品等领域相结合,提供诸如实时健康建议、疾病预处理、智能营养配餐等与人们生活休戚相关的关键服务。而在这些场合中,跨领域推荐的需求将变得更为显著。
作者:曹健、欧辉思和胡亮(主要内容取材于曹健指导的硕士生欧辉思和博士生胡亮的学位论文,并经过了曹健的修改)。欢迎有兴趣探讨和应用跨领域推荐算法的单位和研究者和作者联系,曹健[email protected]。
更多精彩,欢迎关注CSDN大数据公众号!