《值得信赖的在线可控实验——A/B实验实用向导》总结

今天我们要来总结技术书籍 Trustworthy Online Controlled Experiments: A Practical Guide to A/B Testing 。这本书的三位作者在业界享有盛誉,他们在在线可控实验、实验平台的搭建和运维以及如何构建数据驱动化的公司企业文化有着丰富的经验。全书是数据科学家、机器学习工程师产品经理以及一切对在线可控实验有兴趣的研发人员的必读参考书,是技术书籍领域的经典。

作者简介

《值得信赖的在线可控实验——A/B实验实用向导》总结

本书有三位作者,都是来自互联网公司从事在线实验运行、管理和研究工作多年的专业人员。

第一作者 Ron Kohavi 在成书时担任Airbnb的副总裁和技术院士(Technical Fellow)。之前Ron长期担任Microsoft的集团副总裁和技术院士,负责在线实验平台的工作。在加入Microsoft之前,Ron担任Amazon数据挖掘和个性化方面的总监。Ron于斯坦福大学获得计算机博士学位,他有非常丰富的学术论文发表经历,有很多关于在线可控实验方面的经典之作以及帮助扩大这方面研究影响力的课程和演讲。

第二作者 Diane Tang 在成书时是Google的技术院士(Technical Fellow),专注于大规模数据分析以及基础设施、在线可控实验和广告系统的研发。她于斯坦福大学获得博士学位。下文要提到的“并发实验”的架构就是Diane(和其他合作者)于2010年的KDD上首次提出。

第三作者 Ya Xu 在成书时是负责LinkedIn的数据科学和实验平台系统的资深总监,之前在Microsoft任职。Ya于斯坦福大学获得统计博士学位,其发表过诸多关于在线可控实验的论文并且经常在诸多顶级学术与工业界的会议中发表演讲。

全书结构

全书大体上可以分为以下五部分内容。

  • 第一部分,是对于“可控实验”(Controlled Experiments)基础知识和信息的介绍。作者们讲解了什么是可控实验和为什么要做可控实验等基础问题后,利用一个虚构的电商网站测试界面的例子完整得展示了如何设置和分析一个在线可控实验的全流程。同时,作者们开始介绍一些理解实验结果的“陷阱”和“谬误”,为后面章节详细介绍针对这些问题的解决方案打下基础。最后,作者们讨论了“实验平台”(Experimentation Platform)和公司文化对于如何利用实验来建立“数据驱动”(Data Driven)文化的必要关系。
  • 第二部分,是几个有针对性的专题,主要探讨了速度对于网站运行的重要性、“指标”(Metric)的选取以及如何建立“机构记忆”(Institutional Memory)等。
  • 第三部分,是探讨了当可控实验变得不可能的时候,如何使用现有的数据进行 “观察研究”(Observational Studies) 。这部分技术是对可控实验的有效补充。
  • 第四部分,是针对实验平台的高级内容,包括如何运行“客户端”(如手机)的实验、如何进行“检测设置”(Instrumentation)、如何选择“随机化单元”(Randomization Unit)、如何“发布实验”(Ramping Experiment)以及如何规模化实验分析。
  • 第五部分,是针对实验分析的高级内容,包括如何进行统计统计假设检验、“方差缩减”(Variance Reduction)、A/A实验、如何处理“样本比率偏差”(Sample Ratio Mismatch)以及衡量“长期效果”(Long-Term Treatment Effects)

整本书可以说是包含了丰富的经验之谈和理论论述。

内容剖析

我们接下来就针对书中的一些重点内容为大家进行剖析。

数据驱动的企业文化

《值得信赖的在线可控实验——A/B实验实用向导》总结

在线A/B实验已经成为了今日互联网和软件工业中必不可少的数据驱动工具。很多公司把是否应用在线实验当做一个公司是否数据驱动的一个试金石。本书用了“爬”(Crawl)、“走”(Walk)、“跑”(Run)以及“飞”(Fly)四个阶段来对公司如何利用在线实验来达到数据驱动的成熟程度进行了分类(第4章)。

  • “爬”这个阶段主要是公司对最基本的检测设置和数据科学能力进行搭建。在这个阶段的实验平台主要是解决能够进行实验的设计、执行和分析。团队可以并且已经运行了一些实验。这些成功的案例有助于进行到下一个阶段。
  • “走”这个阶段主要是从可以运行少量的实验到定义一系列标准指标并且开始运行更多的实验。在这个阶段,团队开始运行更加复杂的一些检测来持续验证“检测设置”并且能够通过运行A/A实验来验证平台潜在的问题,同时能够进行“样本比率偏差”检测。
  • “跑”这个阶段对于团队来说,已经可以运行大量的实验,并且各种指标也都相对成熟。公司能够利用“综合评测指标”OEC(Overall Evaluation Criterion)来进行多个指标之前的权衡。整个组织利用实验来对绝大多数的新功能和改动进行测试。
  • “飞”这个阶段则是团队的几乎所有改动都需要经过在线实验的验证。“功能团队”(Feature Teams)已经可以在没有数据科学家的辅助下对大多数的实验进行独立的分析和运作。整个平台的专注点转移到了大规模自动化以及建立“机构记忆”上。同时通过对过去实验的分析,整个平台的有效性和针对实验运行的最佳实践也能够得到不断得更新。

书中强调团队不管在哪个阶段,领导在多个层面的支持(Buy in)是团队能够成功的重要因素。同时,在建立真正的数据驱动团队的过程中,领导的意见(也就是所谓的Highest Paid Person’s Opinion)和完全依靠直觉的产品开发都是需要逐渐被大规模实验和数据驱动所替代的。因此,在这个过程中,领导需要建立起机制来帮助团队慢慢过渡到“飞”这个阶段。除了领导的支持,书中强调了机制和“机构记忆”的重要作用。也就是说,平台和分析本身只是有效的数据驱动团队的重要组成部分,但团队说到底还是人与人协作的平台。因此,书中(第四章)提到了很多有效的机制来帮助团队拥抱实验文化,例如在团队内部开发关于实验平台和实验分析的课程让更多的人能够接触到这样的知识和技能;再例如在实验平台发展的早期举行例行的会议来针对实验的假设、不同“指标”之间的取舍等进行讨论从而加强这部分企业文化的建设。

作者们也给出了作为企业如果希望利用在线实验来达到数据驱动的三个重要的条件(第1章)。

  • 第一个条件是企业希望利用数据进行决策并且希望能够通过标准化OEC。换句话说,一个企业希望把对于前进目标的讨论和取舍都能够融入一个标准化的OEC并且能够清晰得让整个企业都理解和为之奋斗。
  • 第二个条件是企业愿意为实验平台等基础设施以及实验结果的可信性进行投资。我们前面提及了企业在应用实验来进行决策的几个阶段。很明显,每一个阶段都有软件、组织流程和企业文化等方面的持续投入。这里面,作者们专门提到了实验结果的可信性。也就是说,得到数字容易,但是能够得到让人信赖的数字则需要下不小的功夫
  • 第三个条件是企业愿意承认自己对于不同的想法很难确定它们的价值。这一点尤为重要,在书中被反复提及。首先,这个观点的第一层信息是作者们观察到很多企业,即便是运行大量实验的成熟企业例如微软,也只有近30%的实验结果是正向积极的,能够最终发布到整个的网站。其次,这个观点的第二层信息就是对于单个想法,很多时候我们都很难去衡量它的好坏。作者举了好一些例子展示一些积极有价值的想法在早期都得到了不小的忽视。

实验平台的架设

《值得信赖的在线可控实验——A/B实验实用向导》总结

A/B在线实验的思想非常直观,但这并不代表实验平台的搭建和演化是一件容易的事情。实验平台有诸多方面需要很细致的关注,而一些微小的决策错误往往可能带来完全不可信的实验数据。可以说是细节决定成败。

书中谈到的一个可以说是非常有意思的有关实验平台的“陷阱”(第3章)那就是利用“页面跳转”(Page Redirect)来实现针对“控制组”和“对照组”之间的分流。如果“控制组”不经过“页面跳转”而“对照组”经过“页面跳转”,这样的设计往往会带来两部分流量之间产生细微的但可以被检测出来的差别。从这个例子可以看出实验平台实现细节的重要性。

早期的实验平台都只支持“单层”(Single Layer)架构,意思就是100%的流量被分配到几个“流量桶”(Bucket)中。这些“流量桶”互相独立互不干涉。这样每个“流量桶”对应一个“对照组”(Treatment)。我们可以针对一系列“对照组”同时进行实验。然而,我们很容易发现,在这样的设置下单位时间内可以测试的“对照组”数目是有限的。因而,我们可能需要面临“流量”不够的情况。书中(第4章)介绍了“并发实验”(Concurrent Experiments)的概念,也就是“多层”(Multiple Layer)架构,可以允许多个实验同时在某一块流量上运行。当然,这虽然带来了理论上可以有无限流量的好处,但也为实验的分析提出了更高的要求。一般来说,我们需要能够分析两两实验之间的“交互”(Interaction)效果。成熟的实验平台需要能够支持“并发”实验以及能够检测实验之间的“交互”效果。

实验平台另外一个需要注意的技术点,那就是如何选取“随机单元”(Randomization Unit)的问题(第15章)。什么是“随机单元”呢?简单来说,“随机单元”就是实验平台选取的达到随机化的最小“单元”。一个通常的网站,我们可以选择“页面级别”、“会话级别”以及“用户级别”的“随机单元”。例如,如果我们选择“页面级别”的“随机单元”,实验平台就可以针对某一个页面,用户每一次打开页面的时候来决定把用户导向某个“对照组”。这几种选择自然意味着不同的取舍,并没有一定的优劣之分。第一,我们需要考虑的是“随机单元”和“分析单元”(Analysis Unit)之间的关系。最简单的情况那就是“随机单元”和“分析单元”一直。比如,一个经常采用的策略就是“随机单元”和“分析单元”都采用“用户级别”。两种单元之间的不一致性往往使得实验分析更加复杂。

最后,书中提及了“实验发布“(Ramp)是一个往往容易忽视但又非常重要的步骤。从比较小的流量慢慢发布到相对比较大的流量知道最后全站发布,整个过程需要的是自动化和风险控制的结合。通常情况下,实验平台在“实验发布”之后还可以预留一些流量来衡量实验的长期效果。另外一个可以降低错误的步骤则是重复“发布”某个实验,看实验的结果是否能够保持。

实验指标的构建和选取

《值得信赖的在线可控实验——A/B实验实用向导》总结

架设好实验平台并且能够平稳运行实验之后,我们需要选择什么指标来进行检测,从而来帮助我们进行数据驱动决策。

选取实验指标的第一要素,就是选择“综合评测指标”OEC。书中在第1章、第2章和第7章都对OEC有详细的讲述。简单说来,我们希望能够用OEC,这一个唯一的衡量指标,来指导我们如何对实验结果进行取舍。在现实场景中,我们往往希望检测多种指标。这对于我们了解实验对于系统所带来的改变固然有好处,使得我们可以关注不同方面的变化,然而实验的最终的目的是进行决策,面对多个指标的决策往往是困难的。因此,作者们认为,与其对于每一个实验对要面对不同指标的决策,还不如直接把所有的权衡都包含在唯一的指标OEC里面,这样可以把决策的困难前移到定义阶段,而在后面的实验阶段可以根据OEC来进行快速的判断。第7章专门了讨论了如何构建OEC的一些细节经验。

书中第6章则对指标进行了一些更加深入的讨论。虽然针对一款产品或者一个团队来说,可能会有很多指标的选择,然而不同的指标有着不同的作用。第一类指标是“目标指标”(Goal Metrics)。这一类指标是产品和团队发展的最终发展方向。通常来说,“目标指标”是一个或者非常少数的指标。这一类指标的设立往往需要产品或者团队的领导层来进行决策。有了“目标指标”之后,在现实的操作中,这些指标往往难以在短期内被改变。这里的短期通常指的是在线实验的几周时间。也就是说,虽然我们希望能够直接优化“目标指标”,但经常并不具备可操作性。因此,我们需要更有可操作性的第二类指标“驱动指标”(Driver Metrics)。这一类的指标和“目标指标”应该是有相关性(Correlation)甚至是有因果相关(Causality)的,但同时又要比“目标指标”更容易检测变化以及进行操作。第三类指标是“护栏指标”(Guardrail Metrics)。这类指标的作用是确保产品或者团队的一些最基本的运行平稳。一般来说,“护栏指标”有一个范围来保护产品的运行底线,这样即便“目标指标”或者“驱动指标”有所增长也需要不大幅度影响“护栏指标”。

书中在第6章和第7章中有不少对于在线产品指标选择的意见和建议,还包括了针对“指标”的博弈的讨论。

实验数据分析

《值得信赖的在线可控实验——A/B实验实用向导》总结

有了实验平台和我们需要检测的指标之后,实验结果的分析就成为了一件重要而且有挑战的工作。产生一组数据往往比较容易,但能够从数据中分析得出对实验的“洞察”(Insight),则并不简单。

A/B在线实验数据分析的基础来自于统计的假设检验。基于 “双样本”(Two-Sample)的t检测(t-Test) 是来进行假设检验的重要工具。同时,我们也需要理解 p值(p-value) 以及置信区间的含义。这些概念在现实应用中常常被误解。在书中第17章有比较详细的简介。然而对于实验数据分析,仅仅知道t检测和p值是远远不够的。书中介绍了不少相对不经常被讨论到,但又很普遍的一些问题。

第一个重要主题就是 “多次测试”(Multiple Testing) 。简单来说,传统的假设检验的设置是对需要检测的“假设”(Hypothesis)进行唯一的测试,然后计算p值。在这样的情况下,我们有5%的概率观测到某一个并没有实际变化的“指标”显得有统计意义上的显著变化。然而在现实中,对于同一个实验,我们常常通过实验平台反复观测结果,或者反复针对同一个想法进行迭代。更加严重的是,我们针对同一个实验, 常常同时观测几十个有时候上百个“指标”。这些行为都会导致“多次测试”的问题,也就是大大增加观测到并不该显得有变化的“指标”有统计意义变化的概率。书中第17章讲了一些处理“多次测试”问题的实用判断方法。在现实运作中,“多次测试”问题会在长期运行平台和有实验数据分析后让很多结果有“水分”。

第二个问题就是针对“方差”的计算。t检测中我们需要对数据的方法进行计算。书中的第18章指出,有时候我们的“方差”计算是有问题的,例如前文提到的“随机单元”和“分析单元”不一致的情况下,尤其是我们需要计算一些比率如点击率。一个经常遇到的场景就是,我们的“随机单元”是“用户级别”,然而我们希望计算一些页面级别的点击率,看是否在“控制组”和“对照组”之间有差别。这时候,就存在“随机单元”和“分析单元”不一致的问题,传统的计算点击率的“方差”公式有可能是错误的。那么,第18章针对这样的问题进行了分析。

书中还提到的一个重要的数据分析手段是看“样本比率偏差”(Sample Ratio Mismatch)。在理想状态下,“控制组”和“对照组”的流量是五五开的,也就是50%的用户会到“控制组”另外50%的用户会到“对照组”。那么,如果在现实中,是50.43%的用户到了“控制组”另外49.57%的用户到了“对照组”,这样的情况还是正常的吗?我们还能信任这样的实验结果吗?书中第21章讲解了如何针对这样的情况进行排查和分析。简单来讲,我们需要把这样的分流结果当做是假设检验,看这样的结果是否异常。

类似的看似简单实际需要认真对待的还有针对A/A实验的结果。在第19章里专门讲了A/A实验的一些经验和数据处理。A/A实验往往作为检测平台稳定性和实验设置是否正确的重要手段。

除了这些非常实用的场景外,书中还在第22章介绍了更加高阶的话题,那就是如果“控制组”和“对照组”之间有“干涉”(Interference)怎么办。也就是说,传统的实验我们的一个重要的假设就是“控制组”和“对照组”的完全隔绝。然而在现实中的一些设置中,完全的隔绝是不可能的。例如,在社交网络中,因为朋友与朋友的关系,于是如果我们按照传统的随机划分流量的方法,则有可能一个用户在“控制组”,而其朋友在“对照组”,这样就使得这个用户可以接触到“对照组”的一些信息,从而违反了假设检验的一系列基本假设。在这一章,作者们给出了一些参考的解决方案。

除了针对衡量“指标”在实验内的数据分析之外,作者们还在第23章讨论了一个非常重要的话题,那就是如何衡量“指标”的长期效果。一个经常发现的现象就是,有一些“指标”的效果在A/B实验之后,可能会出现一些“恶化”,也就是说,效果可能没有之前那么明显了,甚至会出现效果完全消失。作者们在这一章详细分析了“指标”长期效果出现变化的一些可能性,以及如何去做一些针对性的分析来看“指标”是否有长期效果不佳的问题。这一部分算是高阶内容,建议感兴趣的读者阅读。

观察研究和因果推论

《值得信赖的在线可控实验——A/B实验实用向导》总结

在有不少的情况下,我们无法对需要研究的问题进行实验。这一方面有可能是实验是现实中不可操作的,另一方面也可能是做实验会有伦理、道德等挑战,因此“观察研究”和“因果推论”(Causal Inference)就成为了在这种情况下我们依然希望进行数据驱动决策的唯一选择。本书的作者们在第11章简要介绍了“观察研究”的一些基本技术。不过,对于“观察研究”的可靠度,作者们持有谨慎的态度。原因是一般的基于“观察研究”的“因果推论”方法因为有很强的假设有不小的局限性。作者们甚至指出了一些研究的结果因为后期发现的一些问题而导致结论发生很大的变化而不可信。尽管如此,我们还是建议读者们对第11章的内容进行普遍的了解。

总结点评

这本书可以说是作为数据科学家、机器学习工程师、产品经理以及一切对于在线可控实验有兴趣的研发人员“宝典”级别的参考书。全书包含了丰富的理论基础、实践指导以及案例分析,是一本难能可贵的集科普与进阶为一体的技术书籍。三位作者,特别是第一作者Ron在微软多年从事在线可控实验研发和领导工作的经历,使得这本书从某种意义上成为了他对这些年工作的一种总结之作。本书高阶部分的内容可以直接连接到当前研究和实践的热点内容,可以使程度较高的读者也能有比较享受的阅读体验。总体而言,本书可以作为可以反复阅读的业界经典之作。

原文 

http://column.hongliangjie.com/读书笔记,在线实验/2020/05/08/online-tests/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 《值得信赖的在线可控实验——A/B实验实用向导》总结

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址