摘要:随着各项业务精细化运营和发展的需求,越来越多的AB实验被用来解决新的产品形态是否上线,新的算法模型是否推全等战术决策问题。AB实验因其总能给出可信度较高的结论而作为决策的黄金准则。但在一些情况下,AB实验的结论也饱受质疑,比如SRM(Sample Ratio
背景
随着各项业务精细化运营和发展的需求,越来越多的AB实验被用来解决新的产品形态是否上线,新的算法模型是否推全等战术决策问题。AB实验因其总能给出可信度较高的结论而作为决策的黄金准则。但在一些情况下,AB实验的结论也饱受质疑,比如SRM(Sample Ratio Mismatch)问题和AA问题等。所谓AA问题,本质上指的是在一次给定的AB实验中,分流是否均匀的问题。为了更具象化这个问题,我们对其中较为抽象的名词作如下定义:
AB实验的范围:
实验周期不超过一个月的按人群分流的随机实验;这里的限制条件主要说明的是我们优先关注的是短期,有历史数据且无网络效应存在时的AB实验,因此对于长期hold-out实验,订单分流实验(无历史数据)以及时间片实验(网络效应下的实验方法)均不在此次讨论的范围内。
仅包含一个实验组与一个对照组;这个限制仅为了更好地说明和展示,其本身并不缺乏一般性,我们可以将其拓展至多个实验组与一个对照组的问题上。
均匀分流的定义:
假设对实验人群没有进行实验,保持原来的实验分组,观测到两组间核心指标差异不显著
在定义完问题之后,我们也对均匀分流的重要性(参考图1)进行简单的说明:由于我们无法直接观测到策略是否有效的事实,进而只能从实验数据中对事实进行推断,因此分流不均匀很可能导致我们得到与事实相悖的结论。
均匀分流重要性的示例
对于AA问题,常见的解决方式有三种——AA测试、重随机和回顾性AA分析,这三种方式分别作用于实验的不同阶段却又相辅相成:
AA问题常用解决方法汇总表
具体为何需要这三种方法以及实际中如何使用这三种方法将在下文展开详细的介绍
AA测试
运行AA测试的原因
AA测试,除了对实验组和对照组使用同样的策略,其他的方法均与AB实验完全一致。其通过重现实验的整体流程,可以帮助识别在实际运行实验时的陷阱和漏洞,具体可以参考如下:
AA测试常见问题checklist
Tips:AA测试无法验证某些需要运行AB实验才会出现的漏洞,例如网络效应,针对性触发实验以及多策略间下发的冲突规则
如何运行AA测试
实施一个AB测试系统前总是需要运行一系列AA测试。在理想状态下,可以运行1000个AA测试,但是由于其高昂的成本,这里更推荐使用【重播历史的数据】的方法,其流程为:
从数据库中获取既定实验周期前一段时间的目前流量域的用户名单与一个感兴趣的核心指标的数据
选择一个对用户分组的随机化哈希种子
使用哈希种子对用户分组,并计算该分组下指标组间差异的p值
重复步骤2~3足够多的次数(例如1000次),将得到的p值绘制成直方图
如果p值的直方图为均匀分布,说明指标是可信赖的指标(对于p值是均匀分布的原因及判断标准,请参考额外说明1&2)
额外说明1:为什么AA测试中P值分布是均匀的
理论推导:(其中为累计分布函数,以下证明以单边检验为例)
逻辑解释:核心点在于概率与频率的一致性。这里我们先举一个简单的例子,假设有一枚均匀的硬币,当我们抛掷它时,其出现正面的概率是0.5,如果我们抛掷其1000次,那么出现正面的次数大约在500次左右,此时我们计算出现正面的频率也应该在0.5左右(0.5=500/1000)。现在回到AB实验中,我们通常会将显著性水平设为0.05,显著性水平也被称为一类错误率,所谓一类错误指的是在原假设成立的条件下拒绝了原假设,而一类错误率指的是犯一类错误的概率;在AA测试中,由于两组的策略一致,因此我们人为创造了一种原假设一定成立的情况(原假设为实验组与对照组的核心指标相等),因此使用判断为显著的情况并不是二者有差异,而是犯了一类错误,因此如果我们做1000次AA测试,那么得到的犯一类错误的频率为0.05左右(理由与抛硬币的例子相同)。我们总结一下,就是使用对p值做判断时,p值小于等于0.05的频率是0.05;此时如果我们把调整为0.1,那么我们应该得到p值小于等于0.1的频率是0.1,故p值的直方图是均匀分布。
额外说明2:如何判断P值的直方图是均匀分布
判断方式:可以使用一条水平的直线来辅助判断;更严谨的,可以进行拟合优度测试(Goodness-of-fit),例如KS检验(Kolmogorov-Smirnoff Test),来判断分布是否是均匀分布(原假设是样本数据来自均匀分布,若p值小于0.05则拒绝原假设)
示例展示:
p值为均匀分布的示例图(KS检验的p值为0.3844)
Tips:该方式建立在存储了相关的原始数据的基础上,因此这个方法也有一些限制,即无法发现实际运行实验时才会出现的性能相关的问题或者分享资源的问题,例如LRU缓存问题
当AA测试不通过时如何解决
当p值的直方图不是均匀分布时,通常是因为以下三种常见的情况:分布估计错误,离群值以及分布中存在一些点很大的间隙,我们也将对这三种情况展开详细的说明:
具体表现1
分表表现:分布偏斜且明显不接近均匀分布时
图例:
额外说明
对于正态性检验的假设,提供两种方式:
使用经验法则作判断,对于均值类指标满足正态分布的最小样本量为,其中为指标的样本分布的偏态系数,即
通过扩大流量回放历史数据的方式,生成一个零分布(零假设下统计量的分布)的直方图,然后可以通过统计显著检验方法,例如Kolmogorov-Smirnov test,来检验零分布是否为正态分布
具体表现2
分表表现:p值分布存在一个或多个峰值
图例:
额外说明
值得注意的是:离群值会使得策略更不容易显著(请参考额外说明3)
当p值的直方图有一个峰值时,说明存在一个离群值;当有多个峰值时,说明存在多个离群值(两个离群值的情况参考下图);需要额外注意的是如果离群值过多(大约30个左右)的话,使用直方图无法辅助判断,一是因为直方图的分块数量有限,二是因为峰值过多会使得其趋近于均匀分布
具体表现3
分表表现:分布中的一些点有很大的间隙
图例:
额外说明
这种情况发生在数据是单一值(例如0)时,但有一些罕见的例子是非零的。这种情况的均值的增量只可能是几个离散值,因此p值也只可能是几个值(可以参考左侧图例)。此时,t检验在这种情况下是不准确的,但好处是,如果一个新的实验组造成罕见事件经常发生,那么实验效应很大且统计显著(罕见事件经常发生的情况参考下图)
额外说明3:离群值会使得策略更不容易显著的原因
重随机
外部调研
对于重随机,我们分学界和工业界两条线路展开了详细的调研:
其中,学界对于随机实验中的协变量平衡问题有两大类解题的思路(如下图所示),一个是在实验的设计阶段使用重随机进行解决,方法的优势是可以提前规避不均匀分流的风险但弊端是统计推断需要消耗大量算力;另一个是在实验的分析阶段使用回归调整进行解决,方法的优势是计算简洁明了但弊端是无法提前规避不均匀分流的风险;而这两种殊途同归,相辅相成,最终丁鹏老师于2020年确立的重随机与回归调整的统一框架,融合了两者的优势,为协变量平衡问题提供了新的解题思路。
学界协变量平衡问题脉络梳理
而工业界中也不乏对重随机和回归调整的统一框架大规模应用的案例,以微软为例,其大量博客与文献中都有着对Seedfiner和CUPED的介绍(其中Seedfiner为重随机,CUPED为回归调整)。
运行重随机的原因
重随机可以帮助我们在实验前有效减小不均匀分流出现的可能
Tips:这里需要额外强调一下,我们只能减小不均匀分流出现的可能,不能杜绝不均匀分流的出现,因此即使在使用了重随机之后,仍然有小概率出现不均匀的分流,具体的原因请参见【运行重随机时的注意事项】,对于各场景下重随机的实际效果请参见【重随机在真实场景下的验证】
如何运行重随机
重随机的做法是对于给定的人群使用足够多的哈希种子(通常是100个种子或者1000个种子),选择在核心指标上最均匀的种子用于AB实验的分流,其中最均匀的含义是将最不均匀的指标分的最均匀,这里我们提供一个使用三个核心指标进行重随机的数值示例,重随机的步骤为:
生成足够多的哈希种子;这里我们以10个哈希种子为例进行说明;
对于每个哈希种子,对每个指标计算t统计量的绝对值;t统计量是用来推测两组样本背后总体期望是否一致的有效度量,此时的环境类似于AA测试,我们已经知道背后的真相 -- 两组总体期望一致,而我们希望指标越均匀越好,因此t统计量的绝对值越小说明两组越均匀;
对于每个哈希种子,选取统计量的绝对值的最大值为该种子的代表值;每个哈希种子下因为有多个指标的存在,所以一定有些指标分的相对均匀,有一些指标不那么均匀,这里我们选出t统计量绝对值的最大值,作为最不均匀情况的表征
选取代表值最小的哈希种子;我们希望在选出的最不均匀的情况中,调处最均匀的一个,这是一种相对保险的处理方式,即选出的随机种子下指标差异的最差情况也是可以接受的,从示例中可以看出最终选取的是第2个哈希种子
重随机数值示例
运行重随机时的注意事项
在运行重随机时,我们需要关注:人群重合度,指标相关性和使用CUPED进行评估。
对于人群重合度:
示例说明:如果我们固定AA期指标和AB期指标的相关性为100%,那么当人群重合度为100%时,我们完全可以通过拉齐AA期指标进而拉齐AB期指标;当人群重合度为0%时,由于随机实验中样本是相互独立的,我们无法通过拉齐某人群的AA期指标进而去拉齐另一人群的AB期指标。因此在重随机时,我们希望用于重随机的人群和最终实验的人群两者的重合度要尽可能的高。
对于指标相关性:
示例说明:如果我们固定人群重合度为100%,那么当AA期指标和AB期指标的相关性为100%时,我们完全可以通过拉齐AA期指标进而拉齐AB期指标;当指标相关性为0%时,即两者相互独立,AA期指标无法提供任何有关AB期指标的信息时,即使对相同的人群,重随机也无法减小不均匀分流的可能。因此在重随机时,我们需要用于重随机的指标和最终实验的核心指标的相关性要尽可能高。
原理说明:定理1表示的是重随机对协变量均匀性的改变,定理2表示的是重随机改善了协变量的均匀性后是通过何种函数关系反应到核心指标的均匀性上的,如果指标相关性为0%,那么定理2中的,此时我们无论如何拉齐AA期指标,也无法有效拉齐AB期指标。
定理1:重随机拉齐协变量
定理明细:如果使用进行重随机并且并且协变量的均值是多元正态的;
示意图:
重随机可以拉齐协变量
定理2:重随机拉齐核心指标间的差异
示意图:
重随机通过拉齐协变量进而拉齐核心指标
对于使用CUPED进行评估:
示例说明:在区组实验中,我们需要将区组作为示性函数添加至回归模型中进行后续的分析,区组是离散型随机变量,也是一个特例;在重随机中,我们使用的是AA期的指标,是连续型随机变量,此时也能自然的联想到将其添加至回归模型中进行分析,如果不进行添加,也可以从区组实验中得到洞见,我们会错误的高估方差,进而降低实验的统计功效。因此在使用重随机后,我们需要使用CUPED进行评估。
原理说明:定理3表示的是重随机后策略效果估计的方差,
因此该定理表示使用重随机后使用双样本t检验会错误的高估方差,而定理4表示的是使用回归调整得到的方差在大样本下是真实方差的正确估计。
定理3:重随机后t检测方差变化
定理4:重随机后使用回归得到正确方差估计
数据模拟:
CUPED进行评估相关原理3与原理4对应模拟图(重随机比随机方差小,回归可以得到方差的正确估计)
Tips:目前的重随机相当于对不同的协变量赋予了相同的权重,实际中用户对不同的协变量的诉求不同,可以考虑使用不同的权重。
重随机在真实场景下的验证
我们也在各业务场景下测试了重随机的效果:
对于部分场景,由于AA期数据的缺失或者AA期与AB期人群基本没有重合,重随机没有缩减不均匀分流的可能,一类错误率依旧保持在5%
对于其他场景,随着人群重合度和指标相关性的提升,重随机减少不均匀分流的能力也有所提高,最多可以将一类错误率降低至0.3%
表3. 不同业务场景下重随机效果汇总表
回顾性AA分析
运行回顾性AA分析的原因
回顾性AA分析通过在实验后观测AB期人群在AA期的表现,来增加我们对于实验结果的可信赖程度;如果我们理解了重随机中人群重合度和指标相关性的意义,那么在回顾性AA分析可以视为重随机中的一种特殊情况,即人群重合度为100%,与相关性较高的情况(因为在实验结束阶段,我们已经知道参与实验的人群,所以人群完全重合;而与是不同时期的同一指标,所以指标的相关性会比较高)。因此,如果没有显著性差异时,我们对均匀的分流的信心是更强的;相对的,如果有显著性差异时,我们对分流的均匀性可能会产生质疑,进而会质疑实验结论的可解释性与可信赖程度。
如何运行回顾性AA分析
我们对X可以按如下步骤进行回顾性AA分析:
如果X中含有缺失,需要先将其中的缺失值补为0
对X对实验分组的人群进行双样本t检验,得到对应的p值
使用p值作为分流均匀性的参考
运行回顾性AA分析时的注意事项
在运行回顾性AA分析时需要注意以下三点:
定理5:选取评估方式错估方差进而带来的功效折损
示意图:
选取评估方式错估方差进而带来的功效折损
Tips:回顾性AA分析描述了实验组与对照组均值上的差异,并不等价于实验组与对照组完全同质/分布相同。
其他待解决问题
对于AA相关的问题,仍有一部分待解决的问题:
长期实验:由于AB期的时间过长,很难找到与相关性高的,因此对长期实验如何应用重随机与回顾性AA分析仍有待探索
人群重合度低:对于重随机时的人群重合度问题,可能Adaptive自适应分流是一个解决方案
区组实验:虽然重随机可以一定程度上解决离散性协变量的问题,但不一定是最优方案,同时需要考虑多区组时计算效率的问题
参考文献
1.Patterns of Trustworthy Experimentation: Pre-Experiment Stage
2.p-Values for Your p-Values: Validating Metric Trustworthiness by Simulated A/A Tests
3.Rerandomization and regression adjustment
4.A randomization-based theory for preliminary testing of covariate balance in controlled trials
来源:一个数据人的自留地