写点什么

火山引擎 DataTester 分享:A/B 实验中常见的 8 个错误

  • 2023-05-18
    北京
  • 本文字数:3297 字

    阅读完需:约 11 分钟

火山引擎 DataTester 是科学可信的 A/B 测试与智能优化平台,源自字节跳动长期沉淀,能够深度耦合推荐、广告、搜索、UI、产品功能等多种行业场景需求,为业务增长、转化、产品迭代,运营提效等各环节提供科学的决策依据,让业务真正做到数据驱动。目前,火山引擎 DataTester 已经服务了美的、得到、凯叔讲故事等在内的上百家标杆客户,将成熟的 " 数据驱动增长 " 经验赋能给各行业。


想真正掌握 A/B 实验,你不仅要知道“你该做什么”,更重要的是,你还要明白自己“不该做什么”。这篇文章中,我们就为大家总结了 A/B 实验中常见的 8 个错误,一起来看看吧。

No.1 发生 AA 置信则否定分流服务/统计

通常来说,在 AB 实验平台中,利用 AA 实验来验证分流服务是否运转正常,这一举措确有其合理性。然而,一旦发生 AA 置信,则一口咬定是分流服务/数据统计出了问题,这就存在一些理解偏差了。

我们在解释显著性水平的时候已经提过,在检验假设的过程中,会犯第一类错误——我的策略没有用,但实验结果显示我的策略有用。在 95%的显著性水平下这类错误出现的概率是 5%,即我们开 100 次 AA 实验,然后观测某个指标,可能会有 5 次得到显著的结果。这是由于不可避免的抽样误差所导致的。

因此,如果 AA 实验指标差异呈现统计显著,也不过是一个概率问题;相反,假设检验正是利用「抽样误差」来帮助我们量化犯错的概率,并将其控制在 5%以内的(95%显著性水平下),也就是说,如果我们观测到 AB 显著的结论,犯错的概率就是 p-value 的大小。综上,发生 AA 置信的情况属于正常现象。

No.2 忽略过度曝光

什么是过度曝光?在开设实验时,大量并没有体验到实验版本功能的用户被计入到了实验指标的分母中,导致指标值被稀释(实验中涉及的功能可能“入口较深”,用户打开应用后其实并没有进入到这一功能,但仍然被算作了进组用户,参与了指标计算)。

「指标被稀释」对实验数据分析的影响主要体现在:实验中,有效样本量低于“实际统计到的进组用户量”,有效数据中引入了噪声,因此实验达到统计显著性需要更长的时间;同时由于指标被稀释,提升值的置信区间也存在一定的统计误差。

No.3 多重比较问题

多重比较会导致统计指标犯错的概率更高。以假设检验为理论依据的 A/B 实验,仅适用于 A、B 两组进行对比的场景,能够帮助大家从 A 策略和 B 策略之中选择一个更好的:在 95%的置信水平下,假设新策略没用,我们做一次对比,犯第一类错误(即我的策略没用,但实验结论显示我的策略有用)的概率是 5%。但是,如果实验是 AABB 实验,或者 ABCD 实验,或者 ABCDEFG 实验等,那么情况就截然不同了——我们将面临多重比较问题:当实验组多于 2 组时,我们犯错的概率将大大增加,不再是 5%。

以 ABCD 实验为例:假设策略 A、B、C、D 间没有明显差异,我们对 ABCD 两两对比,共计有 6 种组合,需要进行 6 次对比。6 次对比中只要有一次犯错,我们的结论就算犯错,因此每个统计指标的犯错概率就变为了 1-(1-5%)^6=26.5% ,远大于 5%。

另外需要注意的一点是,假设检验以「AB 没有明显差异」为原假设,B 相对于 A 所得到的 p-value,并不等同于 B 比 A 好的概率就是 1-(p-value)。也正是因此,当存在多重比较的情况时(特别是各组策略没有明显的优劣差异甚至是旗鼓相当时),假设检验难以提供判断哪个策略最优的标准。以上两个问题大大增加了我们评估 ABCD 谁更优的难度以及决策出错的风险

No.4 为显著而显著

什么叫做为显著而显著呢?在实际的业务过程中,我们发现这种错误主要体现为 2 种情况:

  • 关注过多无关紧要的指标,只要一个指标显著,即认为策略有效。

我们一再强调,在实验中,我们要明确目标,提前确定哪些指标能够真正衡量实验效果,并把这部分指标定为实验中要观测的核心指标。如果我们在实验中观测过多指标,众多无关紧要的指标中,碰巧出现显著是很正常的情况。实验者很可能被这种显著误导,进而认为他的策略有效。

  • 对核心指标进行多维度下钻,指标在某一维度上呈现显著,即认为策略有效。

实验报告中,有些指标会带有一个 M 样符号,这表示该指标虽然总体上不显著,但在多维下钻的情况下,该指标于某一维度上呈现显著。

部分实验者会在分析实验结果时认为:在新策略的影响下,指标在某一维度下显著了,那么我的策略肯定是有效的。然而实际上,这种理解并不准确。

举个例子:假设一款 APP 的用户分布于 5 个国家,有 3 种客户端,那么将国家和客户端组合起来,我们可以下钻出 15 个维度。某指标在其中一个维度下偶然呈现显著的可能性有多高呢?

经过计算可知,有超过 50%的可能出现显著。因而,利用某一维度下的显著来验证策略的效果是并不合理的。

综上,坚持实验设计阶段确定的目标和评估标准,不要为了获得统计显著的结论而将原定核心指标更换为其他因果关系弱的指标;也不要过度分割数据。如经分析,确定新策略确实对某人群属性有特殊的影响,建议更新实验目标,再开一个针对该人群的定向 A/B 实验进行二次评估。

No.5 实验显著就立刻停止实验

在字节的数据分析师中有一句流行的话:“不要过早看实验报告。”什么意思呢?就是达到预估的样本量(也可以理解为达到预设的实验天数)之前,不要过早地去看实验结果,因为这种时候实验结果有可能会显著,你会忍不住想要停下实验,并用目前的显著结果作为实验结论,然而这是不正确的做法。

对于实际没有显著差异的实验(可以理解为新策略无效),在实验初期进行观测,指标也很有可能出现显著,这种情况我们称之为假阳性。我们使用假设检验来量化抽样误差的理论需建立在「满足一定的样本量」这一前提之上,当样本量不足时,抽样误差对指标的影响会更大。随时间的延长,实验样本量不断增加,p-value 取值也会发生变化,待进组用户累计达到预估样本量的时候,实验结论可能从前期的假阳性变为不显著。

来看下图中的例子,这在这个 AA 实验中,预估的样本量是 5000。从图中可以发现,实验在中期达到显著(置信度 95%以上);随着样本量的逐渐增多,实验结论最终固定为不显著。

因此,在实验未达到预估样本量之前,显著性可能会在显著和不显著之间来回波动,过早决策的实验结论是不可靠的。字节自己的 A/B 测试平台——DataTester 推荐用户使用多天累计指标来进行指标观测。从业务角度来讲,多天累积指标本身存在天与天间波动,且周末和工作日表现差异较大,建议实验运行整数个完整自然周后,再做实验决策。

No.6 实验不显著就不停止实验

与错误 No.4 相反,在这种情况下,实验者会持续开启实验,直到实验显著。

A/B 实验中,无论 A 策略与 B 策略多么相像,他们终归是不一样的。理论上来说,只要样本足够多(比如无穷多时),实验组和对照组策略的任何一点差异都会致使实验结果形成统计显著。比如一个实验开启了整整 10 年,新策略使指标提升 0.001%,且统计显著,但这种显著意义不大。

因此在实验中,应该遵从实验设计,如果实验已经在预期运行周期内达到所需的样本量,但目标指标变化仍然不显著,那这个实验没有必要继续运行了,停止实验换个方向继续尝试吧。

No.7 认为策略上线后提升值应与实验相同

假设现在开了一个实验来优化商品页面的用户购买率,其中采用了新策略 B 的实验组,购买率提升了为 3%,且结论置信,这是不是代表策略 B 全量上线之后,该商品页面的购买率就一定能提升 3%呢?并非如此。因为在 A/B 实验中我们采取小流量抽样的方式,样本不能完全代表总体。

正确的数据是通过假设检验,结合显著性水平,咳估算出提升值的范围,这一范围被称为置信区间。假设在前面的例子里,经过计算,置信区间为[1.5%,4.5%],那么在策略 B 实际上线后,预估区间[1.5%,4.5%]将有 95%的可能包含真实的购买率增长率(如果显著性水平取 0.05 的话)。

综上,如果你想知道新策略上线后,指标可能发生的变化情况,可以参考置信区间。

No.8 完全地唯数据至上

我们倡导用数据说话,不主观臆断,在评估实验时不仅要看指标的提升量,还要结合置信度来判断数据的可靠程度。然而,在部分情况下,数据仅能传达给我们片面的信息,还需要我们基于数据背后的事实进行因果推断,以保证数据论据与要证明的论点之间是具有合理的因果关系的,这样数据才是我们论证观点的有效利器。否则,我们就仅仅只是单纯地拥有数据而已。

在实验中,我们需要根据自身的业务判断,合理设计实验,明确预期;当 A/B 实验结果违背我们的业务直觉时,应当保持怀疑。

用户头像

小助手微信号:Bytedance-data 2021-12-29 加入

字节跳动数据平台团队,赋能字节跳动各业务线,对内支持字节绝大多数业务线,对外发布了火山引擎品牌下的数据智能产品,服务行业企业客户。关注微信公众号:字节跳动数据平台(ID:byte-dataplatform)了解更多

评论

发布
暂无评论
火山引擎DataTester分享:A/B实验中常见的8个错误_字节跳动数据平台_InfoQ写作社区