推荐系统中所使用的混合技术介绍

文/陈运文html

在推荐系统实际运用中,各类混合技术是其中一项极为重要的核心技术。在工程实践中咱们发现,混合技术对提高推荐效果、改进推荐系统的性能等都有重要意义,所以本文对该专题进行以下的一些总结和介绍。前端

引言

在这个信息爆炸的时代,消费者面临众多选择、未知的领域、过载的信息时,每每无所适从;然而与此同时,内容的生产者(例如商家)也在苦苦寻觅合适的用户,寻找最便捷的渠道,而解决这两类矛盾的最好工具就是推荐系统。算法

推荐系统缘起于搜索系统,在底层系统上二者有大量相通的技术,可是在相应用户需求和产生应用的场景上,推荐系统离用户更进一步:当用户的需求具体而明确时,他搜索;但当用户需求不明确或难以表达时,他须要推荐。另外一方面,当用户须要找某个领域下公认的、热门的内容时,他搜索;但当用户须要找个性化的内容时,他须要推荐。不少场景下,用户的个性化需求是很难转化为简短明确的查询词的,例如“今天中午想找个附近的、符合我口味的、消费不贵的餐馆”这样的需求,很是常见但很难用查询词来表达清楚。推荐系统刚好能够填补这个空白,根据挖掘用户历史行为来将个性化的需求深刻挖掘清楚,实现用武之地。segmentfault

目前在电商、视频、文学、社交网络等等各种网站或应用中,推荐系统都开始扮演起一个愈来愈重要的角色。可是不管应用于什么系统,归根结底最关键的是必须保证高质量的推荐效果。缓存

撇开产品、交互设计、基础数据等方面,若是从系统和算法的角度来看,混合推荐的思路是其中最为重要的部分。绝不夸张的说,在真实世界的应用中,不管产品规模的大或小、用户的多与少,只要是想要追求推荐效果的高水准,那么混合推荐必定是必不可少的一门绝技。缘由为什么?——下面来做个解释网络

为何要有混合技术

推荐技术发展至今已经历了十余年,这期间众多的算法被提出并在业界运用,通过大量的实践,人们发现彷佛没有任何一个方法能够独领风骚、包打天下,每种推荐方法都有其局限性,下面举些典型的例子说明:架构

基于物品的协同过滤(Item-based Collaborative Filtering)是推荐系统中知名度最高的方法,由亚马逊(Amazon)公司最先提出并在电商行业内被普遍使用。但基于物品的协同过滤在面对物品冷启动,以及数据稀疏的状况下效果急剧降低。同时基于物品的协同过滤倾向于推荐用户购买过商品的相似商品,每每会出现多样性不足、推荐惊喜度低的问题。框架

基于用户的协同过滤(User-based Collaborative Filtering)方法在推荐结果的新颖性方面有必定的优点,可是推荐结果的相关性较弱,且容易受潮流影响而倾向于推荐出大众性物品。同时新用户或低活跃用户也会遇到冷启动(Cold-Start)的棘手问题。工具

在多个推荐算法竞赛中,咱们发现隐语义与矩阵分解模型(Latent Factor Model)及其各类改进升级方法(包括SVD++等)是推荐精度最好的单一模型方法,但当数据规模大时其运算性能会明显下降,同时基于MF的方法依赖全局进行计算信息,于是很难做增量更新,致使实际工程中会遇到很多困难。另外,隐语义模型还存在调整困难、可解释性差等问题。oop

基于内容的推荐算法(Content-based Recommendation)是最直观的推荐算法,这种方法实现简单,不存在冷启动问题,应对的场景丰富,属于“万金油”型打法。但在一些算法公开评测中,基于内容的方法效果都是垫底的之一。同时该算法依赖内容的描述程度,每每受限于对文本、图像或音视频内容进行分析的深度。

基于统计思想的一些方法,例如Slope One,关联规则(Association Rules),或者分类热门推荐等,计算速度快,可是对用户个性化偏好的描述能力弱,实际应用时也存在各类各样的问题,在此很少赘述。

怎样混合是个问题

解决各类推荐方法“硬伤”的一条最好的解决途径就是混合技术——它的思路很是明确,俗称“三个臭皮匠顶个诸葛亮”——即综合运用各类方法的优点、扬长避短,组合起来成为一个效果强大的系统。

道理虽然简单,可是怎样组合才能真正发挥威力?联想到一个有趣的电影片断:周星驰的喜剧电影《国产零零漆》中,神志不清的特工达文西“发明”了一个“要你命3000”的武器,这个“超级武器霸王”把一堆街头武器——“西瓜刀、铁链、火药、硫酸、毒药、手枪、手榴弹、杀虫剂”——用绳子绑在一块儿,可是彻底没有做用,被对手一枪击毙。

在实际应用中,从系统、算法、结果、处理流程等不一样的角度,都有一些具体的混合策略。下面依次从不一样的角度来进行介绍。

多段组合混合推荐框架

推荐系统一方面要处理海量的用户、物品的数据,一方面要实时相应线上用户的请求,迅速的生成结果并返回。在这里存在一个矛盾是,离线数据挖掘(例如常见的Hadoop系统)虽然擅长处理大量数据,但运算周期长(小时级或天级)、实时推荐能力差,而在线系统因为要迅速(例如几十毫秒)计算出推荐结果,没法承担过于消耗资源的算法。

请输入图片描述
图1:Netflix的Online-Nearline-Offline混合推荐系统

在业界实际部署时,解决此类常见问题的流行方法是采用三段式混合系统:即Online-Nearline-Offline Recommendation(在线-近线-离线)三层混合机制。曾经举办过著名的国际推荐竞赛的Netflix公司,在所公开的后台推荐系统架构中,即采用了该混合系统(如图1)。

其中Online系统直接面向用户,是一个高性能和高可用性的推荐服务,在这里一般会设计有缓存(Cache)系统,来处理热门的请求(Query)重复计算的问题。而当Cache不命中的状况下,Online推荐运行一个运算简单可靠的算法,及时生成结果。Online系统后是Nearline系统,这个系统部署在服务端,一方面会接收Online系统发过来的请求,将Online计算的一些缓存结果,采用更复杂的算法从新计算并更新后更新缓存。另外一方面Nearline是衔接Online和Offline系统的桥梁,由于Offline结果每每会挖掘长期的、海量的用户行为日志,消耗的资源大、挖掘周期长,可是Offline推荐系统计算所得的结果质量每每是最高的,这些结果会经过Nearline系统输送到线上,发挥做用。

另一个不可忽视的问题是用户反馈的及时收集,并及时用于调整推荐结果。挖掘用户的反馈对调整推荐结果有莫大的帮助,但这个调整每每越及时越好,不然用户很容易对结果不满意而流失。这个点击挖掘和反馈的功能每每由Nearline推荐系统来承担,由于该系统收集前端反馈比较方便,又能够保证适当的处理时长。

加权型混合推荐技术

上面介绍了从系统架构的角度如何进行混合。而从算法的角度来看,则最经常使用的是采用加权型的混合推荐技术,即未来自不一样推荐算法生成的候选结果及结果的分数,进一步进行组合(Ensemble)加权,生成最终的推荐排序结果。

具体来看,比较原始的加权型的方法是根据推荐效果,固定赋予各个子算法输出结果的权重,而后获得最终结果。很显然这种方法没法灵活处理不一样的上下文场景,由于不一样的算法的结果,可能在不一样的场景下质量有高有低,固定加权系统没法各取所长。因此更好的思路是设置训练样本,而后比较用户对推荐结果的评价、与系统的预测是否相符,根据训练获得的结果生成加权的模型,动态的调整权重。

请输入图片描述
图2:加权混合技术能明显提升推荐精度

加权混合的模型有不少,除了简单的线性模型外,经常使用的有回归模型(Logistic Regression)、RBM(Restricted Boltzmann Machines)、GBDT(Gradient Boosted Decision Trees),这三种混合模型在推荐算法竞赛中大放异彩,在2009年结束的Netflix百万美圆推荐竞赛中,优胜队伍将充分运用和多种加权混合模型的优点,组合后的算法推荐精度很是高。获胜队的Yehuda Koren在论文The BellKor Solution to the Netflix Grand Prize中对此有很是详细的介绍。另外值得一提的是台湾大学推荐团队,他们经过混合甚至二次混合的方式(如图2),将众多单独推荐算法的结果进行最合理的加权组合,在最近几届的KDD Cup数据挖掘竞赛中所向披靡,常常取得极为优异的推荐效果。

分级型混合推荐技术

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

在各类推荐场景中,Top-N推荐是最为常见的一类。这种推荐应用有时须要展现较多的推荐结果,而此时一种推荐算法的结果每每不够丰富,一般会采用分级型的混合技术,经过事先的数据挖掘,优先将推荐精度高的算法结果先列出,而后用依次用其余方法的结果递补。不一样的推荐算法每每在精度(Precision)和召回(Recall)之间有所折衷,所以优先列出高精度结果,长尾部分则采用高召回的结果进行补足,能兼顾对推荐结果数量和质量的两种需求。

交叉调和技术

交叉调和技术有些相似西方酿造威士忌(Whisky)酒的过程——将纯麦威士忌、谷物威士忌、或者不一样产地、口味的陈酿进行必定比例的调配后最终成品。交叉调和推荐技术(Blending Recommendation)的主要动机是保证最终推荐结果的多样性。由于不一样用户对同一件物品的着眼点每每各不相同,而不一样的推荐算法,生成的结果每每表明了一类不一样的观察角度所生成的结果,交叉调和技术将不一样推荐算法的生成结果,按照必定的配比组合在一块儿,打包后集中呈现给用户。

交叉调和技术须要注意的问题是结果组合时的冲突解决问题,一般会设置一些额外的约束条件来处理结果的组合展现问题。另外咱们发现为了让用户更多的注意到结果的多样性,对不一样类型的推荐结果辅以展现不一样的推荐理由,每每能得到更多收益。

瀑布型混合方法

瀑布型(Waterfall Model)的混合方法采用了过滤(Filtering)的设计思想,将不一样的推荐算法视为不一样粒度的过滤器,尤为是面对待推荐对象(Item)和所需的推荐结果数量相差极为悬殊时,每每很是适用。

在瀑布型混合技术中,前一个推荐方法过滤的结果,将输出给后一个推荐方法,层层递进,候选结果在此过程当中会被逐步遴选,最终获得一个高精确的结果。设计瀑布型混合系统中,一般会将运算速度快、区分度低的算法排在前列,逐步过渡为重量级的算法,这样的优势是充分运用不一样算法的区分度,让宝贵的运算资源集中在少许较高候选结果的运算上。

推荐基础特征混合技术

数据是推荐系统的基础,一个完善的推荐系统,其数据来源也是多种多样的。从这些数据来源中咱们能够抽取出不一样的基础特征。以用户兴趣模型为例,咱们既能够从用户的实际购买行为中,挖掘出用户的“显式”兴趣,又能够用用户的点击行为中,挖掘用户“隐式”兴趣;另外从用户分类、人口统计学分析中,也能够计算出用户兴趣;若是有用户的社交网络,那么也能够了解周围用户对该用户兴趣的投射,等等。另外一方面,从物品(Item)的角度来看,也能够挖掘出不一样的特征。

不一样的基础特征能够预先进行组合或合并,为后续的推荐算法所使用。这样处理的优势是将推荐算法切分得比较清楚,这样将一个总体的推荐问题,分解为特征的抽取、组合、使用等各个环节的优化问题,在进行个性化推荐时较为适用。

推荐模型混合技术

和特征合并的技术不一样,多模型的合并技术在模型计算阶段,将整个模型做为第二种算法的输入。这种组合方式,事实上造成了一种新的独立的推荐模型。例如在进行基于用户的协同过滤计算的时候,在计算相邻用户的距离的基础上,能够进一步根据用户的属性内容(Content)信息、采用基于内容的推荐的思想,进一步生成类似用户的候选结果;或者利用用户的社交网络信息(Social Network)来扩展相邻用户集合。这种在算法设计阶段而不是特征利用或推荐结果合并阶段的混合技术,被成为推荐模型混合技术。

这种技术每每适用于数据稀疏或质量较差时,单个推荐模型结果都比较差的状况。此时对多个较差的模型的最终结果进行合并没有法得到满意的结果(由于候选结果都比较差),所以提早在模型计算阶段进行算法思路的合并,这样能提早召回好的结果,提高推荐效果。

总体式混合推荐框架

除了上述的系统架构、特征、算法、推荐结果等等角度的推荐融合技术,还有不少的内容是没有包括的,例如从商业逻辑的角度来分析,商家每每有一些特定的推荐需求或者推荐规则,须要对算法生成的结果进行调整。亦或者从交互设计的角度来看,推荐结果的展现方式等都有所不一样;一些特殊的应用场景可能须要强调地域、时间等信息,对应的推荐挖掘方法和展示都有特殊的要求,这个时候对结果的混合每每要从整个产品的角度来进行设计和处理,从而可以知足不一样的须要,这些能够被归入总体式的混合推荐框架中考虑。

讨论和小结

推荐效果是一个推荐系统是否能得到成功的生命线,而混合推荐技术是其中最为重要的一个环节。在各类实际应用中,广大的研发工程师在处理不少问题时,每每都从直觉出发在不一样程度的使用各类混合推荐技术,也解决了不少实际问题,取得了很好的效果。本文从理论角度对此进行了梳理,但愿能帮助你们提高对推荐系统的领悟和理解。心中装着进行混合的意念,并理论联系实际,对开发一个成功的推荐系统会有莫大的帮助。


转载自:推荐系统中所使用的混合技术介绍 | Resys China

相关文章
相关标签/搜索