推荐系统实战-出租公寓项目7-混合算法

前几篇介绍过了几咱推荐算法,相惟性推荐,协同过滤,聚类,关联规则,还有很多算法我没有提到,基于模型的方法,基于数学模型通过计算来推荐,矩阵推荐等等。这些年发展过来,推荐算法,没有1000也有800种了。

经过大量的实践,人们发现似乎没有任何一个方法可以独领风骚、包打天下,每种推荐方法都有其局限性。

  • 基于物品的协同过滤(Item-based Collaborative Filtering)是推荐系统中知名度最高的方法,由亚马逊(Amazon)公司最早提出并在电商行业内被广泛使用。但基于物品的协同过滤在面对物品冷启动,以及数据稀疏的情况下效果急剧下降。同时基于物品的协同过滤倾向于推荐用户购买过商品的类似商品,往往会出现多样性不足、推荐惊喜度低的问题。
  • 基于用户的协同过滤(User-based Collaborative Filtering)方法在推荐结果的新颖性方面有一定的优势,但是推荐结果的相关性较弱,且容易受潮流影响而倾向于推荐出大众性物品。同时新用户或低活跃用户也会遇到冷启动(Cold-Start)的棘手问题。
  • 隐语义与矩阵分解模型(Latent Factor Model)及其各种改进升级方法(包括SVD++等)是推荐精度最好的单一模型方法,但当数据规模大时其运算性能会明显降低,同时基于MF的方法依赖全局进行计算信息,因而很难作增量更新,导致实际工程中会遇到不少困难。另外,隐语义模型还存在调整困难、可解释性差等问题。
  • 基于内容的推荐算法(Content-based Recommendation)是最直观的推荐算法,这种方法实现简单,不存在冷启动问题,应对的场景丰富,属于“万金油”型打法。但在一些算法公开评测中,基于内容的方法效果都是垫底的之一。同时该算法依赖内容的描述程度,往往受限于对文本、图像或音视频内容进行分析的深度
  • 基于统计思想的一些方法,例如Slope One,关联规则(Association Rules),或者分类热门推荐等,计算速度快,但是对用户个性化偏好的描述能力弱,实际应用时也存在各种各样的问题。

现实应用中,其实很少有直接用某种算法来做推荐的系统。在一些大的网站如Netflix,就是融合了数十种算法的推荐系统。我们可以通过给不同算法的结果加权重来综合结果,或者是在不同的计算环节中运用不同的算法来混合,达到更贴合自己业务的目的。

混合推荐

组合推荐(hybrid recommendation)的一个最重要原则就是通过组合后应能避免或弥补各自推荐技术的弱点。研究和应用最多的是内容推荐和协同过滤推荐的组合。尽管从理论上有很多种推荐组合方法,但不同的组合思路适用于不同的应用场景。

多段组合混合推荐框架

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


在业界实际部署时,解决此类常见问题的流行方法是采用三段式混合系统:即Online-Nearline-Offline Recommendation(在线-近线-离线)三层混合机制。曾经举办过著名的国际推荐竞赛的Netflix公司,在所公开的后台推荐系统架构中,即采用了该混合系统(如图1)。
其中Online系统直接面向用户,是一个高性能和高可用性的推荐服务,在这里通常会设计有缓存(Cache)系统,来处理热门的请求(Query)重复计算的问题。而当Cache不命中的情况下,Online推荐运行一个运算简单可靠的算法,及时生成结果。Online系统后是Nearline系统,这个系统部署在服务端,一方面会接收Online系统发过来的请求,将Online计算的一些缓存结果,采用更复杂的算法重新计算并更新后更新缓存。另一方面Nearline是衔接Online和Offline系统的桥梁,因为Offline结果往往会挖掘长期的、海量的用户行为日志,消耗的资源大、挖掘周期长,但是Offline推荐系统计算所得的结果质量往往是最高的,这些结果会通过Nearline系统输送到线上,发挥作用。

 加权型混合推荐技术

从算法的角度来看,则最常用的是采用加权型的混合推荐技术,即将来自不同推荐算法生成的候选结果及结果的分数,进一步进行组合(Ensemble)加权,生成最终的推荐排序结果。
具体来看,比较原始的加权型的方法是根据推荐效果,固定赋予各个子算法输出结果的权重,然后得到最终结果。很显然这种方法无法灵活处理不同的上下文场景,因为不同的算法的结果,可能在不同的场景下质量有高有低,固定加权系统无法各取所长。所以更好的思路是设置训练样本,然后比较用户对推荐结果的评价、与系统的预测是否相符,根据训练得到的结果生成加权的模型,动态的调整权重。

加权混合的模型有很多,除了简单的线性模型外,常用的有回归模型(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)来扩展相邻用户集合。这种在算法设计阶段而不是特征利用或推荐结果合并阶段的混合技术,被成为推荐模型混合技术。
这种技术往往适用于数据稀疏或质量较差时,单个推荐模型结果都比较差的情况。此时对多个较差的模型的最终结果进行合并无法获得满意的结果(因为候选结果都比较差),因此提前在模型计算阶段进行算法思路的合并,这样能提前召回好的结果,提升推荐效果。

整体式混合推荐框架

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

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如今大数据已经成了各大互联网公司工作的重点方向,而推荐系统可以说就是大数据最好的落地应用之一,已经为企业带来了可观的用户流量和销售额。特别是对于电商,好的推荐系统可以大大提升电商企业的销售业绩。国内外的知名电商,如亚马逊、淘宝、京东等公司,都在推荐系统领域投入了大量研发力量,也在大量招收相关的专业人才。打造的电商推荐系统项目,就是以经过修改的中文亚马逊电商数据集作为依托,并以某电商网站真实的业务架构作为基础来实现的,其中包含了离线推荐与实时推荐体系,综合利用了协同过滤算法以及基于内容的推荐方法来提供混合推荐。具体实现的模块主要有:基于统计的离线推荐、基于隐语义模型的离线推荐、基于自定义模型的实时推荐,以及基于内容的、和基于Item-CF的离线相似推荐。整个项目具有很强的实操性和综合性,对已有的大数据和机器学习相关知识是一个系统性的梳理和整合,通过学习,同学们可以深入了解推荐系统在电商企业中的实际应用,可以为有志于增加大数据项目经验的开发人员、特别是对电商业务领域感兴趣的求职人员,提供更好的学习平台。适合人群:1.有一定的 Java、Scala 基础,希望了解大数据应用方向的编程人员2.有 Java、Scala 开发经验,了解大数据相关知识,希望增加项目经验的开发人员3.有电商领域开发经验,希望拓展电商业务场景、丰富经验的开发人员4.有较好的数学基础,希望学br习机器学习和推荐系统相关算法的求职人员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值