首页 > 代码库 > 【转载】推荐系统的十大挑战
【转载】推荐系统的十大挑战
摘要:个性化推荐很多读者都听说过,但真正它是什么,可能大多数人都说不上来或者并不真正了解,而对于其发展现状和前景,大家也没有一个统一的认识。本文很详尽地介绍了个性化推荐的;理论概念,并深入分析了其面临的10大挑战。
个性化推荐经常被人误解为细分市场和精准营销这两个概念。虽然它们之间有一些联系,但实质上却相差甚远。本文不仅清楚地讲述了个性化推荐技术,更列出了其所面临的十大挑战。
很多人都知道个性化推荐,却有不少认识上的误区。有的人认为个性化推荐就是细分市场和精准营销,但实际上细分市场和精准营销往往是把潜在的用户分成很多群体,这与基于全体的统计相比固然有了长足的进步,但距离“为每一个用户量身定做的信息服务”还有很大的差距,只有做个性化才能实现亚马逊CEO Jeff Bezos的梦想“如果我有100万个用户,我就为他们做100万个亚马逊网站”。
所以,市场细分只是初级阶段,而个性化推荐则是市场细分的极致。还有人认为个性化推荐等同于协同过滤,这可能是因为协同过滤出现得比较早并且比较容易被大众理解,但实际上协同过滤只不过是众多个性化推荐技术中的一个早期成 员,远不能代表个性化推荐技术。
随着个性化的商业应用延展到用户生活信息流的方方面面,个性化推荐技术也在日新月异不断发展,类似于协同过滤这样的早期技术已经不能满足新环境下的要求,无法解决新出现的问题。令人兴奋的是,过去十年中,我们见证了无数顶尖级专家与学者投身于推荐方法与技术的创新中。今天,还些人认为个性化推荐技术的研究已经进入了很成熟阶段,没有什么特别激动人心的问题和成果。事实却恰恰相反,现在个性化推荐技术面临很大的挑战,我们之前只看到了个性化推荐技术难题这座冰山所露出的一角。
本文将列出个性化推荐技术所面临的十个挑战(仅代表个人观点),其中有一些是很多年前就认识到但一直没有得到解决的长期问题。事实上,有些挑战是不可能完全解决的,只能提出改良方案,还有一些是在最近研究中提出来的焦点问题。
数据稀疏性问题
现在推荐系统规模越来越大,用户和商品(包括音乐、网页、文献等物品)数目动辄百千万计,而且用户之间选择的重叠非常少。如果以用户和商品之间已有的选择关系占所有可能存在的选择关系的比例来衡量系统的稀疏性,那么我 们平时研究最多的MovieLens数据集的稀疏度是4.5%,Netflix是1.2%,Bibsonomy是0.35%,Delicious是 0.046%,这些其实是非常密的数据。
想想淘宝上号称有8亿商品,平均而言一个用户能浏览800件吗?估计不能,因此稀疏度应该在百万分之一或以下的量级。数据非常稀疏,使得绝大部分基于关联分析的算法(如协同过滤)效果都不好。本质上,这个问题是无法完全克服的。解决这个问题的办法很多,例如可以通过扩散的算法,从原来的一阶关联(两个用户有多少相似打分或者共同购买的商品)到二阶甚至更高阶的关联(假设关联性或者说相似性本身是可以传播的),也可以添加一些默认的打分,从而提高相似性的分辨率。一般而言,数据规模越大就越稀疏。现在认为能够处理稀疏数据的算法(如扩散、迭代寻优、转移相似性等)更有价值。
冷启动问题
因为新用户罕有可以利用的行为信息,所以很难给出精确的推荐。反过来,由于新商品被选择次数很少,也难以找到合适的办法推荐给用户。一种办法是利用文本信息进行辅助推荐,或者通过注册和询问得知一些用户的属性信息,比如年龄、居住城市、受教育程度、性别和职业等。
最近广泛应用的标签系统提供了解决冷启动问题的可能方案,因为标签既可以看作是商品内容的萃取,同时也反映了用户的个性化喜好。以《桃姐》这部电影为例,有的人打的标签是“伦理”,有的人打的标签是“刘德华”,两个人看的电影一样,但兴趣点可能不尽相同。当然,利用标签也只能是提高有少量行为的用户的推荐准确性,对于纯粹的冷启动用户,没有任何帮助,因为这些人还没有打过任何标签。
有趣的是,最近的研究显示,新用户更容易选择特别流行的商品。无论如何,这都是一个好消息,说明使用热销榜也能获得不错的结果。冷启动问题还可以通过多维数据的交叉推荐部分解决,其精确度和多样性又远胜于热销榜,这一点后面会进一步介绍。
大数据处理与增量计算问题
因为数据很稀疏,大部分数据都拥有百千万计的用户和商品,所以如何快速高效地处理这些数据成为迫在眉睫的问题。而算法时间和空间上的复杂性,尤其是前者,得到了空前重视。一个高效的算法,要么复杂性很低,要么能够很好地并行化,要么两者兼具。局部扩散算法在这两个方面都具有明显优势。
另一种解决方法是设计增量算法。也就是说,当产生新用户、新商品和新的连接关系时,算法的结果不需要在整个数据集上重新进行计算,而只需考虑所增加节点和连边局部的信息,对原有的结果进行微扰,快速得到新结果。一般而言,随着加入的信息量的增多,这种算法的误差会积累变大,最终每过一段时间还是需要利用全局数据重 新进行计算。
一个特别困难的挑战是如何设计一种能够保证其误差不会累积的算法,也就是说其结果与利用全部数据重新计算的结果之间的差异不会单调上升。我们把这种算法叫做自适应算法,它是增量算法的一个加强版本,其设计要求和难度更高。
现在业界已经在应用增量算法。例如,百分点科技推荐引擎中的若干算法都采用了增量技术,使得用户每次浏览收藏或者购买商品后其推荐列表立刻得到更新。当然,只是该引擎的部分算法实现了增量技术,没有达到所有算法都能够自适应学习的程度,还有很长的路要走。
多样性与精确性的两难困境
如果要给用户推荐他喜欢的商品,最“保险”的方式就是给他特别流行或者得分特别高的商品,因为这些商品有更可能被喜欢(至少Bezos会这么想),往坏了说,也很难特别被讨厌。但这种推荐产生的用户体验并不一定好,因为用户很可能已经知道这些热销或流行的产品,所以得到的信息量很少,并且用户不会认为这是 一种“个性化”推荐。
事实上,Mcnee等人已经警告大家,盲目崇拜精确性指标可能会伤害推荐系统,因为这样可能会导致用户得到一些信息量为0的“精准推荐”并且视野变得越来越狭窄。让用户视野变得狭窄是协同过滤算法的一个主要缺陷。与此同时,应用个性化推荐技术的商家,也希望推荐中有更多 的品类出现,从而激发用户新的购物需求。
遗憾的是,推荐多样的商品和新颖的商品与推荐的精确性之间存在矛盾,因为前者风险很大—推荐一个没人看过或者打分较低的东西,很可能被用户憎恶,从而效果更差。很多时候,这是一个两难的问题,只能通过牺牲多样性来提高精确性,或者牺牲精确性来提高多样性。一种可行之策是直接对推荐列表进行处理,从而提升其多样性。这种方法固然在应用上是有效的,但没有任何理论的基础和优美性可言,只能算一种实用的招数。
我们发现,精巧混合精确性高和多样性好的两种算法,可以同时提高算法的多样性和精确性,不需要牺牲任何一方。遗憾的是,我们还没有办法就这个结果提供清晰的解读和深刻的见解。多样性和精确性之间错综复杂的关系和隐匿其后的竞争,到目前为止还是一个很棘手的难题。
推荐系统的脆弱性问题
推荐系统在电子商务领域能带来重大的经济利益的驱动,导致一些心怀不轨的用户会提供一些虚假或恶意的行为,故意增加或者压制某些商品被推荐的可能性。因此,一个算法能否在一定程度上保持对恶意攻击的鲁棒性,成为需要认真考虑的一个特征。以最简单的关联规则挖掘算法为例,Apriori算法的鲁棒性就远胜于k 近邻算法。
已有一些技术专门用来提高推荐系统面对恶意攻击的鲁棒性。比如,通过分析对比真实用户和疑似恶意用户之间打分行为模式的差异,提前对恶意行为进行判断,从而阻止其进入系统或将恶意用户的影响力降至最低。
总体来说,这方面的研究相对较少,系统性的分析还很缺乏,反而是攻击策略层出不穷,有种“道高一尺,魔高一丈”的感觉。Burke等人2011年的研究报告 “Robust Collaborative Recommendation”中就分析了4大种类、8种不同的攻击策略。
用户行为模式的挖掘和利用
深入挖掘用户的行为模式有望提高推荐的效果或在更复杂的场景下进行推荐。比如,新用户和老用户具有很不一样的选择模式:通常,新用户倾向于选择热门商品,而老用户对小众商品关注更多;新用户所选择的商品相似度更高,老用户所选择的商品多样性较高。
有些混合算法可以通过一个参数调节推荐结果的多样性和热门程度。在这种情况下,就可以考虑为不同用户赋予不同参数(从算法结果的个性化到算法本身的个性化),甚至允许用户自己移动一个滑钮调节这个参数—当用户想看热门产品时,算法提供热门推荐;当用户想找点很酷的产品时,算法也可以提供冷门推荐。用户行 为的时空统计特性也可以用于提高推荐或者设计针对特定场景的应用。
用户的选择可能同时蕴含了长期的兴趣和短期的兴趣,通过将这两种效应分离出来,可以明显提高推荐的精确度。事实上,假设用户兴趣随时间按照指数递减,也能够得到改进的推荐效果。
现在用手机上网已经越来越普及,与此同时,嵌入GPS的手机越来越多,因此,基于位置的服务成为一个受到学术界和业界广泛关注的问题。基于位置信息的推荐可能会成为个性化推荐的一个研究热点和重要的应用场景,而解决这个问题需要能够对用户的移动模式有深入理解(包括预测用户的移动轨迹和判断用户在当前位置是否有可能进行餐饮购物活动等),同时还要有定量的办法定义用户之间以及地点之间的相似性。另外,不同用户打分的模式也很不一样,用户针对不同商品的行为模 式也不一样(想象一下在网上下载一首歌和团购房子时的区别),这些都可以用来提高推荐的效果。
推荐系统效果评估
推荐系统的概念已经提出几十年了,但怎样评价推荐系统,仍然是一个很大的问题。常见的评估指标可以分为四大类,分别是准确度、多样性、新颖性和覆盖率。每一类还有不同的指标。比如,准确度指标还可分为四大类,分别是预测评分准确度、预测评分关联、分类准确度和排序准确度。以分类准确度为例,又包括准确率、召 回率、准确率提高率、召回率提高率、F1指标和AUC值。
朱郁筱和吕琳媛撰写的《推荐系统评价综述》一文几乎总结了文献中曾经出现过的所有推荐系统指标,这些指标都是基于数据本身的指标,可以认为是第一层次。实际上,在真实应用时,更为重要的是另外两个层次的评价。第二个层次是商业应用上的关键表现指标,如受推荐影响的转化率、购买率、客单价、购买品类数等。第三个层次是用户真实的体验。
绝大部分研究只针对第一个层次的评价指标,而业界真正感兴趣的是第二个层次的评价(比如,到底是哪个指标或者哪些指标组合的结果能够提高用户购买的客单价),而第三个层次最难,没人能知道,只能通过第二层次来估计。因此,如何建立第一层次和第二层次指标之间的关系,就成为了关键。这一步打通了,理论和应用之间的屏障就通一大半了。
用户界面与用户体验
与其说,这是一个学术性质的问题,不如说是真实应用的问题。十年前就有学者指出,推荐结果的可解释性,对于用户体验有至关重要的影响—用户希望知道这个推荐是怎么来的。在这个意义上,协同过滤有明显的优势。
基于商品的协同过滤,亚马逊在发送推荐的电子邮件时会告诉用户之所以向其推荐某书,是因为用户以前购买过某些书。相对地,矩阵分解或者集成学习算法就很难向用户解释推荐结果的起源。用户更喜欢来自朋友的推荐而不是系统的推荐,这一点在后面还会详细提到。
另外,推荐列表往往含有很多项,这些推荐项最好能够分成很多类别,不同类别往往来自于不同的推荐方法。比如,看过还看过(浏览过本商品的客户还浏览过的商品)、买过还买过(购买过本商品的客户还购买过的商品)、看过最终购买(浏览过本商品的客户最终购买的商品)、个性化热销榜(个性化流行品推荐)和猜你喜欢(个性化冷门商品推荐)等。
当然,如何更好呈现推荐,是一个很难建立理论模型和进行量化的问题。对于不同的被推荐品而言,用户界面设计的准则也可能大不相同。比如,在首页、类目页、具体商品页、购物车页都应该分别放置哪些推荐栏?不同的推荐栏放在页面的什么位置能够优化用户体验?什么情况下应该让用户自己选择推荐的个性化程度?基于用户行为的实证研究可以回答一部分问题,同时需要建立一个可以进行A/B测试的系统,或可积累重要的实验数据。
多维数据的交叉利用
目前网络科学研究一个广受关注的概念是具有相互作用的网络的结构和动力学。网络与网络之间的相互作用大体可以分成三类。第一类是依存关系。比如,电力网络和Internet,如果发生了大规模停电事故,当地的自主系统和路由器也会受到影响,导致网络局部中断。第二类是合作关系,比如人的一次出行,可以看作航空网络、铁路网络和公路网络的一次合作。第三类是交叠关系,主要针对社会网络,这也是我们最关注的。
几乎我们每一个人都参与了不止一个大型的社会网络,既有新浪微博的账号,又是人人网的注册用户,还是手机用户,那么你已经同时在三个巨大的社会网络中了。与此同时,你可能还经常在淘宝、京东、 麦包包、1号店、库巴网等网站上进行网购,那么你就成为了一张巨大的用户-商品图中的一员。
想象如果能够把这些网络数据整合起来,特别是知道每个节点身份的对应关系(不需要知道真实身份,只需要知道不同网络中存在的一些节点是同一个人),那么其中定会有特别巨大的社会经济价值。举个例子,你可能已经在新浪微博上关注了很多数据挖掘达人的微博,并且分享了很多算法学习的心得和问题。而当你第一次上当当网购书时,主页向你推荐数据挖掘的最新专著并附有折扣,你会心动吗?交叠社会关系中的数据挖掘,或称多维数据挖掘,是真正解决系统内部冷启动问题的终极法宝—只要用户在系统外部的其他系统有过活动。
单纯从个性化商品推荐来讲,可以利用用户在其他电商网站的浏览购买历史来提高在目标电商推荐的精确度—当然,每一个电商既是付出者,也是获利者。总体而言,大家能够通过提高用户体验和点击深度实现共赢。与此同时,可以利用微博和其他社会网络的活动提高商品推荐的精度,还可以反过来利用商品浏览历史提高微博关注对象推荐的精度。推荐一个经常购买专业羽毛球和浏览各种专业羽毛球设备的用户关注羽毛球的专业选手和业余教练的成功率应该很高,而且不会陷入“总在一个圈子里面来回推荐”的毛病中。从机器学习的角度,杨强等人提出的“迁移学习”算法有望用来解决这种跨邻域的推荐。
我们分析了百分点科技服务客户的真实数据,发现有相当比例的用户都具有交叉购物的习惯(在多个独立B2C电商有浏览和购买行为)。即便只考虑两个点,例如利用麦包包的浏览购买数据为拍鞋网的用户进行个性化推荐(这些用户是在拍鞋网上没有任何历史记录的新用户,但在麦包包上有浏览购买行为),就可以明显提高推荐的准确度(比完全冷启动的随机推荐高数十倍)。而如果利用3家或以上的外部电商的数据,其推荐的精确度可以明显高于热销榜(注意,热销榜一点个性化都没 有),特别在团购类网站上表现非常好。
虽然针对多维数据挖掘的研究刚起步,但我们完全可以相信这在学术和应用上都将是一个焦点和难点。
社会推荐
很早以前,研究人员就发现,用户更喜欢来自朋友的推荐而不是被系统“算出来的推荐”。社会影响力被认为比历史行为的相似性更加重要。例如通过社会关系的分析,可以大幅度提高从科研文献到网购商品推荐的精确度。来自朋友的社会推荐有两方面效果:一是增加销售(含下载、阅读……),二是在销售后提高用户的评价。
社会推荐的效果也不完全是正面的,譬如Leskovec等人在论文“The Dynamics of Viral Marketing”中举了一个反例:朋友推荐对书的销售增长几乎没有帮助,有时会起到负面作用。
在社会推荐方面,国内做得最出色的是豆瓣网,其朋友推荐被接受被高度评价的比例非常高。最近有证据显示,朋友推荐也是淘宝商品销售一个非常重要的驱动力量。
社会推荐方向存在的挑战主要可以分为三类:一是如何利用社会关系提高推荐的精确度;二是如何建立更好的机制以促进社会推荐;三是如何将社会信任关系引入到推荐系统中。社会推荐的效果可能来自于类似口碑传播的社会影响力,也可能是因为朋友之间本来就具有相似的兴趣或者兴趣相投更易成为朋友。对这些不同的潜在因 素进行量化区别,也是学术研究的热点之一。
相关阅读
有些朋友可能还不是很了解个性化推荐,推荐阅读《自然科学进展》上的综述,能快速得到很多信息,了解个性化推荐研究的概貌。有了这个基础,如果想要了解应用级别的算法和技术,推荐阅读项亮、陈义和王益合著的《推荐系统实践》一书。
同时建议关注国外最近出版的《Recommender Systems Handbook: A Complete Guide for Scientists and Practioners》和《Recommender Systems: An Introduction.》。前者实际上是很多文章的汇总,写这些文章的作者都是技术专家,文章质量不错。Adomavicius和Tuzhilin撰写的“Toward the next generation of recommender systems: a survey of the state-of-the-art and possible extensions”一文特别有影响力,不仅系统回顾了推荐系统研究的全貌,还提出了一些有趣的开放性问题。今年在《物理报导》上有一篇关于推荐系统的 大综述,应该是目前最全面的,所强调的不仅是算法,还有很多现象和思路,推荐大家阅读。
作者周涛,电子科技大学互联网科学中心主任、教授、博士生导师,阿里巴巴商学院钱塘特聘教授,北京计算科学研究中心客座教授。毕业于瑞士弗里堡大学,获物理系哲学博士。
原文链接:程序员杂志