2019年5月6日,美团点评正式推出新品牌“美团配送”,发布了美团配送新愿景:“天天完成一亿次值得信赖的配送服务,成为不可或缺的生活基础设施。”如今,美团配送已经服务于全国400多万商家和4亿多用户,覆盖2800余座市县,日活跃骑手超过70万人,成为全球领先的分钟级配送网络。算法
即时配送的三要素是“效率”、“成本”、“体验”,经过精细化的策略迭代来提高效率,下降成本,提升体验,不断地扩大规模优点,从而实现正向循环。可是,策略的改变,不是由咱们随便“拍脑壳”得出,而是一种创建在数据基础上的思惟方式,数据反馈会告诉咱们作的好很差,哪里有问题,以及衡量能够带来多少肯定性的增加。而A/B-test就是咱们精细化迭代的一个“利器”,经过为同一个迭代目标制定两个或多个版本的方案,在同一时间维度,让组成成分相同(或类似)的A/B群组分别采用这些版本,而后收集各群组的体验数据和业务数据,最后分析、评估出最好的版本,帮助咱们做出正确的决策,使迭代朝着更好的方向去演进。基于此,构建一个适用于配送业务的A/B平台就应运而生了。微信
如上图所示,A/B实验能够看做一个“无尽”的学习环,咱们经过提出假设、定义成功指标、检验假设(A/B实验)、分析学习、发布、创建另外一个假设,这就造成一个完整的闭环,经过多轮实验迭代,使策略趋于更优。基于上述对A/B实验划分的5个步骤,咱们将A/B实验的完整生命周期分为三个阶段:网络
按照功能划分,咱们将A/B平台分为三个模块,实验配置管理模块、分流以及埋点上报模块和在线分析模块,分别对应于A/B实验生命周期的实验前、实验中和实验后三个阶段。在实验配置模块,用户能够基于实验前提出的假设、定义的成功指标快速建立实验,并基于特定的分流策略完成分流配置;分流以及埋点上报模块,提供JAR包接入的形式,异步获取实验配置进行本地分流计算和埋点上报;在线分析模块,依据用户在实验配置管理模块选取的用于说明实验效果的指标、分流埋点上报模块记录的日志,自动地产生各实验的实验报告,供实验观察者使用,而后根据实验效果帮助他们做出正确的决策。具体流程以下图所示:架构
业界的A/B平台建设基本以《Overlapping Experiment Infrastructure: More, Better, Faster Experimentation》这篇论文为蓝本进行展开, 引入分层模型以及在分流算法中加入层编号因子来解决“流量饥饿”和“正交”问题,而且经过引入域的概念,支持域和层之间的相互嵌套,使分层实验模型更加灵活,进而知足多种场景下的A/B诉求。以下图所示,将流量经过Hash取模的方式便可实现流量的均匀划分。app
这种是面向C端用户进行流量选择的传统A/B实验,采用上述的分流方式基于这样的假设:参与实验的流量因子是相互独立的、随机的,服从独立同分布。可是,配送业务场景下的A/B实验,涉及到用户、骑手、商家三端,请求不独立,策略之间相互影响而且受线下因素影响较大。传统A/B实验的分流方式,没法保证分出的两个群组实验组和对照组的流量都是无差异的,没法避免因流量分配不平衡而致使的A/B群组差别过大问题,很容易形成对实验结果的误判。为知足不一样业务场景的诉求,咱们的A/B平台建设采起了多种分流策略,以下图所示:异步
针对策略之间的相互影响、请求不独立场景下的A/B实验,咱们采起限流准入的分流方式,针对不一样的实验,选取不一样的分流因子。在实验前,咱们经过AA分组,找出无差异的实验组和对照组,做为咱们实验分流配置的依据,这种分流方式要求咱们要有一套完整刻画流量因子的指标体系,只要刻画流量因子的指标间无统计显著性,咱们就认为分出的实验组和对照组无差异。工具
在实验后的效果评估环节,一般容许实验者用自定义的指标来衡量不一样策略带来的影响。但这样作会带来以下两个问题:学习
所以,权威的评估体系对于对齐你们认知,并帮助咱们在策略迭代方面做出正确的决策,尤其重要。测试
A/B评估体系的构建,要解决A/B平台两个核心问题:优化
指标的权威性体如今:刻画分流因子,用于实验前AA分组和证实实验假设的指标,必须通过治理且业务认知一致,这样才能对齐认知,使得实验结果更具说服力;指标的完备性体如今:评估体系中的指标,不只要有通过第三方独立生产治理且各业务方认知一致的治理指标,并且还要有实验者为了更全面的分析,描述实验过程,自定义的探索指标。
3.1.1 总体架构
治理指标强调的是指标的权威性和生产的规范性,而探索性指标强调的是指标的多样性和生产的灵活性。在评估体系中要实现这两类指标的统一,既要包含用于说明实验效果的治理指标,又要包含帮助实验者更好迭代实验所需的探索指标。
为实现上述的统一,指标层面要有分级运营的策略:治理指标按照业务认知一致性和算法内部认知一致性分别定级为P0、P1,这一类指标在生产前必需要有严格的注册、评审,生产环节须要交给独立的第三方团队(数据团队)生产,保证指标的权威性,产出后打通指标与字段的映射关系,对用户屏蔽底层实现逻辑;对于探索性指标,定级为P2,强调的是生产的灵活性和快速实现,所以,它的生产就不宜带有指标注册和评审等环节。为保证其快速实现,但愿基于物理表和简单的算子配置就能够实现效果分析时即席查询使用。基于如上的问题拆解,咱们进行了以下的架构设计:
3.1.2 数据集成
为了支持监控和分析,在数据集成环节,咱们集成了实验配置数据、业务数据和染色数据,以便实验者在效果评估环节不只能够查看流量指标(PV、UV和转化率),也能够深刻探索策略变更对业务带来的影响。对于那些在实验配置环节不能肯定流量是否真正参加实验的场景(例如:选择了特定区域进行实验,该区域产生的单只有知足特定条件时才能触发实验),咱们不能直接经过限制肯定的区域来查看业务指标。由于,此时查看的指标并非真正参与实验的流量所对应的指标。所以在数据集成环节,咱们同时将实验前的实验配置数据和实验中的染色数据(针对每一个参与实验的流量,每次操做所产生的数据,都会打上实验场景、实验组以及具体的分组标记,咱们该数据为染色数据)同步到数仓。在数据基建环节,将业务数据模型和染色数据模型经过流量实体做为关联条件进行关联,构建实验粒度模型。
3.1.3 数据基建
在数据基建层,咱们基于指标分级运营的思路,由数据团队和算法团队分别构建实体粒度(区域、骑手、GeoHash)和实验粒度的实体宽表模型,以知足P0/P1指标和P2指标的诉求;为实现指标的规范化建设和灵活建设的统一,在物理模型和对外提供应用的指标池之间,咱们提供了元数据管理工具和模型配置工具,从而实现离线数据快速接入评估体系的指标池。由数据团队建设的实体宽表模型,对应着治理指标(P0/P1指标),必须在生产后经过元数据管理工具完成指标与物理字段的映射,将指标的加工口径封装在数据层,对用户屏蔽物理实现,确保治理指标的一致性。由算法团队独立建设的实体宽表模型,对应着挖掘指标(P2指标),为确保其接入评估体系指标池的灵活性和方便性,咱们在数据基建环节,经过标签的形式对指标口径作部分封装,在模型配置环节完成指标逻辑的最终加工。
3.1.4 元数据管理
元数据管理层,是实现指标权威性的关键。治理指标在本层实现注册、评审,达到业务认知一致性和算法内部认知一致性的目的。同时,本层还完成了治理指标与数据基建层物理模型之间的绑定,为后续的模型配置创建基础。
3.1.5 模型配置
模型配置工具,是打通物理模型与评估指标池的桥梁,它经过输入组件、操做组件和应用组件,将离线数据接入到评估体系中,知足实验前AA分组和实验后AB评估的需求。首先,输入组件能够对应不一样的数据源,既能够接入治理的离线指标,也能够接入特定库下的物理表。其次,操做组件提供了分组操做、算子操做、过滤操做和测试操做,经过分组操做,肯定模型包含的维度;经过算子操做,将算子做用在指标或标签字段上,在取数环节实现指标的二次计算;经过过滤操做,实现数据的过滤;经过测试操做,保证模型配置质量。最后,应用组件能够将配置的模型注册到不一样的应用上,针对A/B场景主要是AA分组和AB评估。具体接入流程以下图所示:
评估报告的可靠和权威性主要体如今两个方面:一是评估指标的可靠性和权威性;二是评估方式的科学性。在上一节中,咱们重点讨论了如何构建可靠权威的指标体系。在这一节,咱们重点讨论如何进行科学的评估。
在讨论科学评估以前,咱们再重温一下A/B实验的定义:A/B实验,简单来讲,就是为同一个目标制定两个版本或多个版本的方案,在同一时间维度,分别让组成成分相同(类似)的A/B群组分别采用这些版本,收集各群组的体验数据和业务数据,最后分析、评估出最好版本,正式采用。其中A方案为现行的设计(称为控制组), B方案是新的设计(称为实验组)。分析A/B实验的定义,要实现科学权威的评估,最重要的两点在于:
不管是实验前确保实验组和对照组流量无显著性差别,仍是实验后新策略较旧策略的指标变更是否具备统计上的显著性,无一例外,它们都蕴含着统计学的知识。接下来,咱们重点论述一下A/B实验所依赖的统计学基础以及如何依据统计学理论作出科学评估。
3.2.1 假设检验
3.2.1.1 两个假设
A/B测试是一种对比试验,咱们圈定必定的流量进行实验,实验结束后,咱们基于实验样本进行数据统计,进而验证明验前假设的正确性,咱们得出这一有效结论的科学依据即是假设检验。假设检验是利用样本统计量估计整体参数的方法,在假设检验中,先对整体均值提出一个假设,而后用样本信息去检验这个假设是否成立。咱们把提出的这个假设叫作原假设,与原假设对立的结论叫作备择假设,若是原假设不成立,就要拒绝原假设,进而接受备择假设。
3.2.1.2 两类错误
对于原假设提出的命题,咱们须要做出判断,要么原假设成立,要么原假设不成立。由于基于样本对整体的推断,会面临着犯两种错误的可能:第一类错误,原假设为真,咱们却拒绝了;第二类错误,原假设为伪,咱们却接受了。显然,咱们但愿犯这两类错误的几率越小越好,但对于必定的样本量n,不能同时作到犯这两类错误的几率很小。
在假设检验中,就有一个对两类错误进行控制的问题。通常来讲,哪一类错误所带来的后果严重、危害越大,在假设检验中就应该把哪一类错误做为首要的控制目标。在假设检验中,咱们都执行这样一个原则,首先控制犯第一类错误的几率。这也是为何咱们在实际应用中会把要推翻的假设做为原假设,这样得出的结论更具说服力(咱们有足够充分的证据证实原来肯定的结论是错误的),因此一般会看到,咱们把要证实的结论做为备择假设。
3.2.1.3 T检验
常见的假设检验方法有Z检验、T检验和卡方检验等,不一样的方法有不一样的适用条件和检验目标。Z检验和T检验都是用来推断两个整体均值差别的显著性水平,具体选择哪一种检验由样本量的大小、整体的方差是否已知决定。在样本量较小且整体的方差未知的状况下,这时只能使用样本方差代替整体方差,样本统计量服从T分布,应该采用T统计量进行检验。T统计量具体构造公式以下图所示,其中f是T统计量的自由度,S一、S2是样本标准差。
T检验的流程是,在给定的弃真错误几率下(通常取0.05),依据样本统计量T是否落在拒绝域来判断接受仍是拒绝原假设。实际上在肯定弃真错误几率之后,拒绝域的位置也就相应地肯定了。使用T统计量进行判断的好处是,进行决策的界限清晰,但缺陷是决策面临的风险是笼统的。例如T=3落入拒绝域,咱们拒绝原假设,犯弃真错误的几率为0.05;T=2也落入拒绝域,咱们拒绝原假设,犯弃真错误的几率也是0.05。事实上,依据不一样的统计量进行决策,面临的风险也是有差异的。为了精确地反映决策的风险度,咱们仍然须要P值来帮助业务来作决策。
3.2.1.4 利用P值决策
P值是当原假设为真时,所获得的样本观察结果或更极端的结果出现的几率。若是P值很小,说明这种状况发生的几率很小,可是在此次试验中却出现了,根据小几率原理,咱们有理由拒绝原假设,P值越小,咱们拒绝原假设的理由越充分。P值能够理解为犯弃真错误的几率,在肯定的显著性水平下(通常取0.05),P值小于显著性水平,则拒绝原假设。
3.2.2 基于假设检验的科学评估
围绕着科学评估要解决的两个问题,实验前,针对圈定的流量使用假设检验加上动态规划算法,确保分出无差异的实验组和对照组;实验后,基于实验前选定的用于验证假设结论的指标,构造T统计量并计算其对应的P值,依据P值帮咱们作决策。
3.2.2.1 AA分组
首先看如何解决第一个问题:避免因流量分配不平衡,A/B组自己差别过大形成对实验结果的误判。为解决该问题,咱们引入了AA分组:基于实验者圈定的流量,经过AA分组将该流量分为无显著性差别的实验组和对照组。咱们这样定义无显著性差别这一约束:首先,实验者选取的用于刻画实验流量的指标,在实验组和对照组之间无统计上的显著性(即上节所描述的基于均值的假设检验);其次,在所分出的实验组和对照组之间,这些指标的差值最小,即一个寻找最优解的过程。从实验者的实验流程看,在实验前,圈定进入该实验的流量,而后肯定用于刻画实验流量的指标,最后调用AA分组,为其将流量分红合理的实验组和对照组。
3.2.2.2 A/B效果评估
A/B效果评估是实验者在实验后,依据评估报告进行决策的重要依据。 所以,咱们在实验后的效果评估环节,效果评估要达成三个目标即权威、灵活性和方便。首先,权威性体如今用于做出实验结论所依赖的指标都是通过治理、各方达成一致的指标,而且确保数据一致性,最终经过假设检验给出科学的实验结论,帮助实验者做出正确的判断。其次,灵活性主要体如今采用列转行的形式,按需自动生成报表告别“烟囱式”的报表开发方式。第三,方便主要体如今不只能够查看用于说明实验效果的指标,还能够选择查看接入到评估体系里的任意指标;不只能够查看其实验先后对比以及趋势变化,还能够作到从实验粒度到流量实体粒度的下钻。效果以下图所示:
3.2.2.3 技术实现
无论是实验前的AA分组,仍是实验后的效果评估,咱们要解决的一个核心问题就是如何灵活地“取数”,为咱们的AA分组和AB效果分析提供一个灵活稳定的取数服务。所以,咱们整个架构的核心就是构建稳定、灵活的取数服务,具体架构以下图所示。离线建模和指标模型管理完成数据和元数据建设,创建权威完备的指标体系;中间的取数服务做为上层各应用服务和指标体系的“桥梁”,为上层各应用服务提供其所依赖的指标。
目前,A/B测试已成为许多互联网公司评估其新产品策略和方法的“金标准”,在美团配送业务场景下,它被普遍应用于调度策略、订价策略、运力优化、ETA时间预估等业务场景,为咱们的策略迭代制定数据驱动型决策。特别是针对配送场景下这种策略之间相互影响,请求不独立场景下的A/B实验,结合配送技术团队的具体实践,跟你们分享了咱们目前的解决思路。
最后再补充一点,在A/B测试领域,实验的流量规模应该有足够的统计能力,才能确保指标的变化有统计意义的,为了更好地达到这个目标,将来咱们将经过辅助工具建设,在实验前,依据实验者所关注的指标以及敏感度给出流量规模的建议,方便实验者在实验前快速地圈定其实验所需的流量。
阅读更多技术文章,请扫码关注微信公众号-美团技术团队!