美团配送A/B评估体系建设与实践

即时配送的三要素是“效率”、“成本”、“体验”,通过精细化的策略迭代来提升效率,降低成本,提高体验,不断地扩大规模优势,从而实现正向循环。但是,策略的改变,不是由我们随便“拍脑袋”得出,而是一种建立在数据基础上的思维方式,数据反馈会告诉我们做的好不好,哪里有问题,以及衡量可以带来多少确定性的增长。

而A/B实验就是精细化迭代的一个“利器”,通过为同一个迭代目标制定两个或多个版本的方案,在同一时间维度,让组成成分相同(或相似)的A/B群组分别采用这些版本,然后收集各群组的体验数据和业务数据,最后分析、评估出最好的版本,帮助我们作出正确的决策,使迭代朝着更好的方向去演进。基于此,构建一个适用于配送业务的A/B平台就应运而生了。

1. A/B平台简介

如上图所示,A/B实验可以看作一个“无尽”的学习环,我们通过提出假设、定义成功指标、检验假设(A/B实验)、分析学习、发布、建立另一个假设,这就形成一个完整的闭环,通过多轮实验迭代,使策略趋于更优。基于上述对A/B实验划分的5个步骤,我们将A/B实验的完整生命周期分为三个阶段:

  • 实验前,提出该实验假设,定义实验成功的指标,确定分流策略;
  • 实验中,即验证假设的阶段,根据配置阶段的分流策略进行分流和埋点上报;
  • 实验后,进行实验分析与学习,并基于实验报告决定是否发布。

按照功能划分,我们将A/B平台分为三个模块,实验配置管理模块、分流以及埋点上报模块和在线分析模块,分别对应于A/B实验生命周期的实验前、实验中和实验后三个阶段。

在实验配置模块,用户可以基于实验前提出的假设、定义的成功指标快速创建实验,并基于特定的分流策略完成分流配置;分流以及埋点上报模块,提供JAR包接入的形式,异步获取实验配置进行本地分流计算和埋点上报;在线分析模块,依据用户在实验配置管理模块选取的用于说明实验效果的指标、分流埋点上报模块记录的日志,自动地产生各实验的实验报告,供实验观察者使用,然后根据实验效果帮助他们作出正确的决策。具体流程如下图所示:

2. 为什么要强调评估体系建设

2.1 分流业务场景需要

业界的A/B平台建设基本以《Overlapping Experiment Infrastructure: More, Better, Faster Experimentation》这篇论文为蓝本进行展开, 引入分层模型以及在分流算法中加入层编号因子来解决“流量饥饿”和“正交”问题,并且通过引入域的概念,支持域和层之间的相互嵌套,使分层实验模型更加灵活,进而满足多种场景下的A/B诉求。如下图所示,将流量通过Hash取模的方式即可实现流量的均匀划分。

这种是面向C端用户进行流量选择的传统A/B实验,采用上述的分流方式基于这样的假设:参与实验的流量因子是相互独立的、随机的,服从独立同分布。但是,配送业务场景下的A/B实验,涉及到用户、骑手、商家三端,请求不独立,策略之间相互影响并且受线下因素影响较大。

传统A/B实验的分流方式,无法保证分出的两个群组实验组和对照组的流量都是无差别的,无法避免因流量分配不平衡而导致的A/B群组差异过大问题,很容易造成对实验结果的误判。为满足不同业务场景的诉求,我们的A/B平台建设采取了多种分流策略,如下图所示:

针对策略之间的相互影响、请求不独立场景下的A/B实验,我们采取限流准入的分流方式,针对不同的实验,选取不同的分流因子。在实验前,我们通过AA分组,找出无差别的实验组和对照组,作为我们实验分流配置的依据,这种分流方式要求我们要有一套完整刻画流量因子的指标体系,只要刻画流量因子的指标间无统计显著性,我们就认为分出的实验组和对照组无差别。

2.2 业务决策的重要依据

在实验后的效果评估环节,通常允许实验者用自定义的指标来衡量不同策略带来的影响。但这样做会带来如下两个问题:

  • 首先,由实验者来负责实验效果的评估,很难做到客观。同时也无法避免实验者仅仅选择支持自己假设的指标,来证明自己的实验结论;
  • 其次,所有的策略迭代都是为业务服务,如果实验者用自定义的、与业务认知不一致的指标,来说明实验效果、推动业务灰度,这种方式往往难以被采纳。

因此,权威的评估体系对于对齐大家认知,并帮助我们在策略迭代方面作出正确的决策,尤为重要。

3. A/B评估体系构建

A/B评估体系的构建,要解决A/B平台两个核心问题:第一,要有一套用于刻画流量因子(区域、骑手、商家)的权威的、完备的指标体系,帮助实验者完成实验前的AA分组和实验后的效果评估;第二,要建立一套科学的评估方法,帮助实验者作出正确的决策。

3.1 权威完备的指标体系

指标的权威性体现在:刻画分流因子,用于实验前AA分组和证明实验假设的指标,必须经过治理且业务认知一致,这样才能对齐认知,使得实验结果更具说服力;指标的完备性体现在:评估体系中的指标,不仅要有经过第三方独立生产治理且各业务方认知一致的治理指标,而且还要有实验者为了更全面的分析,描述实验过程,自定义的探索指标。

整体架构

治理指标强调的是指标的权威性和生产的规范性,而探索性指标强调的是指标的多样性和生产的灵活性。在评估体系中要实现这两类指标的统一,既要包含用于说明实验效果的治理指标,又要包含帮助实验者更好迭代实验所需的探索指标。

为实现上述的统一,指标层面要有分级运营的策略:治理指标按照业务认知一致性和算法内部认知一致性分别定级为P0、P1,这一类指标在生产前必须要有严格的注册、评审,生产环节需要交给独立的第三方团队(数据团队)生产,保证指标的权威性,产出后打通指标与字段的映射关系,对用户屏蔽底层实现逻辑;对于探索性指标,定级为P2,强调的是生产的灵活性和快速实现,因此,它的生产就不宜带有指标注册和评审等环节。

为保证其快速实现,希望基于物理表和简单的算子配置就可以实现效果分析时即席查询使用。基于如上的问题拆解,我们进行了如下的架构设计:

数据集成

为了支持监控和分析,在数据集成环节,我们集成了实验配置数据、业务数据和染色数据,以便实验者在效果评估环节不仅可以查看流量指标(PV、UV和转化率),也可以深入探索策略变动对业务带来的影响。

对于那些在实验配置环节不能确定流量是否真正参加实验的场景(例如:选择了特定区域进行实验,该区域产生的单只有满足特定条件时才能触发实验),我们不能直接通过限制确定的区域来查看业务指标。因为此时查看的指标并不是真正参与实验的流量所对应的指标。因此在数据集成环节,我们同时将实验前的实验配置数据和实验中的染色数据(针对每个参与实验的流量,每次操作所产生的数据,都会打上实验场景、实验组以及具体的分组标记,我们该数据为染色数据)同步到数仓。

在数据基建环节,将业务数据模型和染色数据模型通过流量实体作为关联条件进行关联,构建实验粒度模型。

数据基建

在数据基建层,我们基于指标分级运营的思路,由数据团队和算法团队分别构建实体粒度(区域、骑手、GeoHash)和实验粒度的实体宽表模型,以满足P0/P1指标和P2指标的诉求;为实现指标的规范化建设和灵活建设的统一,在物理模型和对外提供应用的指标池之间,我们提供了元数据管理工具和模型配置工具,从而实现离线数据快速接入评估体系的指标池。

由数据团队建设的实体宽表模型,对应着治理指标(P0/P1指标),必须在生产后通过元数据管理工具完成指标与物理字段的映射,将指标的加工口径封装在数据层,对用户屏蔽物理实现,确保治理指标的一致性。由算法团队独立建设的实体宽表模型,对应着挖掘指标(P2指标),为确保其接入评估体系指标池的灵活性和方便性,我们在数据基建环节,通过标签的形式对指标口径做部分封装,在模型配置环节完成指标逻辑的最终加工。

元数据管理

元数据管理层,是实现指标权威性的关键。治理指标在本层实现注册、评审,达到业务认知一致性和算法内部认知一致性的目的。同时,本层还完成了治理指标与数据基建层物理模型之间的绑定,为后续的模型配置建立基础。

模型配置

模型配置工具,是打通物理模型与评估指标池的桥梁,它通过输入组件、操作组件和应用组件,将离线数据接入到评估体系中,满足实验前AA分组和实验后AB评估的需求。首先,输入组件可以对应不同的数据源,既可以接入治理的离线指标,也可以接入特定库下的物理表。其次,操作组件提供了分组操作、算子操作、过滤操作和测试操作,通过分组操作,确定模型包含的维度;通过算子操作,将算子作用在指标或标签字段上,在取数环节实现指标的二次计算;通过过滤操作,实现数据的过滤;通过测试操作,保证模型配置质量。最后,应用组件可以将配置的模型注册到不同的应用上,针对A/B场景主要是AA分组和AB评估。具体接入流程如下图所示:

3.2 科学权威的评估方式

评估报告的可靠和权威性主要体现在两个方面:一是评估指标的可靠性和权威性;二是评估方式的科学性。在上一节中,我们重点讨论了如何构建可靠权威的指标体系。在这一节,我们重点讨论如何进行科学的评估。

在讨论科学评估之前,我们再重温一下A/B实验的定义:A/B实验,简单来说,就是为同一个目标制定两个版本或多个版本的方案,在同一时间维度,分别让组成成分相同(相似)的A/B群组分别采用这些版本,收集各群组的体验数据和业务数据,最后分析、评估出最好版本,正式采用。其中A方案为现行的设计(称为控制组), B方案是新的设计(称为实验组)。分析A/B实验的定义,要实现科学权威的评估,最重要的两点在于:

  • 第一,确保在实验前分出无差别的实验组和对照组,避免因流量分配不平衡导致的AB群组差异过大,最终造成对于实验结果的误判;
  • 第二,确保对实验结果作出准确的判断,能够准确的判断新策略相对于旧策略的优势是不是由自然波动引起的,它的这一优势能否在大规模的推广中反映出来。

无论是实验前确保实验组和对照组流量无显著性差异,还是实验后新策略较旧策略的指标变动是否具有统计上的显著性,无一例外,它们都蕴含着统计学的知识。接下来,我们重点论述一下A/B实验所依赖的统计学基础以及如何依据统计学理论做出科学评估。

假设检验

两个假设

A/B实验是一种对比试验,我们圈定一定的流量进行实验,实验结束后,我们基于实验样本进行数据统计,进而验证实验前假设的正确性,我们得出这一有效结论的科学依据便是假设检验。假设检验是利用样本统计量估计总体参数的方法,在假设检验中,先对总体均值提出一个假设,然后用样本信息去检验这个假设是否成立。我们把提出的这个假设叫做原假设,与原假设对立的结论叫做备择假设,如果原假设不成立,就要拒绝原假设,进而接受备择假设。

两类错误

对于原假设提出的命题,我们需要作出判断,要么原假设成立,要么原假设不成立。因为基于样本对总体的推断,会面临着犯两种错误的可能:第一类错误,原假设为真,我们却拒绝了;第二类错误,原假设为伪,我们却接受了。显然,我们希望犯这两类错误的概率越小越好,但对于一定的样本量n,不能同时做到犯这两类错误的概率很小。

在假设检验中,就有一个对两类错误进行控制的问题。一般来说,哪一类错误所带来的后果严重、危害越大,在假设检验中就应该把哪一类错误作为首要的控制目标。在假设检验中,我们都执行这样一个原则,首先控制犯第一类错误的概率。这也是为什么我们在实际应用中会把要推翻的假设作为原假设,这样得出的结论更具说服力(我们有足够充分的证据证明原来确定的结论是错误的),所以通常会看到,我们把要证明的结论作为备择假设。

T检验

常见的假设检验方法有Z检验、T检验和卡方检验等,不同的方法有不同的适用条件和检验目标。Z检验和T检验都是用来推断两个总体均值差异的显著性水平,具体选择哪种检验由样本量的大小、总体的方差是否已知决定。在样本量较小且总体的方差未知的情况下,这时只能使用样本方差代替总体方差,样本统计量服从T分布,应该采用T统计量进行检验。T统计量具体构造公式如下图所示,其中f是T统计量的自由度,S1、S2是样本标准差。

T检验的流程是,在给定的弃真错误概率下(一般取0.05),依据样本统计量T是否落在拒绝域来判断接受还是拒绝原假设。实际上在确定弃真错误概率以后,拒绝域的位置也就相应地确定了。

使用T统计量进行判断的好处是,进行决策的界限清晰,但缺陷是决策面临的风险是笼统的。例如T=3落入拒绝域,我们拒绝原假设,犯弃真错误的概率为0.05;T=2也落入拒绝域,我们拒绝原假设,犯弃真错误的概率也是0.05。事实上,依据不同的统计量进行决策,面临的风险也是有差别的。为了精确地反映决策的风险度,我们仍然需要P值来帮助业务来做决策。

利用P值决策

P值即统计功效函数,当原假设为真时,所得到的样本观察结果或更极端的结果出现的概率。如果P值很小,说明这种情况发生的概率很小,但是在这次试验中却出现了,根据小概率原理,我们有理由拒绝原假设,P值越小,我们拒绝原假设的理由越充分。P值可以理解为犯弃真错误的概率,在确定的显著性水平下(一般取0.05),P值小于显著性水平,则拒绝原假设。

基于假设检验的科学评估

围绕着科学评估要解决的两个问题,实验前,针对圈定的流量使用假设检验加上动态规划算法,确保分出无差别的实验组和对照组;实验后,基于实验前选定的用于验证假设结论的指标,构造T统计量并计算其对应的P值,依据P值帮我们做决策。

AA分组

展开阅读全文

本文系作者在时代Java发表,未经许可,不得转载。

如有侵权,请联系nowjava@qq.com删除。

编辑于

关注时代Java

关注时代Java