数据分析36计(15):这个序贯检验方法让 A/B 实验节约一半样本量

往期系列原创文章集锦:

数据分析36计(14):A/B测试中的10个陷阱,一不注意就白做

数据分析36计(13):中介模型利用问卷数据探究用户心理过程,产品优化思路来源

数据分析36计(12):做不了AB测试,如何量化评估营销、产品改版等对业务的效果

数据分析36计(11):如何用贝叶斯概率准确提供业务方营销转化率

数据分析36计(十):Facebook开源时间序列预测算法 Prophet

数据分析36计(九):倾向得分匹配法(PSM)量化评估效果分析

数据运营36计(八):断点回归(RDD)评估产品设计效果

数据分析36计(七):营销增益模型(uplift model)如何识别营销敏感用户群-Python

数据运营36计(六):BG/NBD概率模型预测用户生命周期LTV-Python

数据运营36计(五):马尔可夫链对营销渠道归因建模,R语言实现

数据运营36计(四):互联网广告渠道归因分析之Sharply Value

数据运营36计(三):熵权法如何确定指标权重构建评价体系

数据运营36计(二):如何用合成控制法判断策略实施效果

数据运营36计(一):生存分析与用户行为如何联系起来

1. Netflix如何合理地缩短实验时间

提高实验效率能带来很多好处:

  • 在相同的时间内可以运行更多的测试了,从而增加为用户找到更好的体验的机会。

  • 可以快速测试各个领域,以找出最佳的投资领域,为未来的创新作准备。

  • 更早地结束实验,就可以更快地为用户带来更多的乐趣。

当然,不可否认的是,进行一个短期的实验也有风险:

  • 通常,真正的测试时间要比根据功效分析(power analysis)所确定的最短时间长得多,这是为了缓解潜在的季节性波动(例如,一天中的时间,一周中的某天,不同周之间等等)、识别到新奇效应的影响,或考虑到某些实验效果可能需要更长时间才能够显现出来。

  • 假期和某些特殊事件的发生,例如新标题的发布,可能会吸引一些不具有代表性的观众。使得测试结果难以推广。

  • 过早地将实验运用到实战中(例如发生HARKing或p-hacking)可能会增加误报率,导致努力白费。

2. 实验设计确定最佳实验结束时间

假设说某个实验处理,既跟时间没有关系(通过使用元分析评估出此结论)而且样本也足够大,那我们就可以应用多种不同的策略来尽早且合理的结束实验。简单地说,我们可以不断地偷看实验结果,但是有时这样的做法会造成假阳性,这时即使实验并没有效果,我们可能会误以为它有效果。此时则可以使用一些方法来防止这种偷窥中(或者用更正式的说法是:中期分析)假阳性的发生(I类错误)。
我们用回顾性研究评估了几种方法,例如序贯概率比检验(SPRT),序贯三角检验,以及成组序贯实验(GST)。在我们的研究中,GST表现最好且最具实用价值。它通常被广泛的应用到临床实验中,样本随着时间逐渐积累增多,这非常适用于我们的案例。

它的思路大致是这样的:

  • 在测试开始之前,我们先确定所需的最短运行时间和中期分析的次数。

  • 然后,GST将所有可容许的I类错误总数(例如0.05)分配到所有中期分析中,以使I类错误加和起来为I类错误总数。这样,每个中期测试都比定期的peeking更为保守。

  • 一旦统计学上足够显著,我们就可以立即停止实验。当观察到效果明显大于预期时,通常就是这种情况。

下图展示了五次中期分析下,GST的临界值以及单独和累积的Alpha-spending。通过这样的策略,我们可以节省大量的实验时间,同时能够更早且更准确的估计出效果的临界点。尽管说,获得的置信区间略宽,而且效果有些许的夸大。当我们想要快速测试某个想法,而且对效果的准确性要求不高,或者当我们发现一个很严重的负面影响而需要提前结束测试时,这种方法最有效。

下图展示了功效分析固定样本大小情况下,一个成功的GST提前停止案例(FSS完全停止)。由于观察到的效果足够大,我们可以使用相似点估计更早地停止测试。整合决策支持的实验平台,现在,我们的初步研究已经完成,我们正在积极地拓展元分析,优化最佳停止时间,异质性效果检测,以及将更多内容扩展到更大的Netflix实验和因果推理平台中。

3. 成组序贯实验原理 Group Sequential Test

序贯检验是在 A/B 测试过程中通过时间顺序监视累积的数据,用停止规则来作出是否继续实验的决定,以确保过程中的总体 I 类错误率不超过阀值。序贯检验通常使用成组序贯检验,使用序贯检验方法可以提高大约20%-80%的样本量/实验时间,同时控制总体 I 类错误率。但是该方法本身增加了计算复杂度,因为停止时间本身现在是一个随机变量,需要在适当的统计模型中加以考虑才能得出有效结论。总体 I 类错误率的控制是通过 alpha-spending 函数实现的,而 II 类错误率的控制则是通过 beta-spending 函数实现的,这两个函数产生两个决策边界,有效性边界 (efficacy boundary)从上方限制测试统计量(z得分),无效边界从下方限制测试统计量。即使在期中分析的数量和时间偏离了原始设计,也可以保持边界。越过边界之一将导致试验终止,并决定拒绝或接受原假设。目前Netflix采用的成组序贯检验方法实现实验早停。

因此这里重点关注 4 个方面:

  • alpha消耗函数和beta消耗函数 alpha-spending function&beta-spending function

  • 有效性边界和无效性边界 efficacy and futility boundary

  • 停止规则 early stopping rule

  • 平均样本量 average sample size

Alpha-spending function

目的:尽早停止本身效果提升的方案测试,提前上线方案。

原理:决定每次期中分析的一类错误率 alpha。

从推广性和样本代表性的角度来看,alpha-spending function应该是凸函数的:在测试的早期阶段开始缓慢消耗,然后在整个过程中更快地消耗,最后降低消耗。这样,只有非常极端的结果才会导致测试在很短的时间内就被终止,而样本量较小,可能会带来一些外部有效性问题。alpha消耗函数为以下四种:

  • Pocock-like

  • O’Brien-Fleming-like

  • Hwang-Shih-DeCani Gamma family

  • Kim-DeMets power family

beta-spending function

目标:尽早停止无用方案测试,对于本身效果不好的方案,继续测试时,不太可能产生具有统计意义的结果。

原理:决定每次期中分析的二类错误率 beta。

efficacy and futility boundary & early stopping rule

efficacy boundary:使其将 I 类错误率 alpha 维持在指定水平之下。通常使用alpha-spending函数计算。越过边界意味着已经越过统计显着性阈值,因此拒绝H0。

futility boundary:使 II 类错误概率 β 保持在指定水平之上。通常使用Beta-spending函数计算。越过边界意味着检测到具有统计学意义的结果的可能性已经低于期望值,因此接受H1。

比如下图中的绿线是由alpha-spending构成的边界,红线是由Beta-spending构成的边界:

实验Z值越过efficacy boundary:拒绝H0

实验Z值越过futility boundary:接受H1

Average sample size

平均样本量是对序贯检验中预期样本量的估计,在该测试中,可以执行可选的停止操作并保证错误率水平。
  • alpha: 5%

  • power: 90%

  • relative lift: 10%

  • baseline: 1.5%

  • analyses: 12

注意:期中分析越多,maximum sample size就越大,但尽早停止的机会就越大,因此平均样本量越小。

图表的x轴为不同的真实效果大小(提升百分比),而y轴将为固定样本大小的百分比。百分比越高,说明为了获得与固定样本量实验相同的结论并具有相同的错误保证,需要一起运行测试的用户越多,这意味着较高的百分比等同于效率较低的测试。对于提升比例越小,所需样本量越多,efficacy boundary保证了相对提升较为明显的测试节约样本量,但是对于提升0%的测试,仍然需要比固定样本多3%的样本量。因此引入futility boundary,对于没有明显提升的测试也能节约样本量。

4. 参考资料

1、成组序贯检验原理视频资料:https://www.bilibili.com/video/BV1jy4y1k7eW?from=search&seid=678793497631760876

2、analytics-toolkit采用成组序贯实现早停的原理和案例 https://www.analytics-toolkit.com/glossary/sequential-testing/

3、成组序贯检验原理书籍:clincal trial design:bayesian and frequentist adaptive methods

4、序贯概率比检验方法原理 https://online.stat.psu.edu/stat509/node/77/

(0)

相关推荐