企业级推荐系统为什么拆解为召回、排序两个阶段?
 
大家好,企业我是推荐系解为阶段强哥。一个热爱暴走、什拆读书、排序写作的企业人!
推荐算法从业者肯定知道,在企业级推荐系统中,推荐系解为阶段一般将推荐算法业务流程拆分为召回和排序两个阶段(有些公司还将排序分为粗排和精排,什拆我们这里不加区分了,排序见下面图)。企业为什么这么做呢?推荐系解为阶段这样做有什么好处吗?将推荐算法流程分为召回和排序两个阶段,好处是什拆非常多的,本文我们就从多个角度来解释这么做的排序价值主要体现在哪里。

在讲解之前,企业简单说一个召回和排序这两个阶段分别解决的推荐系解为阶段问题,方便大家更好地理解下面的什拆讲述。召回就是采用比较多的方法和策略从物品库中将用户可能喜欢的物品挑选出来,一般召回的是几十到几百个物品。排序阶段是将不同召回算法获得的结果采用一个统一的模型进行重新打分排序,将得分最高的云服务器提供商几十个作为最终的物品推荐给用户。通过召回,我们事先就从海量的全物品库中过滤出了少量的用户可能喜欢的物品了,这大大减少了排序阶段需要处理的物品数量。
讲解完了召回和排序两个阶段的作用,下面我们从4个维度来说明企业级推荐算法流程为什么拆解为召回和排序两个阶段。
1. 推荐算法流程解耦合
我们知道推荐系统是一个偏工程的计算机与机器学习的交叉学科,那么软件工程的一些思路和做法也是适合推荐系统的。将推荐算法流程拆分为召回和排序两个阶段,那么推荐算法就分解为两个相对独立的子系统了。我们可以分别对每个子系统进行迭代、优化、升级,出了问题也方便我们去分析、定位、排查、修复、优化。总之,拆分为两个系统,源码下载更易于进行系统开发与维护。软件工程的思路就是分而治之的思路,这个做法是跟软件工程的思路一脉相承的。
2. 有利于团队的分工协作
将推荐算法流程拆分为召回、排序两个阶段,这对于规模比较大的算法团队,也方便进行更精细化的任务安排和人员职能分派。让不同的人聚焦在某一个小的领域,这样更容易让员工在这个方向上做到极致。毕竟召回、排序的思路、方法、策略还有有差异的,让不同的人分工做不同的模块,更聚焦。
3. 可实现性上的考虑
随着深度学习技术的发展,免费信息发布网我们知道深度学习技术等复杂推荐模型可以达到比传统模型好得多的推荐效果。因此,大家肯定愿意去尝试更复杂的模型。但是复杂的模型在特征预处理、推断时间花费、推荐服务延迟等方面相对传统简单的模型有更高的要求。这里举个推断时间花费的例子,在一个用户规模和物品规模都非常大的应用场景中(比如抖音、淘宝等),用一个复杂的深度学习模型去对每个用户物品组合进行打分是非常耗时的,也是不现实的。如果召回阶段事先筛选出了少量的用户可能喜欢的物品,那么排序阶段的工作量就小了很多了。
另外,目前信息流推荐是推荐系统的标配技术了,在实时推荐场景下,对时效性的要求就更高了。推荐算法进行拆解对于近实时完成推荐推断过程是非常关键、必不可少的。
4. 提升推荐精准度上的考虑
将推荐算法流程拆分为召回和排序两个阶段。那么每个阶段可以解决本阶段的核心问题。最终可以更好地提升推荐的精准度。下面分别加以说明。
推荐系统召回阶段的主要目标是将用户可能喜欢的物品筛选出来,目的是不要漏掉用户可能会喜欢的物品。一般召回阶段可以采用很多的方法进行召回,比如基于内容标签的召回、基于用户画像的召回、基于用户最近行为的召回、基于热门的召回、基于地域(或者位置)的召回、基于特殊事件的召回、基于时间的召回、基于协同过滤的召回等等(参考下图)。不同召回算法考虑的是用户兴趣点的某个方面,那么用多种召回算法就可以更好地覆盖用户更多样化的兴趣点,最终将用户所有喜欢的物品筛选出来,避免遗漏掉重要的兴趣点。

排序阶段只对少量的、召回阶段筛选出的物品进行打分,因而可以选择效果好的、复杂的算法模型(比如深度学习模型等)。在这一阶段我们可以将精力聚焦在模型的效果上。
如果用统计误差的思路来看召回、排序这个拆解过程,那么每个召回算法相当于一次随机变量的抽样(抽样的是用户的兴趣这个随机变量),由于自身方法的原因,每个召回算法是有一定误差的,不同的召回算法的误差方向是不一样的 。那么当我们在排序阶段将所有召回算法的结果汇聚起来时,各个召回算法的误差是可能相互抵消的,最终可以获得更精准的推荐结果。
推荐系统将算法流程分解为召回排序两个阶段,这个做法也可以用集成学习的思路解释:通过多个模型的集成,获得整体更优的效果。召回阶段就是利用了多个模型,可能每个模型刻画的是用户兴趣的某个方面,它不太准,但是没关系,只要找准了用户的某个兴趣点就够了。我们在排序阶段会将这些召回算法的结果整合起来,获得最终的最有利于描述用户兴趣的结果。
上面我们从4个角度来说明了为什么企业级推荐系统的推荐算法流程要拆解为召回、排序两个阶段。希望通过本文的学习,读者可以更好地理解这种设计的哲学,同时,也希望读者可以更加深入地理解推荐算法流程。
相关文章
佳能50D配18-55镜头的完美搭配(出色成像,多功能应用,超值选择)
摘要:佳能50D相机搭配18-55镜头是许多摄影爱好者的选择,这一组合能够提供出色的成像效果和多功能的应用。本文将从不同角度对这一组合进行评价和分析,帮助读者更好地了解这款产品。...2025-11-04
嵌套事务、挂起事务,Spring 是怎样给事务又实现传播特性的?
Spring 做为风靡世界的Java 开源框架,发挥着举足轻重的作用。那你有没有想过, Spring 内部又是怎么样实现的事务呢?而且 在 Spring 之中除了设置事务的「隔离级别」之外,还可以额外2025-11-04
7月25日,中国科学院大学公布了该校首期“一生一芯”计划成果。该成果在国内首次以流片为目标,由五位2016级本科生主导完成了一款64位RISC-V处理器SoC芯片的设计并实现了流片。芯片可以成功运行L2025-11-04
一款vue编写的功能强大的swagger-ui,有点秀(附开源地址)
wagger-ui有非常多的版本,觉得不太好用,用postman,每个接口都要自己进行录入。所以在基于think-vuele进行了swagger格式json的解析,自己实现了一套swaggerui界面2025-11-04Flyme5.1.6.0a(打造独特个性化的手机主题,尽享视觉盛宴)
摘要:在当今智能手机时代,个性化已经成为了用户对手机的一个基本要求。Flyme5.1.6.0a作为一款强大的主题定制平台,不仅为用户提供了海量的主题选择,而且还可以满足用户对手机外观和功...2025-11-04
如何设计一个支撑高并发大流量的系统?这次我将设计思路分享给大家!
作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验2025-11-04

最新评论