A/B Testing实践指南01: AB实验入门简介
本文主要是基于《Trustworthy Online Controlled Experiments —— A Practical Guide to A/B Testing》的读书分享及实践思考
0 前言
基于在每家公司每年进行超过20,000次控制实验的实践经验,作者总结了一些多年来遇到的问题、教训和陷阱。分享了如何通过在线控制实验(online control experiment) 来支持以数据驱动决策的企业文化,而不是依靠HiPPO(Highest Paid Person’s Opinion,即“老大说了算”)。提出对学生和刚开始做实验的行业专业人士的建议,并针对希望以数据驱动为决策的从业者深入探讨了一些高级话题。
本书内容既适用于大、小型互联网公司,也适用于团队和公司内部的组织。其核心问题是评估实验结果的可信度。作者相信特维曼定律(Twyman’s Law)所暗示的怀疑主义:任何看起来有趣或者与众不同的数字通常都是错误的。鼓励读者仔细检查结果并进行有效性测试,尤其是突破性的积极结果。获得数据很容易,但是获得正确的数据很难。
通过本书可收获以下学习内容:
- 科学方法:使用科学的方法,通过对照实验来评估假设。
- 定义标准:定义关键的度量标准和理想的总体评估标准(OEC, Overall Evaluation Criterion)。
- 可信结果:测试结果的可信度,并提醒实验者是否违反假设。
- 搭建平台:构建一个可扩展的平台,将实验的边际成本降低到接近零。
- 避坑指南:避免陷阱,如结转效应(Carryover Effects)和特维曼定律(Twyman’s Law),了解统计问题如何在实践中发挥作用。
【全书框架】
- 第一部分:任何人都可以阅读,无背景知识要求,主要包括以下四章:
第一章:概述在线控制实验的优势,并简要介绍实验相关的专业术语;
第二章:通过案例概述一个完整的实验操作过程;
第三章:描述常见的陷阱,并说明如何构建实验的可信度;
第四章:概述如何构建一个实验平台,并扩展在线实验。 - 第二部分:包括五个基础性的章节,比如组织度量等,推荐每个人阅读,尤其是领导和高管。
- 第三部分:包含两章, 补充了在线控制实验的技术。建议阅读人群包括:领导者,数据科学家,工程师,分析师,产品经理。 本部分内容有助于指导他们对如何有效的为项目投入时间与资源。
- 第四部分:专注于建立实验平台,主要针对工程师。
- 第五部分:深入探讨高级分析主题,主要针对数据科学家。
【作者简介】
- Ron Kohavi是Airbnb的副总裁和技术人员。之前是微软的技术研究员和公司副总裁。在加入微软之前,是亚马逊的数据挖掘和个性化总监。拥有斯坦福大学计算机科学博士学位,其论文被引用超过40000次,其中有三篇在计算机科学被引用论文Top 1000。
- Diane Tang是Google研究员,擅长大规模数据分析和基础设施、在线控制实验和广告系统。拥有哈佛大学的文学学士学位和斯坦福大学的硕、博学位,并在移动网络、信息可视化、实验方法、数据基础设施和数据挖掘/大数据方面拥有专利和出版物。
- Ya Xu是LinkedIn数据科学和实验担任负责人。她在A/B测试领域使领英成为最受尊敬的公司之一。在领英之前,她在微软工作,并获得了斯坦福大学的统计学博士学位。她被广泛认为是实验领域中最重要的科学家、实践者和思想领袖之一,拥有多项专利和出版物,经常在全国各地的顶级会议、大学和公司发表演讲。
【部分荐序】
- “精益方法论(Lean Methodology)的核心是科学方法:创建假设、进行实验、收集数据、提取见解、验证或修改假设。A/B测试是创建可验证和可重复实验的黄金标准,这本书是它的决定性文本”。——史蒂夫•布兰克(Steve Blank)斯坦福大学兼职教授,现代创业之父,《创业者手册》(The Startup Owner’s Manual)和《顿悟的四个步骤》(The Four Steps to The Epiphany)的作者。
- “一本既严谨又通俗易懂的伟大著作。读者将学习如何将可信的控制实验带给他们的组织,这些实验已经彻底改变了互联网产品开发”。——Adam D’Angelo, Quora联合创始人兼首席执行官,Facebook前CTO。
- “‘哪个在线选择更好?’我们经常需要做出这样的选择,而且经常犯错。为了确定哪种方法更有效,我们需要严格的控制实验,也就是A/B测试。这本由来自微软、谷歌和LinkedIn的专家编写的优秀而生动的书介绍了A/B测试的理论和最佳实践。这是互联网人的必读之书!”——Gregory Piatetsky-Shapiro博士,KDnuggets总裁,SIGKDD联合创始人,LinkedIn在数据科学与分析方面的顶级专家。
One accurate measurement is worth more than a thousand expert opinions.
– Admiral Grace Hopper
首先借用一个小案例引入A/B实验,微软的搜索引擎Bing由于一项网站的简单改变而带来最好的盈利增收。2012 年 Bing 的一个员工建议改进广告的显示方式,将标题下的第一行合并到标题行,形成一个长标题行。改动如下图。这个改变方案由于优先级较低而被搁置了六个月,但由于其代码难度较低而被执行,并开始在真实用户身上评估这个想法,随机向其中一些人展示新的标题布局,另一些人展示旧的标题布局。用户与网站的互动被记录下来,包括广告点击和由此产生的收入。这是一个A/B测试的例子,这是最简单的对照实验类型,比较两种变量:A和B,或参照物和实验物。
测试开始几小时后,一个“收入过高”的警报被触发,表明实验出了问题:实验新标题布局的广告产生了太多的收益。这样的“好得难以置信”警报非常有用,因为它们通常表明一个严重的漏洞,比如收入情况记录了两次(双计费),或仅只有一个广告显示而网页的其余部分被破坏了。
然而,对于这个实验来说,其增加的收入是有效的。Bing的收入增长了惊人的12%,在没有严重损害关键用户体验指标的情况下,这在当时仅在美国就转化为每年超过1亿美元。这个实验在很长一段时间里被重复做了好几次。
这个实验表示了在线控制实验的几个关键主题:
- 通常难以评估一个创意的价值。一个可以创造超过1亿美元的简单改变,却被推迟了半年。
- 微小改变也可能带来巨大影响。对于一个程序员来说,几天的工作就能带来1亿美元的ROI是极其罕见的。
- 极少实验能够带来巨大效果。Bing每年有超过一万个实验,但是像这样简单改变带来巨额收益的情况近年来仅此一次。
- 低实验开销。Bing的工程师可以访问微软的实验系统EXP,这使得科学地评估这个想法变得很容易。
- 整体评估标准(OEC)十分清晰。在这个实验中,营收就是OEC的关键点,但是只关注营收是不够的,这有可能导致网站上广告横飞,而这无疑会影响用户体验。Bing使用OEC来衡量收益和用户体验指标,包括每用户的session次数(用户流失还是在增加用户粘性)和其他几个组成部分。关键在于,尽管营收大幅增长,但用户体验指标并没有明显下降。
1 在线控制实验专业术语
控制实验(controlled experiments)具有悠久而有趣的历史,它们有时被称为A/B测试,A/B/n测试(以强调多种变量),现场实验,随机对照实验,拆分测试,存储桶测试和飞行实验。在本书中,我们会轮换使用以下术语, 且不讨论变量。
- 控制实验(controlled experiments)
- A/B测试(A/B tests)
AB测试被Airbnb、Amazon、Ebay、Facebook、Google、LinkedIn等公司所大量使用,这些公司每年有数以万计的实验运行,有时涉及数百万用户和测试所有的东西,包括修改用户界面(UI),相关算法(搜索、广告、个性化推荐等等),延迟/性能,内容管理系统,客户支持系统等等。这些实验也在多个渠道被使用:网站、PC端、移动app端或email。
在最常见的在线控制实验中,用户是随机划分的,并且保证同一个用户在多次访问中都会被分到同一个组(以用户为单位的随机划分)。在我们Bing的开头示例中,Control是原来的展示广告,Treatment 就是展示标题较长的广告。检测用户与Bing网站的互动,即对其进行监控并记录下来。根据记录的数据计算指标,这使我们能够评估每个指标之间的差异。最简单的控制实验中,包含 Control (A) 和 Treatment (B) 2个组。
本书涉及的专业术语如下:
- 综合评价标准(OEC):对实验目标的定量衡量。例如,您的OEC可能是每个用户的活跃天数,表示在实验期间用户处于活动状态的天数(即,他们访问并采取了一些行动)。增加这个OEC意味着用户会更频繁地访问您的站点,这是一个很好的结果。在短期内(实验持续的时间),OEC必须是可衡量的,并且被认为可以驱动长期战略目标。在统计学中通常被称为响应变量或者因变量。
- 参数(Parameter):可控的实验变量,被认为会影响OEC或其他感兴趣的指标,有时又被称为factor或variable。在简单的A /B测试中, 通常只有一个二值的参数。在网络世界中,通常使用具有多个值的单变量设计(例如A / B / C /D)。多变量测试(Multivariate Tests, MVT)可评估多个参数(变量)一起使用,例如字体颜色和字体大小,允许实验人员在参数交互时发现全局最优值(请参阅第4章)。
- 随机单位(Randomization Unit): 把测试单位(一个用户)分到不同 Variant组中的伪随机过程。良好的随机化可以保证在不同变量上的用户大致相等,因此可以比较确定的发现因果关系。必须以持久且独立的方式将单位映射到变量(即,如果用户是随机单位,则用户应始终看到相同的内容,并且用户对此应当是未知的)。作者强烈建议将用户作为进行控制实验的随机单位(也有控制实验将网页、sessions等作为随机单位)。
正确的随机分配至关重要!如果实验设计给每个 Variant 分配相同比例的用户,那么每个用户都应该有相同的机会被分配给每个Variant 。例子下面展示了正确随机化的难度和重要性。
在1940年代,兰德公司需要为他们的蒙特卡洛方法找到随机数, 所以他们创造了一本书,其中包括使用脉冲机生成的百万个随机数。 但是由于硬件方面的问题,他们发现原始表格存在重大偏差,并且在 1955 年不得不重新出版了一个新的书。
对照实验最初用于医学领域。美国退伍军人管理局(VA)进行了一项实验(药物试验):他们尝试使用链霉素治疗结核病,但试验失败了。原因是医生在选择测试病人的时候,引入了偏差(bias)(Marks 1997)。同样的实验在英国却成功了,因为英国的选择是完全双盲的。英国的实验创造了控制实验中的 “分水岭时刻” 一词。
任何因素都不应该影响随机分组过程。 注意,随机分组并不是完全瞎选,或者没有任何计划的行为;而是基于概率的精心设计的行为。
2 为什么做实验?相关性、因果性和可信度
假设你正在为Netflix 某个订阅业务工作,这个服务每月用户流失(结束订阅)X%。之后, 你决定引入一个新的功能,并观察使用该功能的用户的客户流失率为X%/2,即一半流失。这时,你可能会想宣称你发现了因果关系,也就是说,你发现了该功能可以减少一半的用户流失。 进而得出的结论是:如果我们使功能使用频率更高,订阅量将会猛增。但是你错了!根据那个数据,没有可以得出有关该功能是减少还是增加用户流失,两者都有可能。
一个类似的例子, 来自于Microsoft Office 365,微软发现遇到 Error Message 和软件崩溃越多的用户,流失率越低。难道代码越烂,用户越开心么?当然不是。原因是,使用Microsoft Office 365 越多的用户,遇到bug 的概率就大,而这部分用户是Microsoft Office 365 重度用户,所以他们很难流失。相关性不等于因果性,过分依赖这类指标,会使公司做出错误的决策。
1995年,Guyatt等人(1995)引入证据等级理论,将其作为一种对医学文献中的建议进行分级的方法,而Greenhalgh在她关于实践循证医学的讨论中对此进行了扩展。图1.3显示了基于Bailar(1983, 1)的简单的证据层次结构。随机对照实验是建立因果关系的黄金标准。 更复杂的模型,如牛津循证医学中心的证据水平也可以使用。
我们公司使用的实验平台允许实验者在Google,LinkedIn和Microsoft 每年进行数以万计的在线控制实验,并且实验结果具有较强的可信度。我们相信在线控制实验:
- 最科学,也是最靠谱的找到因果关系的方法;
- 可以发现其他方法很难发现的差异,比如随着时间的变化(敏感性);
- 可以发现很多预料不到的结果。
本书的重点是强调实验陷阱,并提供改善实验信任度的方法。在线控制实验提供无与伦比的能力,大规模收集可靠的数据,充分随机化,避免或发现陷阱(请参阅第11章)。当不能进行在线控制实验时,我们也推荐使用其他不那么值得信赖的方法,如观察性研究等。
3 控制实验所需的因素
不是所有地方都能用最严格的科学手段来实现控制实验,有时候条件不允许。例如,你不能对并购进行控制实验,因为我们不能让并购和它的反事实(没有这样的事件)同时发生。
一个有效控制实验的必要因素:(以下受试单元可以理解为参加实验的人)
- 受试单元可以被随机分配到不同的组中,而且不同组的受试单元不会相互影响。
- 受试单元的规模尽可能大,最好能够上千。受试单元越多,就越容易发现细微的影响。对于互联网大公司,1%的营收提升也相当可观。
- 要有一个可以量化评估实验效果的指标,最好是OEC。
- 对系统的改动要易于实现, 这对于互联网和软件公司来说,这点一般都比较容易。
大多数在线服务都满足或可能满足上述的条件,敏捷软件开发就是这样的创新系统。如果无法进行控制实验,则可以进行建模,并且可以使用其他实验技术(请参阅第10章)。关键是要明白控制实验提供了最可靠、最灵敏的实验评估变化的机制。
4 控制实验的三个原则
对于想搞controlled experiments 的企业,作者提出3个原则和建议:
1. 有意愿进行基于数据驱动的决策, 并且已经形成了OEC。
很少有公司不想搞 “数据驱动决策” ,但是真做起来的却很少。测量用户从新功能里获得的好处是需要花钱的。而且客观的测量标准,往往会表明项目效果其实并没有预期的那样乐观。很少有公司会愿意花钱去定计划去测量,并且跟踪项目的进度。
现实中往往做的是制定一个计划去执行,最后宣称成功了。 我们最常用的一种方法就是估计,但往往这非常不靠谱。如果想做数据驱动型决策,那么公司就能找到一个明确定义的OEC,对于一些大的公司来说,他们可能有多个OEC在不同的场合使用。OEC 需要能够测量这一个短时期内的变化,比如两周之内。找到这些指标是并不容易。而且这些指标同时必须能用作长期指标。比如利润就不是一个好的OEC ,因为有些决策在短期内会带来利益,但是对长期内就会造成损失。
同时也要注意数据来源的多样性,一个好的数据驱动型决策,需要保证它的数据来源于多个数据源。一个数据驱动型组织会去收集很多信息来帮助他们做决策,而不是依靠个人的直觉去做决策。
2. 愿意投入资源,并确保测试结果可信。
在线网站或软件进行控制实验有得天独厚的优势。因为他们容易获取数据,进行干预(改动功能)的成本往往非常低。而且控制实验的思想与敏捷软件开发也很契合,二者联合起来可以发挥更大的作用。
如果你可以进行控制实验,确保它们的可信度是很重要的。在进行在线实验时,得到数字很容易,而要得到你能相信的数字是很难的。第3章会详细讨论这些。
3. 认识到在评估想法的价值方面存在不足。
开发新功能是因为团队认为它们有用,但在许多领域,大多数想法都无法改进关键指标。在微软的测试中,只有三分之一的想法改善了他们设计的标准(Kohavi, Crook和Longbotham 2009)。在Bing和谷歌等优化良好的领域,成功的可能性就更大了,在这些领域,某些指标的成功率约为10-20% (Manzi 2012)。
Slack产品和生命周期总监法里德·莫萨瓦特(Fareed Mosavat)在推特上表示,根据Slack的经验,只有大约30%的盈利实验显示出积极的结果。“如果你在一个以实验为导向的团队中,你最好要习惯70%的工作被丢掉。合理构建您的工作流程”(Mosavat 2019)。
Avinash Kaushik在他的《实验和测试入门》(Kaushik 2006)中写道:“80%的情况下,大家对客户需求的理解是错误的。” 麦克·莫兰(Mike Moran, 2007, 240)写道,Netflix认为尝试的事情有90%是错误的。来自Quicken Loans的Regis Hadiaris写道:“在我做测试的5年里,我猜测结果的正确性只相当于一个美国职业棒球大联盟球员击球的正确性。” “没错,我已经这样做了5年了,我只能‘猜测’大约33%的时间测试的结果!”(2008年Moran)。
并非每个域的统计数据都这么差,但大多数运行 controlled experiments 并且直接面向客户的网站都遇到了这种情况, 这导致他们现在很谦卑:
我们在评估想法的价值上表现的很差。
5 滴水穿石
实际上,可以通过许多小的更改来实现对关键指标的改进:0.1%至2%。许多实验只会影响一部分用户,当一个10% 的改善只影响了 5% 的用户,那么对总体的改善则为0.5%。
正如阿尔·帕西诺(Al Pacino)在电影《Any Given Sunday》中所说的那样,“…获胜是一寸接一寸的。”
Google 广告案例
经过一年多的努力,Google在2011年启动了改进的广告排名机制开发和增量实验(Google 2011)。开发工程师测试了新的和改进了的模型 。他们进行了数百项受控实验,并且进行了多次迭代;有些横跨所有市场,有些用于特定市场,以便他们更深入地了解对广告客户的影响。功能的巨大改动,加上控制实验的帮助,最终使得Google 巧妙的将多个功能进行组合, 提升了广告用户的用户体验,然后他们以更低的单个广告费用获得了更好的广告效果。
Bing 相关案例
Bing的Relevance团队由数百人组成,负责每年将单个OEC指标提高2%。这2%是他们每年做的所有实验效果的总和。 因为每年要做上千个实验,有些实验因为巧合,就会导致某个Treatment 超过 2%。最后确认超过的2%是通过验证性实验来完成的。
Bing 广告案例
Bing广告团队的收入每年稳定增长15-25%(eMarketer 2016),但大多数改进都是逐个进行的。每个月发布一次改进包,大多数改进很小,甚至有些月度软件包的效果是负的。
可以看到12月左右的季节性峰值, 用户的购买意愿急剧上升,因此广告空间增加,千次搜索量收入增加。
6 几个有趣的在线控制实验案例
1. 在正确的时间提出报价
2004年,亚马逊在主页上放了一个信用卡优惠。它利润丰厚,但点击率(CTR)很低。该团队进行了一个实验,将报价移动到用户添加商品后看到的购物车页面,显示了简单的数学计算,突出显示用户将收到的节省,如图1.5所示(Kohavi等人,2014)。 因为向购物车添加商品的用户有明确的购买意图,所以该报价显示在了正确的时间。对照实验表明,这个简单的改变使亚马逊的年利润增加了数千万美元。
2. 个性化推荐
亚马逊的Greg Linden创造了一个基于用户购物车中的商品展示个性化推荐的原型。当你添加一个条目时,推荐就会出现添加另一个项目,新的推荐显示。Linden觉得测试模型看起来很有希望,但一位营销高级副总裁坚决反对,声称它会分散人们的注意力,让他们不愿意下单支付。Linden因此被禁止继续研究这个问题。尽管如此,他还是进行了一项对照实验,结果“这一功能以巨大的优势胜出”,最终购物车推荐功能上线。
3. 速度是王道
2012年,微软Bing的一名工程师改变了JavaScript的生成方式,大大缩短了发送给客户端的HTML,从而提高了性能。控制实验显示了惊人数量的改进指标。他们做了一个跟踪实验以评估对服务器性能的影响。结果表明,性能改进还显著提高了关键用户指标,如成功率和成功时间,每10毫秒(眨眼速度的1/30)的性能改进就足以支付工程师全年的全部成本。
到2015年,随着Bing性能的提高,当服务器在不到一秒的时间内返回第95个百分位数的结果(即95%的查询)时,就有人质疑性能提高是否还有价值。Bing的团队进行了后续研究,关键用户指标仍有显著提高。虽然对收益的相对影响有所降低,但Bing的收益在这段时间里提高了很多,每一毫秒的性能提升都比过去更有价值;每四毫秒的改进可以支付一位工程师一年的工资!具体参见第5章。
在多个公司进行了性能实验,结果表明性能是多么关键。在亚马逊,100毫秒的减速实验使销售额下降了1%(林登2006b, 10)。Bing和谷歌的发言人(Schurman和Brutlag, 2009年)联合发表的一篇演讲显示了性能对关键指标的显著影响,包括不同的查询、收益、点击、满意度和点击时间。
4. 减少恶意软件
广告是一项利润丰厚的业务,用户安装的“免费软件”通常包含恶意软件,这些恶意软件会污染网页上的广告。下图显示了使用恶意软件的用户对必应搜索结果页面的感觉。注意,页面上添加了多个广告。
不仅必应的广告被删除,剥夺了微软的收入,而且低质量的广告和通常不相关的广告被显示出来,提供了糟糕的用户体验——对于那些可能没有意识到为什么他们会看到这么多广告的用户。
微软对380万潜在受影响的用户进行了控制实验,其中修改DOM(文档对象模型)的基本例式被覆盖,只允许来自可信源的有限修改。结果显示,Bing的所有关键指标都得到了改善,包括每个用户的访问量,这表明用户的访问量增加了,或者减少了。此外,用户的搜索更成功,更快捷地点击有用的链接,年收入也提高了数百万美元。另外,页面加载时间是我们前面提到的一个关键性能指标。
7 延伸阅读
Multi-armed Bandit是一种流量分配可以随着实验的进行而动态更新的实验(Li et al. 2010, Scott 2010)。例如,我们可以每小时重新审视一次实验,看看每种变量的表现如何,我们可以调整每种变量接收到的流量比例。表现良好的变种会获得更多的流量,表现不佳的变量会获得更少的流量。
Multi-armed Bandit实验通常比“经典的”A/B实验更有效,因为它们会逐渐将流量转向获胜的变量,而不是等待实验的结束。虽然有很多问题是适合他们解决的,而主要的限制是评价目标必须是单一的OEC,而OEC可以很好地衡量重新分配,例如,点击率和session次数。此外,让用户接触到一种糟糕的变量,并不平等地将其与其他优胜变量进行分配,这也可能造成潜在的误差。
2018年12月,本书的三位合著者组织了首届实践在线控制实验峰会。包括Airbnb、亚马逊、Booking.com、Facebook、谷歌、LinkedIn、Lyft、微软、Netflix、Twitter、Uber、Yandex和斯坦福大学在内的13家组织共派出了34名专家,介绍了会议的概述和挑战(Gupta等人,2019年)。对挑战感兴趣的读者将从这篇文章中受益。
8 延伸链接
(一些业界大佬基于实际案例的A/B Testing实践经验分享):