AB实验进阶
一文带你速通 AB 实验
1. 为什么要做实验
倘若我们拥有创造平行宇宙的神奇能力,那么所有那些 “WHAT IF” 类型的问题,例如“要是 B 站添加了贴片广告,会有多少用户流失?”这样的疑问,都能轻而易举地得到确切答案。在那无数个平行宇宙中,我们可以构建出 B 站添加贴片广告的宇宙场景,直接观察用户流失的具体情况。
但现实却是,我们只能在这唯一的宇宙中生存。面对如此困境,我们只能另辟蹊径,寻求某种方式,来尽可能获取无限接近真实情况的结论。而 AB 实验,正是众多方法里最简单且高效的一种:创建出一个“虚拟的平行宇宙场景”。
2. 什么是实验
AB 实验是一种随机测试,将两个不同的群体通过控制变量法进行假设比较,运用统计学上的假设检定和双母体假设检定。
广义上来讲,AB 实验是因果推断中的一个方法。我们探究的问题其实是一个“估计目标”,通过 AB 实验分流添加变量处理后的分布情况为“估计量”,根据该分布推断出的结果为“估计值”。估计值与估计目标之间,我们可以根据合理的实验设计,让其无限接近。
从因果推断角度理解,实验干预是一个天然的工具变量(IV,Instrumental Variable)。
| 概念 | 例子 |
|---|---|
| 估计目标(Estimand) | 实际 B 站添加了贴片广告会损失用户 |
| 估计量(Estimator) | A/B 实验,一半用户可以看到贴片广告后,用户留存的分布情况 |
| 估计值(Estimate) | 根据 A/B 实验,推断 B 站添加了贴片广告会损失用户 |
![]() |
|
| ### 2.1 观测指标 |
观测指标为实验中我们关注的结果指标,可以是一个也可以是多个,例如上述例子中的“用户使用时长”就是我们关注的核心指标。
2.1.1 指标特性
通常 AB 实验的观测指标,要满足以下几个特性:
- 敏感性:指标对于我们关注的效应变化是否迅速。
- 鲁棒性:指标对于我们不想关注的效应变化是否稳定。
最理想的指标,应该反映我们想关注的数据变化(高敏感性),不反映我们不想关注的部分(高鲁棒性)。
例:均值高敏感性低鲁棒性,中位数低敏感性高鲁棒性。
- 变异性:指标自身变化的程度是否可接受(方差是否过大)。
对于以上三个特性,我们可以通过 A/A 实验或者回顾性历史分析来进行判断。
2.1.2 指标类型
通常指标分为三类:
- 总量:消耗、曝光量、播放量。
- 均值:平均使用时长、ARPU。
- 率:CTR、CVR、留存率。
对于不同的观测指标,由于其各自的分布不同,实验的假设检验方式是不同的。
例如总量和均值需要用 Z 检验,CTR 这种率值需要用 delta-method 处理,留存率这种去重率值需要用 chi-square 检验。
详细各指标的假设检验方式可见:商业化实验平台显著检验方案_24M9
AB 实验假设检验小工具:AB 实验小工具(显著性计算 + 样本量计算)
2.2 分流单位
为了测试,通过某种方式将流量(Traffic)分为 A/B 两组,称之为分流(Diversion),而分流所使用的单位,则称之为分流单位(Unit of Diversion)。
在广告业务场景下,常用的分流单位包括:流量/用户 ID、广告主 ID、计划 ID。
在选择分流单位时,通常需要考虑以下三点:
- 一致性:也称为 SUTVA(Stable Unit Treatment Value Assumption)或者稳定单位处理值假设,对于实验群体可感知的实验,需要保证其每次都在同一个组内。
- 无偏性:也称为条件独立性假设(Conditional Independence Assumption, CIA),根据分流单位分组后两组是同质无偏的,这一假设也可以通过 A/A 实验进行验证。
- 变异性:分流单位需要和实验单位(指标的分母,也就是多少单位进入了测试)一致,否则计算出的变异性要远远小于实际的变异性,因为我们在计算变异性时,其实在假设数据的分布是独立的。
例如流量实验,但是根据广告主粒度来聚合分析,则变异性会远远小于实际情况。
2.3 实验群体
通常有两种实验形式:
- 用户间测试(inter-user experiments):用户组 A 和用户组 B 对比。
- 用户内测试(intra-user experiments):用户组在时间 A 与时间 B 对比。
使用用户内测试需要注意两个问题:
- 前后时间周期是否可比。
- 是否存在随时间变化的效应,也称为学习效应/知识效应/变化厌恶。如何避免/度量学习效应,可以在后文中看到详细方法。
2.4 实验样本量/周期
实验周期以及样本量基于以下元素决定:
| 元素 | 名称 | 解释 | 与样本量的关系 |
|---|---|---|---|
| 一类错误水平 | 误判 | 实际没用但是认为有用的概率,通常取 0.05 | 越小 ➡️ 越多样本 |
| 二类错误水平 | 错杀 | 实际有用但是认为没用的概率,通常取 0.2 | 越小 ➡️ 越多样本 |
| MDE | Minimum Detectable Effect,最小可检测效应 | 希望实验能够检测多灵敏的变化,需要根据业务来拍 | 越小 ➡️ 越多样本 |
| Var | Variance,测量指标方差 | 测量指标的变异性 | 越大 ➡️ 越多样本 |
为了保证周期性对于效应的影响,通常实验至少会开一周来避免周中效应/周末效应;对于部分样本量较少/方差较大的场景,无法获得统计上的显著结论,也有 Capping、DID、CUPED 等工具来进行实验数据的后处理。
AB 实验样本量计算小工具:AB 实验小工具(显著性计算 + 样本量计算)
以上就是所有 AB 实验的基础,恭喜你已经全部掌握,可以成为一个 AB 实验方面的专家了!

3. 双边市场问题
3.1 背景
3.1.1 广告平台:典型的双边市场
互联网场景下,绝大多数的平台都是某种意义下的双边市场。在一个双边市场内,供给方彼此存在竞争,需求方内部存在竞争,同时需求方的变化会引起供给方的变化,影响相互交织,形成复杂的竞争环境。
一般双边市场下的实验设计,可以通过地域随机化、类目随机化或时间随机化的方式,将竞争隔离在地域、类目内部或某段时间内。但是在广告平台中,常规按照地域和时间做实验的方法都不太可行。所以通常只能通过实验设计来厘清相互竞争所带来的效应。
https://doc.weixin.qq.com/flowchart-addon
3.1.2 例子:计划冷启动策略
计划冷启动是媒体的商业化平台常见的调控策略,其手段是对新建计划在一定时间 & 一定转化前,通过排序过程中对其添加一个扶持项,从而在排序中更容易竞胜。主要目的是通过将一部分流量用于新计划的探索,使模型可以更好地预估该计划点击或者转化,从而可以更准确地排序,使得全局流量的变现最大化。
经典的多臂赌博机问题,就是该如何分配资源至“探索”、“收割”两部分。
计划冷启动这一扶持项是否能给大盘带来收益,是一个较为困难的问题,但通过合理的实验方式,我们便可以从某些角度测量出其收益。
我们可以将这个问题简化为以下几点:
| 项目 | 内容 |
|---|---|
| 实验假设 | 计划冷启动扶持可以带来大盘消耗增量 |
| 实验变量 | 是否添加计划冷启动这个扶持项 |
| 观测指标 | 消耗 |
3.2 挤压与外溢效应:双边市场的诅咒
3.2.1 流量实验
- 实验变量:在实验流量上,所有符合条件的计划添加计划冷启动扶持项。
- 观测指标:消耗。
- 估计值:实验流量与对照流量的消耗 diff。
https://doc.weixin.qq.com/flowchart-addon
但是实际上,由于我们只有一个竞价模型,计划在实验流量上因为扶持所带来的展/点/转等特征累积,会间接影响其在对照流量中的竞价,使其高估,从而导致观测出的效应低估(估计值 < 估计目标)。
例子:
如果没有任何策略干预,计划 A 可以在 100% 流量中拿到 200 个曝光。
如果进行了上述的流量实验,计划 A 在 50% 的实验流量中因为扶持,额外拿到了 10 个曝光,共 110 个曝光;在 50% 对照流量中,因为这 10 个曝光给计划带来的特征累积,导致其在对照流量的竞价中额外胜出获得了 1 个曝光,共 101 个曝光。
我们想要的(估计目标):110 - 100 = 10 个曝光,所对应的消耗。
我们得到的(估计值):110 - 101 = 9 个曝光,所对应的消耗。
估计值 < 估计目标。

3.2.2 计划侧实验
- 实验变量:在实验计划上,添加计划冷启动扶持项。
- 观测指标:消耗。
- 估计值:实验计划与对照计划的消耗 diff。
广告主侧、素材侧等其他供给相关的标的同理。
https://doc.weixin.qq.com/flowchart-addon
但是实际上,由于我们只有一个竞价模型,实验计划会因为扶持所带来的展/点/转等特征累积,间接对对照组计划产生挤压,从而导致观测出的效应高估(估计值 > 估计目标)。
例子:
如果没有任何策略干预,计划 A 和计划 B 都各自可以在 100% 流量中拿到 100 个曝光。
如果进行了上述的计划实验,计划 A 在实验组,因为扶持,额外拿到了 10 个曝光,共 110 个曝光;计划 B 在对照组,因为计划 A 扶持带来的额外竞争力,原本 B 可以竞胜的流量落败,损失了 1 个曝光,最终拿到了 99 个曝光。
我们想要的(估计目标):110 - 100 = 10 个曝光。
我们得到的(估计值):110 - 99 = 11 个曝光。
估计值 > 估计目标。

3.3 解决方案
3.3.1 双边市场四格表实验
同时在流量与计划两个维度上开展 A/B 实验,使实验策略只在实验计划的实验流量上生效(下图蓝色部分),则挤压效应 = y00 - y01,最终的估计值 = (y11 - y01) - (y00 - y01)。
https://doc.weixin.qq.com/flowchart-addon
优点:
- 可以解决挤压效应。
- 解释性强。
缺点:
-
小流量特征累积少的低估问题:在 50% 流量上计划的特征累积少于 100% 流量,会影响计划未来的分发,从而产生低估。这点可以前置进行一个预实验来获得参数,再进行调参的双边实验来解决。
Intuition:先开展一个实验,获得“50% 流量下广告效果因为特征累积会损失多少跑量”的结论,将这个结论拟合为一个参数,放入双边实验中对实验组广告进行扶持,来弥补这部分跑量损失。 -
如果存在外溢效应会影响结论,因为 y10 受到的外溢效应会挤压 y00。
https://doc.weixin.qq.com/flowchart-addon
这一点可以结合 3.3.2 或者 3.3.3 来解决。

3.3.2 预算分桶流量实验
一种纯工程角度的方法:将广告复制为影子计划,共享一个预算,原始广告和复制广告进行流量隔离,分别使用不同的策略,从而解决外溢效应。
https://doc.weixin.qq.com/flowchart-addon
优点:
- 可以解决外溢效应。
- 解释性强。
缺点:
- 工程难度高:线上模块多,策略和模型比较复杂,较难做到影子计划与原计划表现一致。
- 计算成本大:广告数量膨胀,线上检索有压力。
- 小流量特征累积少的低估问题。
3.3.3 双边市场列联表联合采样实验
如果对四格表实验进行泛化,同时在流量与计划两个维度上开展多个组,则可以根据每个组作为一个样本构建模型,拟合出“挤压效应”与“外溢效应”的分布情况。
https://doc.weixin.qq.com/flowchart-addon
假设外溢效应与挤压效应与受到处理的流量占比呈线性关系,令:
- yij 为第 i 个计划在第 j 份流量上的表现;
- Wij 代表是否接受处理;
- Wi· 代表第 i 个广告接受处理的比例;
- W·j 代表第 j 份流量接受处理的比例。
则可以通过模型拟合出相关参数。
优点:
- 可以同时解决溢出效应/挤压效应。
- 泛化能力强。
缺点:
- 需要的样本量多。
- 假设溢出效应/挤压效应与受处理流量占比为线性关系。
- 小流量特征累积少的低估问题。
除了可解释性强的双边市场表格实验,为了解决溢出和挤压问题,业界也有一些其他方法,例如 Facebook 的 Counterfactual interleaving 实验。
4. 其他效应
4.1 新奇效应/学习效应
新奇效应/学习效应是指,在一个处理上线后,效应的变化会随着时间衰退/增加。例如“如果 B 站 App Logo 变成绿色”,短期因为好奇可能 DAU 会提升很大,长期来看可能是没有提升的。如何衡量这一部分效应有两种方法:长期流量预留实验与 CCD 实验。
4.1.1 长期流量预留实验
一句话 = 小流量长时间的实验。
可以预留一个长期对照组不添加该处理,通过长时间观测来看效应的变化情况,从而判断新奇效应/学习效应的影响。
4.1.2 长期轮转实验(CCD 实验)
CCD(Cookie-Cookie By Day)与上述多表格实验的思想相同,分两个维度多组地进入实验,只不过这里其中一个维度为时间。通过对比不同时间进入组之后实验群体的处理效应,既可以拟合出实验群体的新奇效应/学习效应的分布情况。 https://doc.weixin.qq.com/flowchart-addon
4.2 长期效应
广义上来讲,新奇效应/学习效应是长期效应的一种(前者是短期有效长期无效,后者相反),而长期效应则是内生效应中的一部分。长期效应的衡量也可以使用上述的长期流量预留实验以及 CCD 实验。这些内生效应,在因果推断领域会有一些方法可以更好地解决,例如:
- 代理指标 by Google / 代理指数 by LinkedIn:寻找一个代理指标/拟合一个代理指数来替代长期效应指标。
- META 分析:根据历史实验来拟合长期效应的分布情况。
5. 总结
上述各种实验方案总结对比如下:
| 实验方案 | 目的 | 优点 | 缺点 |
|---|---|---|---|
| 流量侧实验 | 基础实验 | 低成本 | 有溢出效应 |
| 计划侧实验 | 基础实验 | 低成本 | 有挤压效应 |
| 四格表实验 | 解决挤压效应 | 解释性强 | 1. 有溢出效应 2. 小流量特征累积少的低估问题 |
| 预算分桶实验 | 解决溢出效应 | 解释性强 | 1. 有挤压效应 2. 小流量特征累积少的低估问题 3. 工程难度 4. 计算成本 |
| 列联表联合采样实验 | 解决挤压/溢出效应 | 1. 同时解决两种偏差 2. 泛化能力强 |
1. 样本量需求 2. 开发/分析成本 3. 小流量特征累积少的低估问题 |
| 长期流量预留实验 | 解决时间相关效应 | 低成本 | 长期大盘成本有损 |
| CCD 实验 | 解决时间相关效应 | 解释性强 | 开发成本 |
由于我们不是全知全能的,我们永远无法掌握绝对意义上的真实全貌,也就是所谓的 “ground truth”。但这并不意味着束手无策,我们可以像盲人摸象一样,通过不断采用更科学的方法,逐步去逼近真实,持续缩小估计值(Estimate)与目标值(Estimand)之间的差距。
但是采用科学方法是以成本为代价的。另一方面,我们也需要关注对实验本身的投入成本与产出效益之间的关系,在成本可行性的约束之下获得最科学的结论。
6. 附录
- Udacity AB 实验课程 by Google:https://www.udacity.com/course/ab-testing--ud257
- Udacity AB 实验课程笔记:https://lifanyiran.com/2021/05/13/abtesting_intro
- The Effect: An Introduction to Research Design and Causality By Nick Huntington-Klein:https://theeffectbook.net/index.html
- 列联表联合采样实验 by Tencent:[2401.15811] Seller-Side Experiments under Interference Induced by Feedback Loops in Two-Sided Platforms
- 快手双边市场的复杂实验设计问题:https://www.51cto.com/article/748974.html
- 代理指标 by Google:https://dl.acm.org/doi/pdf/10.1145/3534678.3539073
- 代理指标 by Netflix:https://dl.acm.org/doi/pdf/10.1145/2843948
- 代理指数 by LinkedIn:https://arxiv.org/pdf/2106.01421
