推荐系统综述

本篇文章是对我过去几个月所看文献的总结

目录

  • 什么是推荐系统
  • 经典的推荐方法
  • 当前研究的热点

 

 

一、什么是推荐系统

  随着信息技术的不断发展,如今互联网已经成为了人们日常生活中密不可分的一部分。人们每天都会在互联网上进行各种各样的活动例如看电影、购物、阅读新闻时事等,但随着互联网上信息的越来越多,人们发现越来越难以从互联网上的海量信息中找出最适合自己的那些,例如当你登录Netflix想要看一部电影放松时却不知道哪一部符合自己的口味。推荐系统的出现正是为了解决这种“信息过载”的问题,它会预测用户的需求并推荐给用户其可能会喜欢的内容。

  在推荐系统发展的早期,常见的推荐方法是简单的依据物品的销量、话题的点击量或新闻的阅读量等进行排序,然后选取排在最前面的N个物品组成排行榜并推荐给用户。这种方法具有非常不错的效果,直到今天我们仍能经常在各大网站上看到类似的功能。但另一方面,这种方法也存在着巨大的缺陷,即只有少量的排在前列的物品能够得到推荐,更多的物品则被埋没不为人知,根据营销中的“长尾理论”我们知道细小市场的累计所产生的利润同样是巨大的,因此如何充分利用已有资源(物品),并使得推荐尽可能准确,成为了推荐系统领域研究的主要目标,由此个性化推荐系统应运而生。个性化推荐系统,顾名思义即指根据用户的个性与偏好来产生推荐内容,由于不同用户的个性与偏好存在差异因此对其推荐的内容也会有所不同,这样一方面可以使得更多的物品得到推荐,利于获取更多小的细分市场的利润;另一方面,由于推荐是根据用户的偏好产生的,因此推荐成功的概率也更高。

据报道,推荐系统给亚马逊带来了35%的销售收入,给Netflix带来了高达75%的消费,并且Youtube主页上60%的浏览来自推荐服务。因此,有关推荐系统的研究具有十分深远的意义与巨大的实用价值。

 

二、经典的推荐方法

  个性化推荐系统的核心功能是根据用户的偏好来产生用户喜欢的推荐,因此个性化推荐方法必须具有识别出用户偏好的能力和预测用户对某种物品可能感兴趣程度的能力,然后根据物品感兴趣程度的高低来决定应该推荐的物品。根据实现这两种能力方式的不同,我们可以对所有的个性化推荐方法进行归类,在广泛阅读了该领域内前人的研究后我将它们划分为以下几类:

1、基于内容

系统向用户推荐与他们过去兴趣相似的物品。在这种方法中,系统会事先对物品标记上相应的属性特征,然后提取用户已购买物品的属性特征作为用户的偏好。当需要产生推荐时,系统会计算待推荐物品的属性特征与已购买物品的属性特征之间的相似度,然后取相似度最高的N个物品产生推荐。例如某用户观看了许多部周星驰出演的电影,那么系统将很可能会向其推荐周星驰出演的其他电影。

扫描二维码关注公众号,回复: 5345425 查看本文章

基于内容的推荐是建立在产品的信息上作出推荐的,而不需要依据用户对项目的评价意见,更多地需要用机器学习的方法从关于内容的特征描述的事例中得到用户的兴趣资料。这种方法的优点是能对具有小众口味的用户产生有效的推荐,在一些特定的场景下表现良好。其缺点在于十分依赖于物品所标记的属性特征,对人工标记特征要求较高;此外该方法无法衡量待推荐物品品质的优劣,推荐失败的概率也很高。

 

2、基于人口统计学

在营销中划分细分市场时往往会使用到消费者的年龄、性别等人口统计学信息,因为年龄相似、性别相同的人往往会具有相似的偏好。而基于人口统计学信息进行推荐的原理便是来自于此,在使用该种方法的推荐系统中,系统会依据用户的人口统计学信息划分到特定的群组,然后针对不同的群组产生不同的推荐,例如推荐该组用户近期购买量最多的N种商品。虽然该种方法在传统的营销中使用很多,但是在推荐系统方面的研究一直很少。

 

3、基于知识

  基于知识的推荐系统则根据特定领域的知识来为用户推荐物品,这些知识是关于如何确定物品的哪些特征能够满足用户需求和偏好,以及最终如何确定物品对用户是否有用。在这种类型的推荐系统中,系统会预先定义一个知识库,当用户输入自己的需求(问题描述)后,系统会基于知识库中的知识采用相似性函数来估算用户需求与推荐结果的匹配度,继而选取匹配度高的物品进行推荐。

在最初部署系统的时候,基于知识的系统往往比其他方法推荐效果要好。但是如果这些系统不具备自动学习或者增加知识库中知识的能力,那么其他利用用户日志或协同过滤的系统在未来很大可能会超越它。

 

4、基于社区

  这种类型的推荐系统又称为社会化推荐系统,其推荐的内容依赖于用户的朋友的偏好,因为有研究表明,人们在做出选择时往往会更依赖于朋友的建议,以及朋友之间往往会有着许多相似的兴趣偏好等,因此根据用户朋友的偏好来产生推荐往往能取得不错的效果。如今社交网络日益普及,社会化推荐系统也得到了越来越多的关注,并在工业界得到了广泛的部署和应用。

 

5、基于协同过滤

  协同过滤是目前使用的最为广泛的推荐方法,顾名思义就是指用户可以齐心协力,通过不断的和网站互动,使自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求。

其过滤的原理分为两种,一种是基于用户的协同过滤,是找到与用户A有相同品味的用户B,然后将相似用户B过去喜欢的物品推荐给用户A。

另一种是基于物品的协同过滤,其通过计算物品之间的相似性来代替用户之间的相似性。基于物品的协同过滤所建立的一个基本的假设:”能够引起用户兴趣的物品,必定与其之前评分高的物品相似”。计算已购买物品i和待推荐物品j之间相似性的基本思想是首先将对两个物品共同做出评分的用户提取出来,如果这些用户对两个物品i和j的评分相近,那么两个物品相似度就高,反之则相似度低,之后将相似度高的待推荐物品放入推荐列表。

 

6、混合推荐

  这类推荐系统综合了上述提到的几种技术,正所谓“三个臭皮匠,抵个诸葛亮”,上述的每种推荐方法都有着各自不同的优点与不足,将他们结合起来共同产生推荐能够实现取长补短,提高推荐的性能。事实上工业界中实际使用的推荐方法几乎都是将两种或两种以上的推荐方法混合而得到的,尽管从理论上有很多种混合推荐方法,但在某一具体问题中并不见得每种方法的混合都有效,因此如何将两种或两种以上方法混合产生更有效的推荐也是推荐系统中一个重要的研究方向。

 

三、当前研究的热点

  总的来说推荐系统领域的相关研究主要围绕“发明新的有效推荐方法”和“改进、优化已有的推荐方法使其具有更好的性能或者能够应用于新的场景”两个目标展开,这两个目标共同推进推荐系统的发展。为了了解当前推荐系统领域的研究热点,我对18年10月2-7日在加拿大渥太华召开的推荐系统顶会Recsys上发表的全部32篇论文做了整理和归纳,并结合自己已阅读的一些最新论文,总结出了以下几个研究热点。

1、深度学习

近几年深度学习技术的快速兴起与发展掀起了人工智能的新一波浪潮,因其具备强大的特征提取与表示能力,被广泛地应用在处理语音识别、计算机视觉和自然语言理解等领域的任务上,并取得了巨大的成功。已有不少的研究表明,将深度学习应用于推荐系统中同样可以取得不错的效果,因此将深度学习与推荐系统结合是当前推荐系统研究的热点之一。

深度推荐系统现阶段的应用主要体现在如下三个层面:

(1)提升表征学习能力:利用深度学习技术从复杂的内容数据中学习出有效的隐因子特征表示,从而后续可以很方便地为推荐系统所用。

(2)深度协同过滤:经典的矩阵分解模型可以被描述为一种非常简单的神经网络,我们可以通过拓展其中的结构,引入更多的非线性单元来加强推荐模型的功能。

(3)特征间的深度交互:传统的推荐系统为了尽量提高模型的准确性,往往会由工程师手动将一些特征组合在一起来判断用户的偏好等,这有很大的局限性。神经网络可以自动学习高阶的特征交互模式,弥补人工带来的种种局限。

几个未来可能的研究方向包括:

(1)效率与可拓展性:神经网络的计算量十分庞大,如何将它们更高效地应用在超大规模的推荐平台上,是亟需解决的技术难点。

(2)多样化数据融合;现实网络平台上的数据是多种多样的,关于物品会有语音、图像、文本等数据,而关于用户又有浏览、购买等数据,如何将这些多样的数据融合到一个模型中使它们共同发挥作用产生推荐具有重要意义。

(3)捕捉用户长短期偏好:深度学习中的RNN、LSTM等模型可以捕捉时序信息,故可以用来捕捉用户的长短期偏好,进而结合用户长短期偏好产生推荐。

 

2、强化学习

  继深度学习被应用于推荐后,强化学习也被应用到了推荐任务中。因在诸多现实场景中,例如电子商务或者在线新闻平台,用户与推荐系统之间往往会发生持续密切的交互行为,强化学习中的Reward机制十分适合应用到这种模式,所以基于强化学习的推荐方法中,往往会把推荐系统看做智能体(Agent)、把用户看做环境(Environment),商品的推荐问题可以看做经典的顺序决策问题。Agent每一次排序策略的选择可以看做一次试错(Trial and Error),把用户的反馈、点击成交等作为从环境中获得的奖赏。

  在今后的研究中,如何运用有限的用户交互得到有效的决策模型仍是算法进一步提升的主要方向。此外,提出通用策略的学习机制,以打通算法在不同推荐场景间的壁垒,并增强其在变化场景中的鲁棒性(robustness)也是一个重要的研究方向。

 

3、可解释性

前面所述的研究大都将重心放在提高推荐准确性上,与推荐对象的沟通考虑得不够。近期,学者们开始关注推荐是否能够以用户容易接受的方式,充分抓住用户心理,给出适当的例子与用户沟通,即告诉用户为什么给他推荐这个物品。研究发现,这样的可解释性系统不仅能够提升系统透明度,还能够提高用户对系统的信任和接受程度 、用户选择推荐产品的概率以及用户满意程度。例如当系统向用户推荐一本书却不附加任何解释信息时,可能很难引起用户的兴趣。但如果系统在推荐这本书的时候附加上推荐这本书的原因是“这本书是您的朋友XXX写的”或者“这本书与您近期阅读的《XXX》相似”时,则有更大的概率激起用户的兴趣,提高推荐的转化率。

目前,学者在推荐系统的可解释性上做出的研究主要可以概括为以下三个方面:

(1)利用知识图谱增强算法解释能力。知识图谱作为可读性高的外部知识载体,给提高算法解释能力提供了极大的可能性。

(2)模型无关的可解释推荐框架。目前可解释推荐系统大多是针对特定的推荐模型设计,可拓展性较弱,对于新兴的推荐模型,例如含有深度神经网络的复杂、混合模型的解释能力还不够。

(3)结合生成模型进行对话式推荐。目前的推荐解释往往形式是预先设定、千篇一律的(如预先设定推荐解释是以用户为媒介的),这样尽管也能根据用户心理举出一些例证,但是在沟通方式上还过于呆板。

 

4、推荐结果的多样性和公平性

  如果我们在推荐中,只考虑推荐的准确性,那么方法很容易就陷入一个单一类别的局部最优解。例如某个用户在Netflix上观看了一部喜剧片,如果推荐系统缺乏推荐的多样性,那么接下来向这位用户推荐的内容将会全部都是喜剧片,但很有可能这个用户不仅喜欢喜剧还会喜欢悬疑片,如果只推荐喜剧无疑会带来不好的用户体验与较低的推荐转化率。

至于推荐的公平性,是一个暂时没有具体的衡量标准问题。一个比较典型的例子是前段时间网上的一则新闻,大概内容是某求职网站给企业雇主推荐应聘者时,推荐的结果中全是男性的应聘者,而没有女性的应聘者,这便是推荐不公平的一种体现。我个人理解在某种程度上,推荐的多样性和推荐的公平性追求的结果是一致的, 推荐的结果多样到一定程度,自然也就公平了。

 

5、其他的一些热点

尽管推荐系统从诞生自今已有几十年的历史,前人已在这个领域做了许多相关的研究,但直到现在推荐的方法与效果仍然存在着很大的改进空间,值得做的地方依旧很多。除了上述提到的四个热点以外,将推荐方法应用于解决新的问题、用在新的应用场景也是研究的十分多的一个方向。例如在18年的Recsys大会上,32篇论文中有9篇都用将推荐方法应用于新的应用场景的,比如在王者荣耀这类游戏中给用户推荐英雄、利用推荐系统的数据来帮助产品的设计与开发等。

此外,如何解决传统推荐方法中的数据稀疏与冷启动问题仍然是推荐系统领域经久不衰的人们话题,近年来的许多研究都是运用新的深度学习方法来解决这类旧的问题,许多都取得了不错的效果。

还有一个值得研究的方向是推荐中涉及的用户隐私问题。系统在产生推荐时不可避免地会使用到用户的一些信息,这些信息可能包括用户的浏览记录等历史数据和用户个人的年龄、性别等,这其中很多信息涉及到了用户的隐私,一旦泄露会对用户带来巨大的风险。因此,设计安全的在不同平台间共享用户数据的机制,以及建立面向推荐系统的统一用户表示模型值得我们认真关注。

 

猜你喜欢

转载自blog.csdn.net/qq_35771020/article/details/87161810