推荐系统发展综述

匿名 (未验证) 提交于 2019-12-03 00:37:01

1. 引言

随着信息技术和互联网技术的发展,人们从信息匮乏时代步入了信息过载时代,在这种时代背景下,人们越来越难从大量的信息中找到自身感兴趣的信息,信息也越来越难展示给可能对它感兴趣的用户,而推荐系统的任务就是连接用户和信息,创造价值。

设想用户想买一本《Recommender Systems An Introduction》,用户只需要走进一家书店,寻找这本书即可。通过互联网,用户可以打开当当,在搜索框中输入书名,然后就可以找到用户想要购买的书籍,这两种方式都需要用户有明确的目的,如购买《Recommender Systems An Introduction》或某一类别的书籍。

但是,当用户没有明确目标时,比如寻找感兴趣的音乐,用户只能通过一些预先设定的类别或标签去寻找他可能感兴趣的音乐,但面对如此之多音乐,用户很难在短时间内找出真正感兴趣的音乐。这时就需要一个自动化的工具,来分析用户曾经收听的音乐,进而寻找出用户可能感兴趣的音乐推荐给用户,这就是个性化推荐系统的工作。

作为一种信息过滤系统,推荐系统具有以下两个最显著的特性:

(1)主动化。从用户角度考虑,门户网站和搜索引擎都是解决信息过载的有效方式,但它们都需要用户提供明确需求,当用户无法准确描述自己的需求时,这两种方式就无法为用户提供精确的服务了。而推荐系统不需要用户提供明确的需求,而是通过分析用户和物品的数据,对用户和物品进行建模,从而主动为用户推荐他们感兴趣的信息。

(2)个性化。推荐系统能够更好的发掘长尾信息,即将冷门物品推荐给用户。热门物品通常代表绝大多数用户的兴趣,而冷门物品往往代表一小部分用户的个性化需求,在电商平台火热的时代,由冷门物品带来的营业额甚至超过热门物品,发掘长尾信息是推荐系统的重要研究方向。

目前,推荐系统已广泛应用于诸多领域,其中最典型的便是电子商务领域。同时,伴随着机器学习、深度学习的发展,工业界和学术界对推荐系统的研究热情更加高涨,形成了一门独立的学科。

2. 发展历史

推荐系统是互联网时代的一种信息检索工具,自上世纪90年代起,人们便认识到了推荐系统的价值,经过了二十多年的积累和沉淀,推荐系统逐渐成为一门独立的学科在学术研究和业界应用中都取得了很多成果。

1994 年明尼苏达大学GroupLens研究组推出第一个自动化推荐系统 GroupLens[1]。提出了将协同过滤作为推荐系统的重要技术,这也是最早的自动化协同过滤推荐系统之一。

1997 年 Resnick 等人[2]首次提出推荐系统(recommendersystem,RS)一词,自此,推荐系统一词被广泛引用,并且推荐系统开始成为一个重要的研究领域。

1998年亚马逊(Amazon.com)上线了基于物品的协同过滤算法,将推荐系统推向服务千万级用户和处理百万级商品的规模,并能产生质量良好的推荐。

2003年亚马逊的Linden等人发表论文,公布了基于物品的协同过滤算法[3],据统计推荐系统的贡献率在20%~30%之间[4]

2005年Adomavicius 等人的综述论文[5] 将推荐系统分为3个主要类别,即基于内容的推荐、基于协同过滤的推荐和混合推荐的方法,并提出了未来可能的主要研究方向。

2006 年10月,北美在线视频服务提供商 Netflix 宣布了一项竞赛,任何人只要能够将它现有电影推荐算法 Cinematch 的预测准确度提高10%,就能获得100万美元的奖金。该比赛在学术界和工业界引起了较大的关注,参赛者提出了若干推荐算法,提高推荐准确度,极大地推动了推荐系统的发展。

2007年第一届ACM 推荐系统大会在美国举行,到2017年已经是第11届。这是推荐系统领域的顶级会议,提供了一个重要的国际论坛来展示推荐系统在不同领域的最近研究成果、系统和方法。

2016年,YouTube发表论文[6],将深度神经网络应用推荐系统中,实现了从大规模可选的推荐内容中找到最有可能的推荐结果。

近年来,推荐系统被广泛的应用于电子商务推荐、个性化广告推荐、新闻推荐等诸多领域,如人们经常使用的淘宝、今日头条、豆瓣影评等产品。

3. 研究现状

经过二十多年的积累和沉淀,推荐系统成功应用到了诸多领域,RecSys会议上最常提及的应用落地场景为:在线视频、社交网络、在线音乐、电子商务、互联网广告等,这些领域是推荐系统大展身手的舞台,也是近年来业界研究和应用推荐系统的重要实验场景。

伴随着推荐系统的发展,人们不仅仅满足于分析用户的历史行为对用户进行建模,转而研究混合推荐模型,致力于通过不同的推荐方法来解决冷启动、数据极度稀疏等问题,国内知名新闻客户端今日头条采用了内容分析、用户标签、评估分析等方法打造了拥有上亿用户的推荐引擎。

移动互联网的崛起为推荐系统提供了更多的数据,如移动电商数据[6]、移动社交数据、地理数据[7]等,成为了社交推荐的新的尝试。

随着推荐系统的成功应用,人们越来越多的关注推荐系统的效果评估和算法的健壮性、安全性等问题。2015年,Alan Said 等人在RecSys会议上发表论[8],阐述了一种清晰明了的推荐结果评价方式,同年,FrankHopfgartner等人发表论文[9],讨论了基于流式数据的离线评价方式和对照试验,掀起了推荐算法评估的研究热潮。

近年来,机器学习和深度学习等领域的发展,为推荐系统提供了方法指导。RecSys会议自2016年起开始举办定期的推荐系统深度学习研讨会,旨在促进研究和鼓励基于深度学习的推荐系统的应用。

2017年AlexandrosKaratzoglou等人在论文[10]中介绍了深度学习在推荐系统中的应用,描述了基于深度学习的内容推荐和协同过滤推荐方法,深度学习成为当前推荐系统研究的热点。

推荐系统在为用户推荐物品时通常有两种方式:

4.1 评分预测

此方法一般通过学习用户对物品的历史评分,预测用户可能会为他没有进行评分的物品打多少分,通常用于在线视频、音乐等服务的推荐。

评分预测的效果评估一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算。对于测试集T中的一个用户u和物品i,令ruiui是推荐系统给出的预测评分,则RMSE定义为:

MAE定义为:

4.2 TopN推荐

此方法一般不考虑评分,而是为用户提供一个个性化推荐列表,通过预测用户对物品的兴趣度对列表进行排序,选取其中前N个物品推荐给用户,通常用于电子商务、社交网络、互联网广告推荐。

TopN推荐一般通过准确率(precision)、召回率(recall)和F1值(平衡分数)度量。令R(u)是为用户推荐的物品列表,T(u)是用户在测试集上的行为列表。

召回率定义为:

准确率定义为:

F1值定义为:

5. 推荐算法

根据推荐系统使用数据的不同,推荐算法可分为基于用户行为推荐、基于内容推荐、基于社交网络推荐等。

主流的推荐系统算法可以分为协同过滤推荐(Collaborative Filtering Recommendation)、基于内容推荐(Content-basedRecommendation)和混合推荐三种。

5.1 基于用户行为推荐

用户行为蕴藏着很多模式,著名的“啤酒和尿布”的故事就是用户行为模式的良好体现。基于用户行为推荐的主要思想是利用已有用户的历史行为数据(显式反馈或隐式反馈),预测当前用户可能感兴趣的物品,其中显式反馈主要为用户评分,隐式反馈主要包括浏览、搜索等。

基于用户行为的推荐算法也称为协同过滤算法(Collaborative Filtering Recommendation),是推荐领域应用最广泛的算法,该算法不需要预先获得用户或物品的特征数据,仅依赖于用户的历史行为数据对用户进行建模,从而为用户进行推荐。协同过滤算法主要包括基于用户的协同过滤(User-Based CF)、基于物品的协同过滤(Item-Based CF)、隐语义模型(Latent Factor Model)等。其中基于用户和物品的协同过滤是通过统计学方法对数据进行分析的,因此也称为基于内存的协同过滤或基于邻域的协同过滤;隐语义模型是采用机器学习等算法,通过学习数据得出模型,然后根据模型进行预测和推荐,是基于模型的协同过滤。

基于用户的协同过滤(下文简称UserCF)的基本思想为:给用户推荐和他兴趣相似的用户感兴趣的物品。当需要为一个用户A(下文称A)进行推荐时,首先,找到和A兴趣相似的用户集合(用U表示),然后,把集合U中用户感兴趣而A没有听说过(未进行过操作)的物品推荐给A。算法分为两个步骤:首先,计算用户之间的相似度,选取最相似的N个用户,然后,根据相似度计算用户评分。

(1)用户相似度

用户相似度计算基于用户的协同过滤算法的重要内容,主要可以通过余弦相似度、杰卡德系数等方式进行计算。

假设:给定用户u和v,令N(u)表示用户u有过正反馈的物品集合,令N(v)为用户v有过正反馈的物品集合,则用户u和v之间的相似度可以通过如下方式计算:

余弦相似度:

杰卡德系数:

(2)用户评分

得到用户相似度后,可以根据如下公式计算用户评分:

其中r(u, i)代表用户u对物品i的评分,S(u)为与用户u最相似的N个用户,N(i)为对物品i进行过操作的用户集合, 为用户u与用户v的相似度, 为用户v对物品i的评分。

UserCF的推荐结果反映了用户所在的一个兴趣群体中的热门物品,更加社会化但缺乏个性化, 能够满足物品的时效性,在新闻推荐领域能够发挥很大的作用。用户的兴趣在一段时间内是相对固定的,因此用户相似度矩阵不会实时进行更新,存在新用户的冷启动问题。

基于物品的协同过滤(下文简称ItemCF)是目前应用最为广泛的算法,该算法的基本思想为:给用户推荐和他们以前喜欢的物品相似的物品,这里所说的相似并非从物品的内容角度出发,而是基于一种假设:喜欢物品A的用户大多也喜欢物品B代表着物品A和物品B相似。基于物品的协同过滤算法能够为推荐结果做出合理的解释,比如电子商务网站中的“购买该物品的用户还购买了…”。ItemCF的计算步骤和UserCF大致相同:首先,计算物品相似度,选出最相似的N个物品,然后根据相似度计算用户评分。

(1)物品相似度

假设:N(i)为喜欢物品i的用户结合,N(j)为喜欢物品j的用户集合,则物品相似度计算公式可以定义为:

上述公式将物品i和物品j的相似度定义为:同时喜欢物品i、j的用户数占只喜欢物品i用户数的比例,但如果物品j十分热门,大部分用户都很喜欢,那么就会造成所有物品都和j有较高的相似度,因此可以对计算公式进行如下改进:

改进后的相似度计算公式惩罚了物品j的热门度,在一定程度上减少了热门物品为相似度带来的影响。

(2)用户评分

得到物品相似度后,可以根据如下公式计算用户评分:

其中r(u, i)代表用户u对物品i的评分,S(i)代表和物品i最相似的N个物品,N(u)为用户u曾经感兴趣的物品集合, 为物品i和物品j的相似度, 为用户u对物品i的评分。

ItemCF的推荐结果更加个性化,反映了用户的个人兴趣,对挖掘长尾物品有很大帮助,被广泛应用于电子商务系统。在物品数较多时,物品相似度计算效率较差,因此通常以一定的时间间隔离线进行计算,然后将物品相似度数据缓存在内存中,这样一来,便可以根据用户的新行为实时向用户做出推荐。ItemCF同样存在新用户冷启动问题。

隐语义模型方法是目前应用最为广泛的协同过滤算法之一,在显式反馈(如评分)推荐系统中,能够达到很好的精度。它的基本思想是通过机器学习方法从用户-物品评分矩阵中分解为两个低阶矩阵,表示对用户兴趣和物品的隐含分类特征,通过隐含特征预测用户评分。训练过程中通常采用随机梯度下降(SGD)算法最小化损失函数,最后通过模型预测用户评分。矩阵分解(Matrix Factorization)是隐语义模型最成功的一种实现,假设训练数据为M个用户对N个物品的评分矩阵Rm,n,早期矩阵分解算法BasicSvd步骤如下:

(1)给定假设函数

其中k表示矩阵分解的隐含特征数,p和q是两个矩阵,作为模型的参数,分别表示用户、物品与k个隐含特征之间的关系。

(2)最小化损失函数

其中u为用户,i为物品,R为训练数据评分矩阵,H为预测评分矩阵,通过随机梯度下降最小化cost函数,得到矩阵p和q。在最小化的过程中,还需要添加正则项防止过度拟合。

(3)通过用户、物品和隐含特征的关系矩阵p、q预测用户评分。

在算法的演进过程中,还出现了FunkSVD[11]、SVD++等矩阵分解算法,它们在隐含特征的基础上考虑了用户评分习惯、历史访问等多种因素,在一些场景中取得了更为精确的结果。

矩阵分解算法采用机器学习的最优化方法训练模型,计算的空间复杂度较小,在评分预测推荐中的精度较高,能够自动挖掘用户和物品的特征,有非常好的扩展性,可以灵活地考虑额外因素。矩阵分解的训练过程需要扫描整个评分矩阵,在用户量和物品数很大的情况下比较费时,但可以离线进行训练,在线进行评分预测,达到推荐的实时性。

5.2 基于内容推荐

基于内容推荐的基本思想是为用户推荐与他感兴趣的内容相似的物品,比如用户喜欢励志类电影,那么系统会直接为他推荐《阿甘正传》这部电影,这个过程综合考虑了用户兴趣和电影内容,因此不需要提供用户的历史行为数据,这能够很好地解决新用户的冷启动问题。基于内容推荐的关键问题是对用户兴趣特征和物品特征进行建模,主要方法由向量空间模型、线性分类、线性回归等。

基于内容推荐需要预先提供用户和物品的特征数据,比如电影推荐系统,需要提供用户感兴趣的电影类别、演员、导演等数据作为用户特征,还需要提供电影的内容属性、演员、导演、时长等数据作为电影的特征,这些需要进行预处理的数据在实际应用中往往有很大的困难,尤其是多媒体数据(视频、音频、图像等),在预处理过程中很难对物品的内容进行准确的分类和描述,且在数据量很大的情况下,预处理效率会很低下。针对以上不足,[25]提出了基于标签的推荐方法,可以由专家或用户为物品打标签,实现对物品的分类。

基于内容产生的推荐往往和用户已经处理的物品具有很大的相似度,不利于用户在推荐系统中获得惊喜,这也是推荐系统的一个重要研究方向。

5.3 混合推荐

推荐算法虽然都可以为用户进行推荐,但每一种算法在应用中都有不同的效果。UserCF的推荐结果能够很好的在广泛的兴趣范围中推荐出热门的物品,但却缺少个性化;ItemCF能够在用户个人的兴趣领域发掘出长尾物品,但却缺乏多样性;基于内容推荐依赖于用户特征和物品特征,但能够很好的解决用户行为数据稀疏和新用户的冷启动问题;矩阵分解能够自动挖掘用户特征和物品特征,但却缺乏对推荐结果的解释,因此,每种推荐方法都各有利弊,相辅相成。

实际应用的推荐系统通常都会使用多种推荐算法,比如使用基于内容或标签的推荐算法来解决新用户的冷启动问题和行为数据稀疏问题,在拥有了一定的用户行为数据后,根据业务场景的需要综合使用UserCF、ItemCF、矩阵分解或其他推荐算法进行离线计算和模型训练,通过采集用户的社交网络数据、时间相关数据、地理数据等综合考虑进行推荐,保证推荐引擎的个性化,提高推荐引擎的健壮性、实时性、多样性和新颖性。让推荐系统更好地为用户服务。

6. 总结和展望

本文首先回顾了推荐系统发展的历史,并分析了当前推荐系统的研究现状,其次阐述了主要的推荐方式和推荐结果的评估指标,最后分析了主流的推荐算法以及它们各自的优缺点。

推荐系统的发展一方面精确的匹配了用户与信息,降低了人们在信息过载时代获取信息的成本,但由推荐系统主导的内容分发,如新闻推荐等,也为用户带来了消极影响。2017年9月19日,人民日报点名批评国内知名内容分发平台今日头条,强调别以技术之名糊弄网民和群众,可见推荐系统的发展不仅需要满足用户多元化、个性化的需求,而且需要对信息进行严格的监管和过滤,提高推荐系统的健壮性。近年来,RecSys会议上越来越多地收录了关于用户隐私、推荐引擎健壮性、信息过滤等方面的论文,这是未来推荐系统发展的一个重要研究方向。

目前,深度神经网络发展迅速,为推荐系统提供了新的特征提取、排序方法,越来越多的推荐引擎将深度神经网络与传统的推荐算法进行了结合,用于解决数据稀疏、推荐排序等问题,深度神经网络和推荐系统的结合将是推荐系统未来的主要研究方向。

综上所述,推荐系统是一个庞大的信息系统,它不仅仅只依赖于推荐引擎的工作,而且依赖于业务系统、日志系统等诸多方面,并结合了网络安全、数据挖掘等多个研究领域,能够为企业和用户带来价值,是一个值得深入研究的领域。

参考文献

[1] Resnick P,Iacovou N, Suchak M, et al. GroupLens: an open architecture for collaborativefiltering of netnews[C] Proceedings of the 1994 ACM Conference on ComputerSupported Cooperative Work, Oct 22-26, 1994. New York, NY, USA: ACM, 1994:175-186.

[2] Resnick P, Varian H R. Recommender systems[J].Communications of the ACM, 1997, 40(3): 56-58.

[4] Linden G, Smith B, York J. Amazon.comrecommendations: item-to-item collaborative filtering[J]. IEEE Internet Computing,2003, 7(1): 76-80.

[5] Adomavicius G, Tuzhilin A. Toward the nextgeneration of recommender systems: a survey of the state-of-the-art and possibleextensions[J]. IEEE Transactions on Knowledge and Data Engineering, 2005,17(6): 734-749.

[6] Cremonesi P, Tripodi A, Turrin R. Cross-DomainRecommender Systems.[C] IEEE, International Conference on Data MiningWorkshops. IEEE, 2012:496-503.

[7] Huiji Gao, Jiliang Tang, Huan Liu. Personalizedlocation recommendation on location-based social networks[J]. 2014:399-400.

[8] Said A. Replicable Evaluation of RecommenderSystems[C] ACM Conference on Recommender Systems. ACM, 2015:363-364.

[9] Hopfgartner F, Kille B, Heintz T, et al.Real-time Recommendation of Streamed Data[C] ACM Conference on RecommenderSystems. ACM, 2015:361-362.

[10] Karatzoglou A, Hidasi B. Deep Learning forRecommender Systems[C] the Eleventh ACM Conference. ACM, 2017:396-397.

[11] Simon Funk. Funk-SVD [EB/OL]. http://sifter.org/~simon/journal/20061211.html,2006-12-11

[12] 朱扬勇, 孙婧. 推荐系统研究进展[J]. 计算机科学与探索, 2015, 9(5):513-525.

[13] 杨阳, 向阳, 熊磊. 基于矩阵分解与用户近邻模型的协同过滤推荐算法[J]. 计算机应用, 2012,32(2):395-398.

[14] 项亮. 推荐系统实践[M]. 北京: 人民邮电出版社, 2012.
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!