推荐引擎原理、发展挑战与发展方向

所属栏目:搜索引擎论文 论文作者:/
摘要

  引言

  随着信息技术和互联网(特别是Web2.0和移动互联网)的发展,各种图片、微博、视频等大量信息的创建与分享变得越来越容易,人们进入到了一个信息过载的时代。在这个时代,由于信息极度爆炸,使得信息生产者和信息消费者都面临了一个困境:对于生产者而言,想要使自己的信息受到广泛关注已经不是一件容易的事情;同样对于消费者而言,想要找到自己需要的信息也变得越来越难。针对信息过载的问题,传统的解决办法是建立如雅虎、2345导航网站的分类目录,或类似谷歌、百度的搜索引擎,但是这两种方法都存在一定的局限性。分类目录只能覆盖很少一部分信息,很难覆盖处于长尾部分的物品。搜索引擎只适用于当用户有明确的需求,并且该需求可以用关键字描述的这类场景。因此,推荐引擎正是为了满足用户在没有明确的需求时,如何从海量的信息中找到自己感兴趣的物品而研发的,所以推荐引擎也被称为第二代搜索引擎。

  推荐引擎的作用就是帮助人们从海量的信息中发现自己潜在感兴趣的事物。不需要用户提供明确的需求(如搜索引擎的关键字),通过收集用户的历史行为并结合其他相关信息为用户的兴趣建立模型,从而找出用户可能会喜欢的物品并推荐给用户。推荐引擎能够较好地解决信息过载带来的长尾效应,即少量的热门事物会受到大众的广泛关注,而绝大部分处于长尾的物品却无人问津。推荐引擎的典型应用领域就是电子商务,如亚马逊、京东、淘宝等电商巨头,正是充分借助于推荐引擎,挖掘用户的个性需求,为用户推荐处于长尾部分的商品,进而提高销售额。因此,推荐引擎作为一种解决信息过载的重要方法,被应用在越来越多的领域中。

  推荐引擎原理综述当前主流的推荐引擎有两大类:基于内容的推荐和基于协同过滤的推荐。

  (1)基于内容的推荐

  这类推荐引擎的原理是为用户推荐与用户画像最匹配的物品。用户画像可以从用户以往的历史记录(如浏览、打分、购买等能够反映出用户喜好的行为)中找到用户喜爱的物品,搜集该物品的元数据或相关信息,如物品的描述文档、用户评论等,然后从中提取物品特征,最终得到用户画像。

  大多数基于内容的推荐引擎,物品特征是从文本中提取得到的,如与该物品相关的网页、新闻、产品说明书、电子邮件等。常用的技术是使用基于关键字的向量空间模型,在这个模型中,每个文本文件和用户画像都可以被映射为一个n维的空间向量,然后通过计算向量的余弦相似度找出用户最有可能喜欢的物品。

  除了VSM模型之外,基于内容的推荐引擎还可以使用有监督的机器学习算法。如在新闻推荐领域,Billsus等人提出了对有大量历史记录的老用户,使用基于朴素贝叶斯分类器的机器学习算法来找出用户感兴趣的新闻。K近邻、支持向量机等文本分类算法被广泛应用在音乐、新闻、电子商务、电影等领域的个性化推荐引擎中。
  
  (2)基于协同过滤的推荐

  这类推荐引擎的原理是,若用户u、v在相同的物品的评分相近,那么用户u对物品i的打分也非常有可能与v的打分相似。基于协同过滤的推荐可细分为两类,一类是基于邻域的方法,一类是基于模型的方法。

  在基于邻域的方法中,已有的用户对物品的评分被用来直接预测用户对新物品的评分,常见的两种推荐方法是基于用户的推荐和基于物品的推荐。基于模型的方法是通过对已有的评分进行学习,得到一个模型来预测用户对新物品的评分,常用的方法有隐狄利克雷分布、最大熵、奇异值分解等。

  (3)基于内容的推荐引擎

  基于内容的推荐是当前主流的推荐方法之一,其基本原理是通过分析用户曾经打过分的物品信息(如物品说明、物品介绍等文本信息),通过提取物品特征然后构建用户画像。用户画像是对用户兴趣、爱好的一种结构化表示方法。基于内容的推荐方法就是通过将用户画像同物品特征进行匹配,得出的结果就是用户和物品之间的相似度,相似度越高,说明该物品越符合用户的兴趣爱好,即用户越有可能喜欢该物品。

  基于内容的推荐引擎基本结构如图1所示。可以看到基于内容的推荐最重要的三个步骤:物品特征分析与提取,用户画像学习,相似度计算。

  基于内容的推荐引擎主要存在以下几点不足。

  一是,某些领域的相关知识难以获得。例如音乐领域和新闻、网页等文本信息不同,音乐属于音频数据,与之相关的领域知识获取较为困难。在线音乐网站潘多拉就是通过人工的方法为音乐进行标注。对于当前庞大数量并不断快速增加的音乐数据,这种方法需要消耗大量的人力和时间成本。

  二是,专家(人工)标注的方法往往不能代表用户的各种意见,同时由于专家的水平不一,不同的专家对于同一首歌曲经常会有不同见解,难以保证标注质量的一致性。

  三是,基于内容的推荐结果过于专一、单调。基于内容的推荐是推荐与用户喜爱的物品相似的物品,这样推荐缺乏惊喜度,因为基于内容的推荐无法推荐内容、特征不同的物品。

  (4)基于协同过滤的推荐引擎协同过滤主要可分为两类:基于邻域的方法和基于模型的方法。在基于邻域的方法中,已有的评分信息直接用于预测用户对新物品的评分;基于模型的方法则是通过评分信息学习一个预测模型。

  相比于基于内容的推荐,使用用户行为数据的协同过滤算法最大的优势在于不需要领域知识,并且能够提供不同类型的推荐,然而这类算法在某些情况下也存在不足之处。

  数据的稀疏性问题。以当前大型电商网站为例,在网站中往往存有上千万个物品,相对于庞大的物品数据库,用户浏览、购买的物品仅仅是很小的一部分,与可能存在的用户与物品之间的联系相比,数据存在严重的稀疏性问题。数据的稀疏性会导致基于协同过滤的推荐算法的推荐质量下降,因为这类算法需要数据之间的关联关系。

  新物品的冷启动问题。新的物品,由于被用户选择或购买的次数很少(最坏的情况是没有任何用户评价、购买该物品),基于协同过滤的推荐算法很难计算这类物品与其他物品之间的相似度,这就是冷启动问题。长尾物品的推荐能力不足。长尾物品是指冷门的物品。基于协同过滤的推荐算法倾向于推荐当前流行的、热门的物品。

  当前推荐引擎面临的主要挑战。

  经过10多年的发展,推荐引擎已经广泛应用在电子商务网站、在线音乐视频网站、社交网站等领域。但快速发展的背后,推荐引擎也面临着越来越多的困难与挑战,有些是历史遗留问题,有些则是随着科技进步带来的新的挑战。

  挑战一:数据稀疏性问题

  数据的稀疏性是指随着推荐引擎需要处理的问题规模越来越大,如音乐库、电商商品库等,不同的两个用户数据重叠非常少。以淘宝为例,数据稀疏度估算在百万分之一。这对于需要分析数据关联信息的推荐算法来说,推荐效果不佳。

  挑战二:冷启动问题

  推荐引擎的根本任务就是联系人和物,但对于新加入系统的人和物来说,由于缺少历史数据,很难为新用户推荐物品,同样的,新的物品也很难推荐给用户。

  挑战三:大数据处理与增量计算的问题

  个性化推荐算法,特别是对于较为先进的推荐算法,其算法的时间、空间复杂度较高,如何将这些算法充分地并行化,例如可以运行在Hadoop集群上的推荐算法,是一个较为迫切的问题。同时,有些算法不支持增量计算,如何改进这类算法也是当前研究的热点之一。

  挑战四:多样性与精确性两难的问题

  推荐是一个较为复杂的问题,同时涉及到自然科学和社会科学两大学科。因此,推荐引擎的评测标准有时是矛盾的。例如,增加推荐的多样性往往会导致精确性降低,而盲目地提高精确性,会降低推荐结果的多样性,并损害用户体验。

  挑战五:推荐引擎的脆弱性问题

  任何一个能带来利益的算法系统都会受到攻击。和针对搜索引擎的排名作弊一样,当前也有很多针对推荐引擎的攻击技术,如行为注入攻击,当前还缺乏对这类问题系统性研究。

  挑战六:推荐引擎的评测

  正确、全面地评测一个推荐引擎也是一个难点。一般来说,推荐引擎的评价有三个层次。第一个层次是针对推荐算法的评测;第二个层次是商业应用上的关键指标,如受推荐影响的转化率、购买率等;第三个层次是用户的真实体验。当前的研究主要侧重于第一个层次,通过数据去分析性能,如何建立第一个层次和第二个层次指标之间的关系,也是当前研究的热点之一。

  挑战七:用户界面与用户体验
  
  这个问题更多的不是一个学术性质的问题,而是现实应用中需要考虑的问题。例如,有学者研究指出,推荐结果的可解释性对于用户体验有着至关重要的影响:用户往往希望知道这个推荐是怎么来的;此外,如何更好地呈现推荐结果,虽然是一个很难建立理论模型和进行量化分析的问题,但在现实应用中往往起到很大的影响。

  挑战八:多维数据的交叉应用

  现实中,用户的行为往往分散在各个不同的系统中,例如人们往往参与了多个大型的社会网络,或从多个电商网站中购买商品。如果仅从一个来源分析用户兴趣爱好,难免会有一叶障目的问题,如果能够将多种数据(多维)联合挖掘分析,就可以从根本上解决新用户的冷启动问题。

  挑战九:社会化推荐问题

  很早以前,研究人员就发现用户更倾向于来自朋友的推荐而不是被系统"计算出来的推荐".然而,当前的社会化推荐也存在几个问题:一是人们的社交是一个复杂的问题,如何将社会信任关系引入到推荐引擎中;二是如何更好地利用社会关系提高推荐的准确度。

  挑战十:用户行为模式的挖掘和应用

  不同的用户有不同的行为模式,如在图书类的电商网站中,新用户倾向于热门的数据,而老用户更关注处于长尾部分的商品。深入挖掘用户的行为模式可以提高推荐效果,或在更复杂的场景下进行推荐。

  推荐引擎的未来发展方向
  
  4.1 混合推荐

  推荐技术至今已经历了10余年,在这期间众多的算法被提出并在业界应用。人们发现单一的推荐算法各有优劣,其中某些算法可互补,如果能够通过系统性的方法组合各种推荐算法,可以产生1+1>2的效果。在2009年结束的Netflix百万美元推荐竞赛中,获得冠军的就是基于加权的混合推荐模型。

  当前主要的混合技术有:多段组合混合推荐、加权型混合推荐、分级型混合推荐和瀑布型混合推荐。

  多段组合混合推荐流行的方法是采用三段式混合系统,即Online-Nearline-Offline Recommendation(在线-近线-离线)三层混合机制。这是因为推荐引擎一方面要处理海量的用户、物品的数据,另一方面要实时响应线上用户的请求,迅速地生成结果并返回。离线数据挖掘(例如常见的Hadoop系统)虽然擅长处理大量数据,但运算周期长(小时级或天级),实时推荐能力差,而在线系统由于要迅速(例如几十毫秒)计算出推荐结果,无法承担过于消耗资源的算法。

  从算法的角度来看,最常用的是采用加权型的混合推荐技术,即将来自不同推荐算法生成的候选结果及结果的分数进一步进行组合加权,生成最终的推荐排序结果。加权混合的模型有很多,除了简单的线性模型外,常用的还有回归模型(Logistic Regression)、RBM(Restricted BoltzmannMachines)、GBDT(Gradient Boosted Decision Trees)等。

  加权组合型混合推荐技术有非常高的精度,但系统复杂度和运算负载都较高。在工业界实际系统中,往往采用一些相对简单的方案,其中分级型混合推荐技术就是一类思想简单但效果较好的方法。这种混合推荐技术根据不同的推荐场景,将不同的推荐算法按照效果优劣进行层次性划分。在对应的推荐场景下,优先采用高可信度的推荐算法生成结果,然后依次采用后续方法生成结果。

  瀑布型的混合方法采用了过滤的设计思想,将不同的推荐算法视为不同粒度的过滤器,尤其是面对待推荐对象和所需的推荐结果数量相差极为悬殊时,往往非常适用。在瀑布型混合技术中,前一个推荐方法过滤的结果,将输出给后一个推荐方法,层层递进,候选结果在此过程中会被逐步遴选,最终得到一个高精确的结果。瀑布型混合系统设计时,通常会将运算速度快、区分度低的算法排在前列,逐步过渡为重量级的算法,优点是充分运用不同算法的区分度,让宝贵的运算资源集中在少量较高候选结果的运算上。

  4.2 基于上下文的推荐

  之前论述的推荐引擎算法主要集中研究了如何联系用户兴趣和物品,将最符合用户兴趣的物品推荐给用户,但这些算法都忽略了一点,就是用户所处的上下文(Context)。

  这些上下文包括用户访问推荐引擎的时间、地点、心情等,对于好的推荐引擎是非常重要的。例如,一个卖衣服的推荐引擎在冬天和夏天应该给用户推荐不同种类的服装。推荐引擎不能因为用户在夏天喜欢过某件T恤,就在冬天也给该用户推荐类似的T恤。所以,准确了解用户的上下文信息,并将该信息应用于推荐算法是设计推荐引擎时的关键步骤。

  在用户所处的上下文环境中,最重要的两个因素就是时间和地点。时间是一种重要的上下文信息,对用户兴趣有着深入而广泛的影响。一般认为,时间信息对用户兴趣的影响表现在以下几个方面。用户的兴趣是时变的。随着年龄的增长、职业的变化,用户的兴趣也在不断变化。如果要准确预测用户现在的兴趣,就应该关注用户最近的行为,因为用户最近的行为最能体现他现在的兴趣。

  物品的时间周期。一部电影刚上映的时候可能被很多人关注,但是经久不衰的电影很少,很多电影上映后不久就被人们淡忘了。此外,物品也可能受新闻事件的影响,例如一部已经被淡忘的电影会突然因为涉及某个新闻事件而重新回到热门。不同系统的物品具有不同的生命周期,例如新闻的生命周期很短暂,而电影的生命周期相对较长。

  季节效应。季节效应主要反映了时间本身对用户兴趣的影响,例如人们夏天吃冰淇淋,冬天吃火锅,夏天穿T恤,冬天穿棉衣。

  除了时间,地点作为一种重要的空间特征,也是一种重要的上下文信息。不同地区的用户兴趣有所不同,用户到了不同的地方,兴趣也会有所变化。在某处逛街逛累了,希望寻找美食时,用户可能会考虑几个因素,包括距离、价位、口味和口碑,而在这些因素里,最重要的因素可能是距离。因此,很多基于位置的服务软件都提供了推荐附近餐馆和商店的功能。

  研究发现,用户兴趣和地点呈现出以下两点相关的特征。

  兴趣本地化。不同地方的用户兴趣存在着很大的差别。

  不同国家和地区用户的兴趣存在着一定的差异性。

  活动本地化。一个用户往往在附近的地区活动,研究人员发现45%的用户活动范围半径不超过10英里,而75%的用户活动半径不超过50英里。因此,在基于位置的推荐中需要考虑推荐地点和用户当前地点的距离,不能给用户推荐太远的地方。

  4.3 利用社交网络进行推荐

  基于社交网络的推荐可以很好地模拟现实社会。在现实社会中,很多时候我们都是通过朋友获得推荐。美国着名的第三方调查机构尼尔森调查了影响用户相信某个推荐的因素。调查结果显示,90%的用户相信朋友对他们的推荐,70%的用户相信网上其他用户对广告商品的评论。从该调查可以看到,好友的推荐对于增加用户对推荐结果的信任度非常重要。

  为了进一步证实好友推荐对用户的影响,尼尔森和Facebook合作进行了一次个性化广告实验。尼尔森测试了同一个品牌的三种不同形式的广告。第一种广告和第二种广告都是图片广告,但两者的推荐理由不同。第一种广告的推荐理由没有社会化信息,仅仅表示该品牌受到了51930个用户的关注,而第二种广告的推荐理由是用户的某些好友关注了这个广告。第三种广告比较特别,它是在用户的好友关注该品牌时,就在用户的信息流中加入一条信息,告诉用户他的某个好友关注了一个品牌。通过在线AB测试,尼尔森发现第三种广告的效果明显好于第二种,而第二种广告的效果明显好于第一种,从而证明了社会化推荐对于增加用户对广告的印象和购买意愿具有非常强烈的作用。同时,该实验也从侧面说明社交网络在推荐引擎中可能具有重要的作用。

  结束语

  自从亚马逊推出商品推荐之后,各种类型的网站都在跟进和不断完善各自的推荐引擎。典型的如Hulu和淘宝都大量应用了智能推荐,但智能推荐仍然处于辅助路径上。一是因为传统的PC由于屏幕足够大,一屏可以显示足够多的内容和链接让用户去选择,这种版式阅读来自于报纸阅读习惯的延伸;二是由于单台计算机计算能力有限,可获取的用户数据也有限,推荐算法大都是在实验室环境下进行学术研究,真正商用还有比较大的风险。然而在移动互联网时代,智能推荐已经开始从辅助路径转变到主路径上,例如手机淘宝,其首页的商品推荐已经个性化,极大地提升首页的分发能力。其次,基于大数据的相关技术,如Hadoop、Spark分布式计算框架,可以支持高时间复杂度和空间复杂度的推荐计算,因此,在移动互联网时代和大数据时代,推荐引擎将迎来新的发展。

'); })();