1. 引言
A/B实验(又称A/B测试)是一种通过对比不同方案效果来优化决策的科学方法,其核心在于控制单一变量并基于数据验证假设。一份用于数据分析的A/B实验报表通常包含许多维度的指标,以用户活跃量为例,其相关的指标维度可能有用户地区/国家、用户性别、用户操作系统、用户使用频率等,该报告可以让数据分析师掌握该指标的变化情况并用相关指标粗步定位变化原因。该报表被分为空转期与实验期,空转期选定实验组和对照组但不进行任何改动,旨在确认所选两组不存在天然差别,实验期给实验组引入决策改动,对照组不变,旨在对比观察该改动产生的影响。如若关注的指标异动,一般是在实验期开始时异动,故我们关注的指标可以视为多维时间序列数据。
在A/B实验的实验期,如果我们所关注的指标实验组与对照组出现显著差异,即P值小于0.05,我们称这个指标在实验期出现异常波动。
在A/B实验的实验期,有时会需要对某个指标的显著异常波动进行深入分析,这里的异常波动有时会难以分析,原因有以下两点:
1) 异常波动的趋势与实验前的预期不符,比如实验前预期该指标会上升,但实际上在实验期该指标持平或者下降了。
2) 无法直接从报表所包含的指标维度定位我们关注的指标异常波动的根本原因。
当出现这两种情况,需要分析师们手动去拆解更多更细的维度,甚至需要对多个维度进行组合来确定指标异动的根本原因,这需要花费大量的时间与精力,且更多依赖经验去拆解,准确度低。
我们访谈了几位百度的数据分析师,他们表示:在当前的工作实践中,经常会遇到这种指标异常波动问题,此时选择有效的维度组合进行深入分析将在很大程度上依赖于过往经验,且手动组合分析多个维度的相关指标异常繁琐,时间成本高。例如,他们会从数据库中提取并组合他们认为会有问题的组合维度指标,并使用excel的数据透视表来找寻可能导致指标异动的根原因。
本文提出了MAAIA方法,用以帮助数据分析师自动化地找出指标异动的根原因,即使根原因为多维度组合的属性,该方法也能准确定位。
指标异动可以分为两部分:异动前部分和异动部分,对应A/B实验的空转期和实验期。指标异动根原因定位问题可以表述为:寻找一个可以定位指标异动根原因的属性组合。由于属性组合可能会产生维度爆炸,导致组合的数量级过于庞大,MAAIA方法设计了多种剪枝技术来显著缩小选择空间。
MAAIA方法已在多个真实实验上进行了实验,以评估这种方法的有效性,MAAIA方法还成功应用于百度某业务的实验评估分析中,证实了该方法在工业实践中的实用性。
本文贡献如下:
(1) 提出MAAIA方法,将其应用于A/B实验的指标异动归因中,支持高效准确地定位指标异动的根原因,甚至是多维根原因。
(2) 将指标分为数值型指标与比例型指标,分别为其设计了不同的剪枝与排序方法,充分考虑了两种指标的共性与特性,使得MAAIA方法具有更广的作用面。
(3) 通过多个内部真实实验对MAAIA方法进行了评估,并应用于百度的实际生产环境中,证实了该方法的有效性、实用性、高效性。
本文其余部分结构如下:第2节介绍了本文的研究动机;第3节定义了现存问题以及需求;第4节介绍了MAAIA方法的具体内容并给出伪代码;第5节用一个工业实例证明MAAIA方法的准确性和高效性;第6节为对论文的总结与对论文未来的展望。
2. 研究动机
2.1. 实例
本文的研究源自于百度进行A/B实验分析的实际需求,数据分析团队每天都会分析许多实验,经常会遇到指标异动的情况,如图1所示是一个指标异动时实验组和对照组的情况。

Figure 1. Example of indicator anomalies
图1. 指标异动实例

Table 1. Example of user partial attribute data
表1. 用户部分属性数据示例
在图1中绿色线条为对照组数据,蓝色线条为实验组数据,20250728之前为空转期,20250728之后为实验期,我们可以观察到在空转期实验组和对照组指标基本一致,但是到实验期,实验组和对照组存在非常显著的差异,如何定位这个差异的根原因,这就是本文MAAIA方法的作用。
表1展示了一个多维度的数据样本,表中每一行包含表示一个百度用户一些基本使用情况,包括用户id (user_id),使用日期(date),实验/对照组(group),年龄(age),城市分类(city tier),手机操作系统(operating system),手机品牌(brand)等,每个维度又不同可能的值,从不同维度描述用户的使用情况。例如“城市级别(city tier)”属性描述了该用户是来自几线城市。
如第1节所述,想要得到造成指标异动的根原因,也就是找到对指标异动贡献度高的多维属性组合,这需要将这种高贡献的多维组合与其他组合隔离开。
2.2. 挑战
在当前的实验分析中,为了得到指标异动的根原因,数据分析师们往往会手动从数据库中提取多个根据经验得到的细粒度指标,再在excel中通过数据透视表手动组合多个维度,以此探索指标异动的根原因。然而这种方法存在许多弊端:
(1) 效率低下:如果需要组合多个维度深入分析,那么维度的组合数量会爆炸式增长,此时手动分析成本巨大甚至是无法完成。例如,我们假设有10个属性,每个属性有10个值,我们将会有
种属性组合,这显然不是可以通过手动筛查的工作量。
(2) 准确性低:通常分析师们筛选需要手动分析的维度组合时,他们会根据经验进行拆解,这并不能完全准确的定位到根原因,甚至可能会定位到完全不相关的维度组合,导致分析成本大且结果不一定准确。
为了自动识别指标异动的根原因,仅靠简单的频繁项集挖掘(Lin等[1])显然是不够的。结合表1和图1,可以得到指标异动的数据有两个特征:一是可以分成空转期和实验期,这具有一定程度上时序性;二是每条数据包含多个维度,它是一个多维数据。因此,指标异动数据可以看做多维数据与时序数据的结合。
综上,自动化的指标异动归因工具已经成了目前进行A/B实验分析的迫切需求,这促使设计出一种新的方法,来高效且正确的确定指标异动的根原因。
3. 问题定义
3.1. 根原因维度组合
应A/B实验深入分析的需求,本文设计出了MAAIA方法,用于自动识别出指标异动的根原因组合,由于属性组合存在维度爆炸的问题,因此如何对维度组合进行剪枝并找到根原因组合是这个方法面临的挑战。
我们先来了解一下维度组合中的超集与子集:
· 超集:如果集合X包含集合Y的所有元素,那么集合X被称为集合Y的超集。例如图2中维度组合AB是维度组合ABC的超集
· 子集:如果一个集合X的所有元素都是另一个集合Y的元素,那么集合X被称为集合Y子集。例如图2中维度组合ABC是维度组合AB和维度组合AC的子集。
图2是一个维度组合的例子,其中不同的字母表示不同的维度,圆形节点表示非根原因维度组合,三角形节点表示根原因维度组合。根原因维度组合意味着这个维度组合与我们关注的指标异动直接相关,对指标异动贡献很大,且根原因的异动会导致其子集也出现一定的波动,这对识别根原因也会造成一定的阻碍。例如一线城市的用户活跃量上升,会带动一线城市的男性用户活跃量上升。如何准确的识别根原因是一线城市还是一线城市男性,也是我们需要解决的问题。
图2. 维度组合
3.2. 需求
经过上文讨论,可以为根原因维度组合确定以下需求:
· 影响规模较大:识别出的根原因维度组合应对所关注的异动指标具有直接且规模较大的影响。
· 隔离能力强:识别出的根原因组合应能与其他非根原因组合区分开,意味着所关注的指标异动会带动根原因组合相应指标同趋势波动,但是其他非根原组合的响应指标并不会有同趋势波动,或者同趋势波动不如根原因组合显著。
· 低冗余性:我们识别出的根原因组合应该尽量简洁精炼,冗余的结果会降低精确性并浪费时间,比如根原因组合是一线城市男性,就不要出现定位到一线城市青年男性上的情况;或者根原因是一线城市男性,但是青年女性也对我们关注的指标异动有较小贡献,此时我们应该识别根原因为一线城市男性而不是青年女性。
4. 解释及使用场景
MAAIA方法的流程图如图3所示。

Figure 3. Flow chart of the MAAIA Method
图3. MAAIA方法流程图
4.1. 基于异动量剪枝
为了缓解维度爆炸并有效的缩减搜索空间,达到快速准确地找到根原因组合的目的,剪枝是必然需要进行的。
首先,应该去除那些对所关注的指标在量级上没有影响或者影响很小的维度组合,这可以极大地缓解维度爆炸。例如在一线城市的男性用户活跃量实验组比对照组多100,这个差值过小,所以我们去掉这个组合。
基于异动量剪枝需要确定一个阈值,当一个组合在实验期实验组的用户活跃量减去实验期对照组的用户活跃量的差值的绝对值大于这个阈值时,保留该组合。现在的问题是如何确定这个阈值。
不同的指标在量级上差距极大比如用户活跃量和每日浏览总时长差了好几个数量级,此时必然不能使用同一个阈值进行剪枝。我们希望找到一种可以根据不同的指标量级确定不同基于影响面剪枝的阈值的方法。
在A/B实验的背景下,有一个天然的优势,那就是可以通过计算p值判断异动的显著性,显然,计算每个维度组合的p值是不现实的,但可以通过它确定一个阈值:令所关注的报表中的异动指标(本文为用户活跃量)的p值等于0.15时实验组与对照组差值的绝对值(Kim [2], Burk [3])。本文使用双样本t检验,阈值计算公式如下:
(1)
其中:
:空转期实验组标准差,
:空转期对照组标准差,
:实验组样本量也就是实验组空转天数,
:对照组样本量也就是对照组空转天数,
:自由度为
+
− 2,p值等于0.15时对应的t统计量大小。
这个阈值保证了筛选剩下的维度组合对所关注的指标在异动量上有较为显著的3000影响,可以高效地去除那些对指标异动没有影响或者影响很小的维度组合,且经实测,这一步剪枝就可以去掉大部分非根原因的维度组合,极大的缓解了维度爆炸。
上述为数值型指标的基于异动量剪枝的阈值,但比例型指标不能仅仅只限制实验组与对照组的差值大于这个阈值,因为可能会出现分母很小导致比例型指标数值较大的情况,这种情况量级太小没有参考意义,故需要限制分母大小。
用最小样本量公式(Alvi [4], Zhou等[5])的原理为分母确定一个阈值:
, (2)
其中:
:分母的最小阈值,
:正态分布中对应95%置信水平的临界值1.96,
:比例型指标在空转期的均值,
:允许的最大误差(边际误差)。
4.2. 基于隔离能力剪枝
在4.1基于异动量剪枝后,剩余的维度组合都是对异动指标在量级上有较大贡献的,但并不能单纯看量级的贡献定位根原因。举例说明,假设总用户活跃量增加了5000,拆分到性别维度,男性用户活跃量增加了2500,女性用户活跃量增加了2500,在城市级别维度,一线城市用户活跃量增加了2000,二线城市用户活跃量增加了2000,三线城市用户活跃量增加了1000,其余城市级别持平。此时并不能简单的根据男性用户活跃量增加数量大于一线城市用户活跃量增加数量来判定男性为根原因。因为性别总共就两个分类,二城市级别分类多得多,这会造成一个样本不均的问题。需要设计一种剪枝方法,该方法可以保留那些能将自身与其他维度隔离开维度组合,这样可以去除那些冗余的维度组合并突出根原因。
基于信息熵理论(Arndt [6]),信息熵的核心作用是衡量数据集内部样本属性的“混乱程度”,若数据集中所有样本具有一致属性,则熵值低;若数据集中同时包含“增长”与“降低”等不同的样本,且两类样本比例接近,则熵值极高(数据无序)。
这种特性与隔离能力的核心需求直接匹配:隔离能力的目标是衡量属性组合能否将数据集分割为“纯增长”和“纯不增长”两部分,而熵值恰好能量化分割后两部分数据的“纯净度”(Arndt [6]),分割后两部分数据的熵值越低,说明属性组合的分割效果越好,其隔离能力越强。
据此设计了如下检验隔离能力的公式,并将其结果命名为IP (Isolation Power, Lin等[1], van Erven[7]):
(3)
其中:
:所选组合X在实验期的指标异动量,
:所选组合X在空转期的指标异动量,
:所有组合在实验期的指标异动量之和,
。
显然,上述IP值公式为信息熵的相反数的变体,反映了数据的纯净程度,在这里设计IP值的含义是找到能将数据划分为低混乱度的两部分的维度组合,保留这些组合并舍弃剩下的。
4.3. 剪枝结果排序
在经过上述两次剪枝后,得到了既在影响量级上有显著贡献,又具有一定隔离能力的维度组合,那么该如何对这些组合进行排序并输出最后的结果呢?
显然对于不同类型的指标并不能用同一套公式来衡量其贡献度并进行排序(ICBU象树中心[8],好好的分析师[9]),针对数值型和比例型指标设计了相应的排序分数(Abade [10], Sant’Anna [11]),用于输出排序后的结果。
定义数值型指标排序分数:
(4)
其中:
:该维度组合在实验期实验组与对照组每天差值的平均值,
:该维度组合在空转期实验组与对照组每天差值的平均值,
:实验期大指标上实验组与对照组每天差值的平均值,
:空转期期大指标上实验组与对照组每天差值的平均值。
该排序分数考虑了该组合通过空转期纠偏的贡献度,能较好地为数值型指标排序(Arndt [6])。
定义比例型指标排序分数:
(5)
(6)
其中:
:空转期大指标分子,
:空转期大指标分母,
:空转期该组合维度分子,
:空转期该组合维度分母,
:实验期该组合维度分子,
:实验期该组合维度分母。
该排序分数同时考虑了分子与分母的变动,并计算了该组合这种变动的贡献率,能较好地为比例型指标进行排序。
4.4. 整体算法
用于定位指标异动多维根原因组合的伪代码算法如算法1所示。该算法输入为多维数据集(包含数值型指标和比例型指标),输出为多维异动根原因组合。

该伪代码可分为四个模块:
· 输入与输出定义
· 数据初始化(1~3行)
· 两层剪枝(4~23行)
基于异动量剪枝(4~17行)
基于隔离能力剪枝(17~23行)
· 排序与输出结果(24~29行)
5. 工业实践中的案例
MAAIA方法已经成功应用于百度业务X的指标异动分析评估中。业务X的数据包含至少17个维度(包括业务X各功能模块是否使用,手机操作系统,手机屏拍,地区,使用日期等等),有至少
种属性组合。如果手动分析这些组合,在实际中是无法实现的。MAAIA方法能够帮助分析团队快速准确地识别出指标异动的根原因。在本节中,将介绍一个MAAIA的实际成功案例,出于保密原因,一些过程细节以及一些指标名称进行了匿名处理。
用户活跃量异动
在某个A/B实验中,因为一些策略的改动导致该抽取的小流量下用户活跃量显著减少,手动拆解维度分析并没有准确的找到相应的根原因,为降低分析成本并提高分析准确率,我们使用MAAIA方法识别出根原因如图4所示。

Figure 4. Ranking result of the MAAIA Method
图4. MAAIA方法排序结果
图中为MAAIA最后的排序结果前四名,可见用户活跃量显著降低应该是由未使用模块B、未使用模块A、使用苹果手机这三部分人群应期的,后续分析应该围绕这三部分展开。
6. 结论
对于A/B实验下的数据分析而言,识别指标异动根原因,甚至是多维组合根原因至关重要,根原因将直接指导后续实验及策略迭代。为此,本文提出了MAAIA方法用于识别指标异动多维组合根原因。其大体分为数据处理,剪枝,排序三部分:数据处理是将原始数据进行清洗,并将数据进行多维度交叉;剪枝是为了去除冗余的维度组合,防止维度爆炸;排序是将剪枝后剩余的维度组合结合空转期数据给出一个排序,便于找到更重要的根原因。同时,剪枝和排序阶段数值型指标与比例型指标需要运用不同的方法。
实验表明,MAAIA方法具有有效性与高效性,我们将其用于百度业务X的数据分析中,实践结果证实该方法在实际场景中的实用价值。
未来,我们计划将MAAIA进行优化,使其适用于更多指标类型,比如分类型指标,计数型指标等;并且,由于不同指标适用的特征维度存在显著区别,MAAIA方法还需丰富其可适应的特征维度。
基金项目
国家自然科学基金面上项目(12471419, 12271304),山东省自然科学基金重大基础研究项目 (ZR2024ZD35)。