查看原文
其他

FAE:阿里妈妈归因分析与用户增长分析引擎

潘明亮 阿里妈妈技术 2023-04-04


本文为「DataFunSummit:多维分析架构峰会」演讲实录

编辑整理:杨丽 大连理工大学

出品平台:DataFunTalk


导读:各位朋友大家好,我是潘明亮,来自阿里妈妈数据平台,主要负责广告数据计算引擎研发相关的工作。本文主要跟大家分享高性能分布式计算引擎FAE。FAE主要聚焦于用户行为分析和广告归因分析。在这些场景上,FAE的计算性能能够达到通用的OLAP引擎的一到两个数量级。具体内容包括:

  • 用户分析行为领域的技术挑战

  • FAE简介

  • 数据模型和系统架构

  • 应用场景和优化思路

01
用户行为分析领域的技术挑战

用户行为包括用户增强领域以及归因领域。

1. 营销领域的用户归因分析

用户发生一个事件序列,其归因行为是什么?在这个归因过程中,需要分清楚因和果。

  • 因:比如通常在做营销活动时,用户所看到的广告触点,这些触点包括曝光、点击或者其他任何能触达用户的方式。

  • 果:指的是广告主所期待的事件,比如注册、成交、收藏、加购物车或其他任何类似广告主所期待的行为。

归因分析的用途一般是用于衡量广告的投放效果或者营销活动的效果,例如:渠道ROI、创意优劣、人群定向精准性、用于制定广告预算分配。

营销归因分析所要产出的结果就是要把这些广告的转化结果分配到合适的广告触点上。这种分配的方式即归因模型,它有很多种,如Data-driven、First-Click等。归因分析的用途一般是用于衡量广告的投放效果或者营销活动的效果,例如:渠道ROI、创意优劣、人群定向精准性、用于制定广告预算分配。

2. 用增领域的用户行为分析

在用户增长领域的用户行为分析,主要回答以下问题:

  • 时间:什么时间段

  • 地点:在什么渠道、什么设备上、哪些活动中

  • 人物:多少人、哪些人、性别、新老客、访客标签

  • 事件:发生了什么事?注册、浏览、咨询、成交

用户行为分析的模型包括漏斗模型、留存模型、路径模型、画像模型、分布模型等。应用场景一般是用于产品流程的设计和优化、用户的增长和运营、高层的业务决策等。

3. 营销归因领域的技术挑战

归因的过程可以分解成几个步骤:

  • 第一步是条件的筛选,比如归因的过程是不是使用全部的广告触点,还是只用曝光归因,或点击归因?

  • 第二步是行为之间关联,而关联过程又有很多不同选择,例如你点击的商品和你转化的商品是不是一个商品?如果是则叫同商品归因,还有同品牌归因、同店铺归因等,这就叫关联规则。

  • 第三步是权重分配,这个过程体现在模型选择的多样性上。

  • 第四步是维度聚合,例如按照campaign、shop等其他的各种不同的维度。

  • 第五步是结果筛选,例如要筛一个新客还是老客。在这个过程中,几乎每一个环节用户都可以配置不同的条件,因此参数是没办法预测的。

公司之前也试图使用通用的OLAP系统来做,但是效果非常不理想。对于复杂的操作,基本无法在秒级产出。

4. 用户行为分析的特点

用户行为分析主要分为以下几个特点:

  • 第一个特点是它一定是基于人,分析的对象是访客,分析的过程聚焦在一个访客的内部,并且访客之间是没有关联的。

  • 第二个特点是有时序。无论是流程分析、漏斗分析,还是归因分析,一定要有时序。

  • 第三个特点是查询模式灵活。

  • 第四个特点是数据量非常巨大。比如一个广告主通常有百亿级的曝光数据,还有一些千亿级的行为触点、几十亿级的转化量量级。

  • 第五个特点是交互式的分析,分析是需要尝试各种条件的。比如用户有时想看品牌,有时想看店铺的规定,有时想看时间等,这些条件的组合量非常庞大,查询的延迟又要求在秒级或者毫秒级。

02
FAE简介

基于以上特点,阿里巴巴设计了FAE计算引擎,全称Fast Attribution Engine(快速归因引擎)。后来把它扩展到支持基于用户增长领域的模型。所以现在叫Fast Analytic Engine(快速分析引擎)。

FAE可以在十秒内完成百亿级广告触底归因分析,内置多种模型并支持用户自主扩展分析模型。主要特点包括:灵活、高性能、扩展性等;计算模式支持即席、离线和近实时三种模式。

FAE是一个分布式MPP计算引擎,聚焦于用户行为分析与广告归因分析,由阿里妈妈自主研发。FAE可以在十秒内完成百亿级广告触底归因分析,内置多种模型并支持用户自主扩展分析模型。主要特点包括:灵活、高性能、扩展性等;计算模式支持即席、离线和近实时三种模式。

与类似系统对比,例如Google解在决这个问题时,使用message + shasta系统;使用的技术存储结构是时间分片增量模型加预聚合;特点是近实时、物化视图、秒级,灵活性一般。百度使用的是Palo系统;使用的存储结构类似mesa;特点是查询基于impala、秒级等。还有一些开源的其他系统。FAE的存储结构是AFile,FAE的特点是数据量非常的大(百亿级),内置了很多模型,能支持较低的QPS,扩展性较强。

03
FAE的数据模型

FAE的数据模型是这个系统最关键的地方。这个数据模型称为AFile,全称Attribution File,已经申请了专利。用户行为分析的计算过程可以分为以下几步:

  • 第一步,把数据存到Mysql,或者存到任何其他的数据库中。例如第一条数据用户小明3月1号注册,表中还有很多其他的属性,这是他的行为事件。

  • 第二步,抽取用户数据。

  • 第三步,基于表中的事件,用户在做行为分析时,要先把数据按照用户的ID进行分组。例如要把小明的行为分一个组、小红的行为也要分成组。

  • 第四步,在ID内部要按照时间排序。比如3月1号、3月2号,按时间的升序或者降序进行排列。

  • 第五步,做udaf或者Map Reduce操作,然后基于这样的一个排好序的数据,就可以做上面提到的规律模型。

通常在大数据平台上,数据开发者在设计用户表时,按照用户ID把小明分布到一个节点上。但是小明的数据与小红的数据还是有可能混杂在一起。所以还是需要按照用户ID在计算时,把它们单独拆开。阿里巴巴想到的一个最基础的方法就是上述过程实际上没有必要在计算时完成,可以在数据导入时,作为导入的一部分。由此,设计了AFile存储结构,这样的存储结构,可以把事件预先存储起来,快速的定位因与果。

04
FAE的系统架构

FAE是围绕AFile数据结构来设计的,引入了四个不同的模块,如下:

  • 第一个模块叫master,master是对外的一个出口,matter可以部署很多个,相互之间没有任何的耦合关系,即完全是无状态的。

  • 第二个模块叫importer,importer是一个导入器,它可以从外部的ODPS导入数据。当用户发起导入任务时,首先由master发消息给importer,importer完成导入任务。同样一个任务可以分配多个importer来完成。

  • 第三个模块叫merger,在importer导入完成之后,会对数据进行分片,分片会被发送到各个节点上,每一个节点上部署一个merger。

  • 第四个模块叫worker,worker是一个计算节点。计算节点是指当用户来了一个query时,这个query将会由master分配给各个worker。worker加载本地的AFile进行快速的运算,运行相应的模型运算得到结果。最后进行一个按照树形的聚合结构发送到master,最后返回给用户。整个查询的过程在毫秒级或者几秒。

除了这四个主要的开发的模块之外,FAE还依赖Redis。Redis主要做元数据管理,有效利用资源。另外一个依赖是Mysql,Mysql主要是用来存储日志等辅助信息。辅助模块包括监控器以及与运维相关的模块。所以整体的架构是一个较为传统的MPP架构。

FAE现在支持两种模式。第一种模式是本地磁盘的模式,本地盘各个节点之间独自访问自己的磁盘,绝不会去访问别人的盘。同时还支持另外一种分布式的存储架构。在阿里巴巴内部这种分布式存储就叫盘古,在业界通常叫Network Attached Storage(NAS)。基于NAS的好处是节点数可以进行分组,并且是无限扩展。

05
FAE的应用场景与优化思路

1. 行为频次分析

行为频次分析场景主要是统计每个用户行为的次数。FAE中数据直接在导入时就已经按照用户ID分离,故其处理速度,通常能快十几到一百倍。

2. 人群流转模型

人群流转是指把用户做一个分层,即指现在一个用户是一个比较浅的接触层,接下来我要让他跟我有一定的关系,最后要变成一个购买之类的行为。那这种多种分层之间的流转的数据量级是非常大的,无法使用普通的机器做运算。所以阿里巴巴就做了一种压缩的数据结构。就是说在这种的基础之上,并不存储全量,只存储增量数据。增量数据是指相对于原始状态发生变化的数据。通过这样的方式,数据量级就可以压缩十倍或者几十倍了。

3. 路径分析

路径分析是指淘宝有很多广告渠道,比如有明星店铺、品专店铺等渠道。假设用户的广告投了一个明星店铺,又投了一个其他的品专店铺,可以看到具体的流转路径。

4. 留存分析

假设某天有一千三百个人浏览了我们的页面。在接下来第一天、第二天、第三天之后,这些人的后续行为有没有做点击或者其他行为。

5. 漏斗分析

漏斗分析,假设你要想分析一个商品,从时间轴上看,访问主页、访问详情页、产生购买行为的各个阶段的转化率是多少。

6. 基于行为的访客圈选

圈选是指把符合条件的访客给圈出来,圈出来之后做分析或者说做投放。基于行为的访客圈选指基于访客的行为圈选符合条件的访客。

06
问答环节

问:导入数据时,是增量导入还是全部导入?

答:增量导入,目前我们有实时导入与离线导入两个部分。离线导入是每天只导一次,但是每次需要导入百亿级数据;实时导入是持续导入,数据持续导入但每隔五分钟更新一次。

问:AFile中的时间顺序是在插入时保证的吗?

答:是的,插入时保证。AFile中有两份数据,一份是离线数据,一份是实时数据,然而这两份AFile数据不会重复,因为在更新离线数据时,会自动删除旧的实时数据,因为实时数据永远保留最新数据。

问:FAE是倾向于CPU密集型还是IO密集型?

答:这需要看FAE的查询是冷查询还是热查询,冷查询是IO密集型,热查询是CPU型查询。

今天的分享就到这里,感谢谢谢大家。

在文末分享、点赞、在看,给个3连击呗~


活动推荐:2021年8月15日,DataFunSummit:互联网核心应用算法峰会将如约而至。本次峰会的形式再次创新,由阿里妈妈与DataFun联合策划、DLP-KDD workshop主席团倾情参与,既包括顶会的学术研讨会、又有来自头部大厂的工业实践分享,专家云集,精彩不容错过!欢迎报名参加~



欢迎关注「阿里妈妈技术」,了解更多~

疯狂暗示↓↓↓↓↓↓↓

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存