Trustworthy Online Controlled Experiments Part 4 Chap 15
成功的真正衡量标准在24小时内可以进行多少实验。
– Thomas A. Edison
为什么重要
尽管实验被广泛采用以加速产品创新,但是创新的速度可能会受到实验方式的限制。为了控制与新功能发布相关的未知风险,我们推荐斜坡实验过程,以逐步增加新功能的流量。如果我们不按原则进行此操作,实验新功能的过程可能会导致低效和风险,并随着实验规模的增加而降低产品的稳定性。有效地提高效率需要平衡三个关键因素:速度,质量和风险。
什么是斜坡过程?
我们经常谈论使用足够的流量来为实验提供足够的统计能力。在实践中,通常会进行一个渐变过程来控制与新功能发布(即受控曝光)相关的未知风险。例如,一项新功能可能始于仅向一小部分用户公开。如果这些指标看起来合理并且系统可以扩展,那么我们可以为更多的用户提供该功能。逐步增加流量,直到达到实验目的。最著名的负面例子之一是Healthcare.gov的首次启动。该网站在第一天向全部用户推出时便崩溃了,这时候它还没有准备好处理大负载。如果他们按地理区域或姓A-Z推出站点,则可以缓解这种情况。坚持渐进的发布过程成为随后软件发布的规范(Levy 2014)。
如何确定需要哪些增量斜坡? 以及每个增量应运行多长时间?太慢会浪费时间和资源。过快可能会伤害用户体验,并可能导致做出次优决策。尽管我们按照第4章中所述的完全自助式平台使实验民主化,但我们需要有关如何逐步引导实验的原则,理想情况下,还需要工具来实现流程自动化和大规模实施。
我们主要专注于提升的过程。当处理质量不佳时,通常会使用下降功能,在这种情况下,我们通常会非常快地将其关闭至零,以限制用户的影响。此外,大型企业通常能够控制自己的客户端更新,因此在发现问题后,他们可以及时的停止实验。
SQR (Speed, Quality, Risk)爬坡框架
在爬坡过程中, 如何在控制风险和提高决策质量的同时快速进行迭代?换句话说,我们如何平衡速度,质量和风险(SQR)?这需要,考虑为什么我们要进行受控的在线实验:
衡量干预的影响和投资回报率(ROI)(如果启动至100%)。
通过在实验过程中(即产生负面影响时)最大程度地降低对用户和业务的损害和成本来降低风险。
要了解用户的反应(最好按细分受众群),以识别潜在的错误并为将来的计划提供信息。这既可以作为运行任何标准实验的一部分,也可以作为学习的一部分(请参见第5章)。
如果进行受控实验的唯一原因是进行测量,我们可以在最大Power 斜率(MPR)下运行实验,这通常意味着向治疗提供50%的流量分配以提供最高的统计灵敏度,假设我们的目标是将该治疗提升至100%。这为我们提供了最快,最精确的测量。但是,我们可能不想从MPR开始-如果出现问题怎么办?这就是为什么我们通常从较小的风险敞口开始,目标是控制影响并减轻潜在风险。
最大Power 斜率(MPR): 如果该实验仅用一种治疗就可实现全部100%的流量,则两次样本t检验中的方差与1 / q(1- q)成正比,其中q是治疗流量百分比。在这种情况下,MPR 使用50/50的流量分配。如果在一种治疗和一种对照之间只有20%的流量可用于实验,则MPR的拆分为10/10,依此类推。如果有四个变体将流量分成100%,则每个变体应获得25%的流量。
我们可能还需要介于MPR和100%之间的中间斜坡阶段。例如,出于运营原因,我们可能需要测试75%,以确保新服务或端点可以扩展以适应不断增加的流量负载。
另一个常见的目标是学习。虽然学习应该是每个坡度的一部分,但是我们有时会运行长期的坡度实验,其中一小部分用户(例如5–10%)在一段时间(例如两个月)内不接受新功能, 这主要出于学习目的。目的是了解MPR期间测得的影响是否长期可持续。请参阅第23章中的更多讨论。
四个斜坡阶段
图15.1说明了在四个斜坡阶段平衡速度,质量和风险的原理和技术。
为简单起见,假设我们的目标是将单次治疗的剂量提高到100%,那么MPR的治疗剂量为50%。将所有部分放在一起,SQR框架将整个斜坡过程分为四个阶段,每个阶段都有一个主要目标。
第一阶段主要是为了降低风险,因此SQR框架专注于权衡速度和风险。第二阶段是精确测量,因此重点放在权衡速度和质量上。最后两个阶段是可选的,可解决其他运营问题(第三阶段)和长期影响(第四阶段)。
斜坡第一阶段:MPR前
在此阶段,主要任务是确保低风险,并迅速上升到MPR。可以使用以下方法:
- 创建测试人群的“环”,并逐渐将“干预”暴露于连续的环中,以降低风险。通常,最初的一环是为了获得定性反馈,因为根本没有足够的流量来获取有意义的数据。下一个环可以进行定量测量,但由于统计功效低,因此仍不受控制。可以在早期不稳定期发现许多错误。请注意,由于这些用户很可能是“内部人员”,因此对早期环的测量可能会有偏差。常用的环有:
a)列入白名单的个人,例如实施新功能的团队。可以从团队成员那里得到逐字反馈。
b)公司员工,因为如果存在错误,他们通常会更宽容。
c)Beta用户或内部人员,他们往往会愿意发生和并且比较忠诚,希望早日看到新功能,并且通常愿意提供反馈。
d)数据中心隔离可能难以识别的交互,例如内存泄漏 或其他不适当的资源使用(例如重载磁盘I / O)(请参阅第22章)。在Bing,常见的增长方式是单数据中心流量较小(例如0.5–2%)。当单个数据中心的流量增加到正常水平时,所有数据中心都可以增加流量。
- 自动进入的流量,直到达到所需的分配。期望的分配可以是特定的环,也可以是预设的流量分配百分比。即使所需的分配比例很小(例如5%),多花一个小时达到5%也可以在不增加太多延迟的情况下限制不良bug的影响。
3.对关键护栏指标进行实时或近实时测量。越早了解实验是否有风险,就可以更快地决定进入下一阶段。
斜坡第二阶段:MPR
MPR是专用于测量实验影响的斜坡阶段。我们在整本书中围绕产生可信赖的结果进行的许多讨论都直接应用于此阶段。我们想强调一下我们的建议,即在MPR上进行实验一周,如果存在新鲜效应 或首要效应 (novelty or primacy effects),则建议更长的时间。
该斜坡阶段必须足够长才能捕获与时间有关的因素。例如,一个仅运行一天的实验将使结果偏向重度使用的用户。同样,在工作日访问的用户与在周末访问的用户往往会有所不同。
虽然通常在较长的实验中会获得较小的方差,但是当我们等待更长的时间时,收益会递减。根据我们的经验,如果干预效果没有新鲜效应 或首要效应趋势,则一周后获得的精度往往会降低。
斜坡第三阶段:MPR后
到实验结束MPR阶段时,就不必再担心最终用户的影响了。理想情况下,运营问题也应在较早的升级过程中解决。对于某些工程基础架构的流量负载增加存在一些担忧,这些流量可能需要保证在达到100%之前逐渐增加。这些爬坡只需要一天或更短的时间,通常可以在严密监视下覆盖高峰流量时段。
斜坡第四阶段:长期运行或复制
我们已经看到,长期运行(也称为保留)越来越受欢迎,在这种运行模式中,某些用户很长时间没有接触到Treatment。我们要警告不要在扩展过程中将长期存档作为默认设置。除了成本外,当我们知道有出色的体验但故意拖延其发布时,尤其是在客户花费均等的情况下,这可能也是不道德的。仅在确实有用时才决定进行长期运行。在以下三种情况下,我们发现长期坚持很有用:
1.长期效果可能不同于短期(请参阅第23章)。这可能是因为:
a. 已知该实验具有新颖效应或首要效应,或者
b.对关键指标的短期影响如此之大,以至于我们必须确保由于财务预测或其他原因,这种影响是可持续的
c.短期影响很小甚至没有,但是团队相信会产生延迟的影响(例如,由于采用或可发现性)
2.当早期指标度量标准显示影响力时,但“真正”度量标准是一项长期度量标准,例如一个月的保留期。
3.当减少方差有利于持有更长的时间(请参阅第22章)。
有一个误解,认为应始终对“干预”中的大部分流量(例如90%或95%)进行抑制。虽然这通常可能会很好地起作用,但对于此处讨论的情景,这样做会导致其短期影响很小,以至于无法在MPR上检测到。 如果可能,我们应该继续在MPR上进行实验。通过运行更长的时间获得的统计灵敏度, 通常不足以弥补将MPR设置为90%带来的灵敏度损失。
除了实验级别的保留之外,还有一些公司拥有较严格的保留,其中长期(通常为四分之一)的任何功能发布都保留了一部分流量,以衡量整个实验的累积影响。 Bing进行了一次全球支持,以衡量实验平台的开销(Kohavi等,2013),其中10%的Bing用户无法进行任何实验。也可以进行反向实验:在实验完成的几周(或几个月)后,将用户重新置于“对照”中(请参阅第23章)。
当实发现验结果令人惊讶时,一个好的法则是复制它们: 使用另一组用户或正交重新随机化重新运行实验。如果结果保持不变,则可以更加放心结果是可信赖的。复制是消除虚假错误的简单而有效的方法。此外,当实验进行了多次迭代时,最终迭代的结果可能会向上偏移。复制运行减少了多次测试的顾虑,并提供了无偏估计。请参阅第17章,了解更多讨论。
发布最终斜坡
我们没有讨论将实验提高到100%后会发生什么。根据实验的实施细节(请参见第4章),可能需要进行不同的后斜坡清理。如果实验系统使用基于版本分配创建代码分支的体系结构,则应在启动后清除无效的代码路径。如果实验系统使用参数系统,则清除仅意味着将新的参数值用作默认值。在快速发展的开发过程中,可能会忽略此过程,但这对于保持生产系统的健康至关重要。例如,在第一种情况下,如果意外执行了一段时间未维护的无效代码路径,这可能是灾难性的,这可能导致实验系统停机。