AA Diff - Buonriposo/KUAISHOU GitHub Wiki

一、平台 AADiff 问题现状及出现原因分析

1. 什么是AADiff,如何度量

在A/B实验开始前的阶段,AB实验方法论要求AA阶段各分组统计意义下「同质」,我们会有两个视角的观测分组间差异(AADiff)

  1. 实验分组粒度 AADiff(实验系统):对于实验分组之间,对一对实验分组,其某一指标的检验,如果出现了统计上认为显著的差异,此时认为出现了实验分组粒度的AAdiff。实验分组粒度的 AADiff 体现「实验系统分流的均匀性」和「实验统计推断的正确性」。
  2. 实验粒度 AADiff(体感):实验有多个分组,多个指标;只要出现了一对分组在某一个指标检验上有统计显著差异,则出现实验粒度上的 AADiff 问题。实验粒度 AADiff 代表了用户体感。

2. 实验体系 AADiff 问题现状如何

以当前实验通用的 5% 显著性水平为标准。我们预期实验分组粒度出现 AADiff 的概率为 5%

  1. 实验分组粒度 AADiff(实验系统):在我们统计的约 35.5w 个实验分组与指标的组合的检验结果当中,出现AADiff的比率 6.31%,统计上显著高于了设定值5%
  2. 实验粒度AADiff(体感):在我们统计的约19k个实验与指标的组合检验结果中,32.69%出现了AADiff,如果将同一实验当中不同指标的结果再结合来看,AADiff出现的比例则会更高

3. 为什么会出现AADiff

AADiff 不可避免,AADiff发生概率大于显著性水平 5% 的主要原因是创建多个分组,次要原因是实验流量过小、流量复用、场景数据异常值等

  1. 创建多个分组:实验中多个分组的情况导致了对于同一个指标进行多次比较,尽管实验分组指标粒度的AADiff比率正常的情况下,多个分组的多次比较的多重检验也会极大增加这一概率
  2. 实验分组流量过小与hash误差:当前实验平台的假设检验使用的是 bootstrap 方法,该方法前提条件是样本必须是总体的优良估计(样本容量不能太低),在小流量时这一假设不满足,会导致 AADiff 出现的比例高于5%(统计到的 AADiff 出现的比例比实际情况偏高)。当流量较小时,hash本身的性能限制会导致分桶不均匀,导致 AADiff 较大。 不同流量分组大小出现 AADiff 问题的比例明细表,实验分组组合最小流量在5%以下时 AADiff 比例急剧膨胀,见下图所示 58CBE89E-B9BE-4042-9389-46DD86D321AD

对于百分世界,这一问题会更加严重,最小可用的分组组合流量要远高于5%。可以参考的数据是考虑多实验*指标粒度AADiff概率,百分世界约56%,千分世界约32%。

  1. 流量复用:历史实验对桶当中用户产生一定影响,并且这种影响可能不会随着实验结束而终止,桶的流量复用会将这种影响带到后续的实验AA阶段当中。我们通过数据模拟和实证数据研究都发现了这一问题的存在。
  2. 场景数据异常值。场景流量过小会导致分桶指标严重不均,进而影响后续的分析和推断;指标自然波动情况过大,或存在异常值,影响实验 AADiff。

根据大致错误量级影响对上述原因各自影响进行分拆估计,总体实验级别 AAdiff 的概率 32.69% 可以被近似进行如下拆解: 201373D4-C804-4859-8100-499BF08223D5

二、AB实验方法论可容许的 AADiff 原理论述

1. AADiff 与假阳性问题

在 AB 实验方法论体系下, AADiff 问题一般与假阳性问题强关联。AADiff 问题是确定性视角下的概念,指代对于流量随机划分之后,从指标上看到分组之间存在明显的差异;假阳性问题是概率统计视角下的概念,指代流量划分机制是良好的,但会出现一定程度的误判。大量随机划分,出现 AADiff 问题的比例,与假阳性概率相等。

如我们前文所述,AADiff 问题的理解有两种表现形式,第一种是实验系统角度的,即实验分组组合粒度,对应我们一个指标在一对实验分组组合上的假设检验结果,这种情况下如果在 AA 阶段检验出统计显著,被称作假设检验出现了假阳性(false positive)。而第二类是指体感角度的,即在实验粒度的,该实验的此指标下任何一对分组组合出现了统计显著的结果,则用户会有体感感觉实验出现了AAdiff 问题。

2. 为什么会出现假阳性问题

假设检验存在假阳性的情况,是源于于抽样分布的性质,是实验体系的固有属性。

  • 假设检验决策标准决定会出现假阳性:在实验中,对于已经看到的实验分组之间的差距大小,我们根据bootstrap方法来估计在当前实验的抽样条件下,当两个实验分组的分布完全相同时,出现比我们已经观察到这么大的差距更极端的差距的可能性并以此作为依据,来判断当前观察到的差距是否足够极端到我们可以认为这个差距是来自于两个组真实存在差异而不是抽样误差。这个极端程度用p值 (p value)来刻画,p值在0到1之间,代表了在当前实验的抽样条件下,两个实验分组分布完全相同时我们能看到比当前观察到差距更极端的概率。为了确定多大差异算“足够大”能够让我们相信这个差异不是来自于随机抽样误差,我们会制定标准,被称作显著性水平(alpha),当alpha=5%时,我们会对所有p<5%的情况下判断认为此时观察到的差异来自于两个实验分组的真实差异。因此在实验体系完全有效的前提下,由于抽样误差,决定了我们出现实验分组组合粒度假阳性的概率就是alpha。
  • 假阳性的出现不可消除,降低假阳性需要牺牲实验效能作为代价:由于我们的决策需要预先决定显著性水平,一个常见的疑问是能否杜绝假阳性的出现,也就是把alpha设定为0。实际上,由于抽样分布具有随机性,一些极端事件只会以很小的概率发生而非绝对不可能发生,因此我们无法把alpha设置为0。甚至实际上当我们降低alpha时,我们观察到的数据需要更加极端,才能让我们相信这样的差异并非来自抽样随机误差,这就会导致我们对于真正存在差异的实验分组检测灵敏度降低,影响实验的效能,所有统计推断都是对两者进行一定的平衡。

3. 为什么实验者体感(32%)与系统分流 AADiff (6%)差异巨大

3.1 用户对AADiff发生的频率的体感 虽然以上统计AADiff发生概率均在5%-6%左右,但一些用户却反馈经常出现AADiff,这是由于用户体感的AADiff是实验粒度上的。 3.2 体感AAdiff增加的解释 在同个实验的多个不同组间进行比较都会出现多重比较问题。使实验粒度上的一类错误水平显著大于单次检验设定的显著性水平。

当用户设置多个不同的实验分组,观察多个不同的指标时,最终进行的假设检验数量会膨胀为 mk(k-1)/2 ,其中m为指标个数,k为实验分组个数。假设检验的数量随着指标个数和实验分组个数增加而增加,即便单个假设检验系统分流的AADiff仅有6%,随着总体假设检验数量的增加,从而导致在这一系列假设检验当中看到有AADiff的概率上升,进而导致在实验级别的AADiff体感非常高。仅考虑一个指标的情况下,实验者体感的AADiff也达到了32%。

仅考虑单个实验指标的情况下,在我们统计的4883个实验上时该理论值为40.68%。(该理论值对AADiff出现的概率略有高估,原因在于实验组组合样本间不独立,p值存在正相关) 这一概率是针对于单一指标的,当用户同时关注多个不同的指标时,出现AADiff的概率也会上升,导致了用户体感上AADiff在实验当中大量出现。

三、AADiff 的影响及可能的改进

1. 实验平台保障的「均匀性」在保障什么

从上文所见,实验平台的分流「均匀性」保障的是任意两个实验分组,出现统计显著性差异概率为 5%; 也就是允许有 5% 的 badcase. 长期角度,实验平台需要对实验分流结果建立监控,鉴定的内容为本课题的第二节中数据。判定方法有 2 类,① 分组 AADiff 比例为 5%,② 判定分组 AADiff 假设检验问题的 pvalue 为均匀分布。

2. 平台 AADiff 会带来怎样的影响

  • 可能导致错误决策 没有意识到的情况下,实验AADiff可能会导致效果估计不准,严重的可能会导致方向相反,导致错误决策
  • 实验开展与数据分析成本提升 意识到出现了AADiff的情况后,不能直接进行数据分析,某些场景下需要使用DID进行分析,重开实验或是等待更长的时间实验结果才会显著。

3. 遇到AADiff 问题怎么办

一般而言,遇到 AADiff 问题重开实验。

修正的方法主要是双重差分法和方差缩减法。一些满足双重差分法(DiD)使用前提的场合可以使用平台 DiD 方法进行实验分析,修正直接统计结果。实验平台提供的组间双重差分法可参见:双重差分分析离线分析工具双重差分的原理与方法。在一些场景下,也可以使用用户维度DiD指标进行分析,能够进一步减少方差、免去PreAA时期的等待,详情参见:用户维度DiD指标解释文档

4. 解决AAdiff问题的Action

首先对齐一些误区

  • AADiff 是客观存在,技术手段不可消除;5% 是我们设定的显著性水平,表示能够接受的误差水平
  • 当前显著性水平业界一般设置为5%,设置更低的显著性水平会导致有效实验的检出率降低,即真正有效果的实验检验出统计显著的比例降低
  • 实验分组流量 5% 以内时,由于存在估计方式假设不满足的情况,会导致 AADiff 超过设定的显著性水平,但在实验分组流量超过 5% 流量之后,扩大流量,缩减方差的方式可以提升统计假设检验的灵敏度(但可能会提升第一类错误),但是不能继续降低AADiff出现的概率
  • 处置 AADiff 问题的 action目的是将实验分组粒度 AADiff 由目前的 6.31%降低到希望控制到的业界通行的 5% 的水平,而不是(也不可能)消除 AADiff 的出现,并且尽量降低实验者体感的 AADiff。