导读:本文将利用一个例子来探索设计、运行和分析对照实验的基本原则。这些原则适用于各种软件开发环境,包括网页服务器和浏览器、桌面应用程序、移动端应用程序、游戏主机、虚拟个人助理等。为了叙述尽量简单和具体,我们将专注于一个网站优化的例子。
作者:罗恩·科哈维(Ron Kohavi)、黛安·唐(Diane Tang)、许亚(Ya Xu)
来源:华章科技
我们用一个虚构的线上销售小部件的电子商务网站作为具体的例子。我们可以测试各类改动:新功能的引入、用户界面的改动、后端的改动等。
在我们的例子里,市场营销部门希望通过发送含打折优惠券的促销邮件提高销量。这涉及潜在业务模型的改变,因为该公司之前没有发过优惠券。然而,公司有员工最近了解到Dr. Footcare公司在添加优惠券后大幅流失营收的案例,也通过GoodUI.org了解到移除优惠券会产生正面的影响。
因为这些外部数据,公司担心在结账页面增加优惠券输入框会降低营收,即使没有优惠券,仅仅因为看到这一栏也会拖慢用户的结账速度,并导致用户开始搜索优惠券甚至放弃结账。
我们希望评估仅添加优惠券输入框带来的影响。这里可以用“伪门法”或“画门法”——如同造一个假门或者在墙上画一个门——来看看多少人会试图打开它。
在这个例子中,我们实现了一个在结账页面添加优惠券输入框的微小改动。这里我们不是要实现一个真正的优惠券系统,因为并没有优惠券可用。不论用户填写的是什么,系统都会显示:“此优惠券不可用。”
我们的目的仅是评估添加一个优惠券输入框本身对营收的影响,并确定是否有必要担心它会分散用户结账的注意力。
由于这是一个很简单的改动,我们将测试两种UI的实现方式。同时测试多个实验组去评估一个想法而不是一个实现是很常见的实验设置。在这个例子里,“想法”是添加优惠券输入框,“实现”是指一个特定的UI改动。
这个简单的A/B测试是评估这一新业务模型可行性的关键一步。
思考如图2.1所示的漏斗形的线上购物过程有助于我们将UI改动方案转换成一个假设。客户从网站主页开始,浏览一些小部件,往购物车里添加小部件,开始付款过程,最终完成付款。
▲图2.1 一个用户线上购物漏斗模型。用户不一定会在这个漏斗里线性前进,可以跳过、重复或是往返于步骤间
当然,这个漏斗是简化的模型,客户很少会这样线性化地完成每个步骤,他们会在步骤之间往返,有些重复访问的客户也会跳过某些中间步骤。然而,这个简单模型对我们全面考虑实验设计和实验分析很有帮助,因为实验的目的通常是有针对性地改善这个漏斗中的某个特定步骤。
对于这个实验,我们在结账页面添加一个优惠券输入框,测试如图2.2所示的两个不同的UI,并评估它们对营收的影响。我们的假设是:“添加优惠券输入框会降低营收。”
图2.2 a对照组:旧的结账页面 b实验组1:优惠券或礼品券输入框位于信用卡下方 c实验组2: 优惠券或礼品券弹出框
为了测量这一产品改动带来的影响,我们需要定义目标指标,也称为成功指标。如果只有一个目标指标,那么我们可以直接将其用作综合评估标准(Overall Evaluation Criterion, OEC)。对于这个实验,营收可能是个显而易见的选择。
请注意,即便想要提高的是营收总和,也不建议将营收总和作为指标,因为它依赖于变体对应的用户数量。即使各变体被等量分配,实际用户数也可能因为偶然性而有所不同。我们推荐按实际样本量归一化的关键指标,因此人均营收才是一个好的OEC。
下一个关键问题是决定哪些用户被计入人均营收这一指标的分母中:
现在细化后的假设是“在结账页面添加优惠券输入框会降低开始付款流程的用户的人均营收”。
设计、运行或分析实验之前,先来复习一些与统计假设检验相关的基础概念。
首先,我们通过理解基准线均值及其标准差来刻画一个指标。标准差表明了指标估值的变动有多大。我们需要知道这一变动,以正确地估计实验所需的样本量,以及在分析时计算统计显著性。对于大多数指标,我们测量它们的均值,但是也可以选择其他的概述统计量,比如百分位数。
灵敏度,或者说检测到统计上显著差异的能力,会随着标准差的降低而提高。提高灵敏度的典型做法是分配更多的流量进入变体,或者拉长实验的运行时间(通常用户量会随着时间增加)。
然而,实验开始的几周后,后面这种方法可能没有前者有效果,因为重复访问的用户使得去重用户量的增长呈次线性,而有些指标本身的方差也会随着时间而增长。
运行实验时,我们会为多组样本,而非单组样本,刻画一个指标。具体来说,在对照实验中,实验组有一组样本,每个对照组各有一组样本。如果零假设是来自实验组的样本和来自对照组的均值相同,我们会定量测试两组样本的差异的可能性大小。
如果可能性非常小,则我们拒绝零假设,并宣称差异是统计显著的。确切地说,有了实验组样本和对照组样本的人均营收的估计值,我们可以计算估计值的差异的p值,即在零假设为真的情况下观测到这种差值或更极端的差值的概率。
如果p值足够小,则我们拒绝零假设,并得出实验有效应(或者说结果统计上显著)的结论。但是多小是足够小呢?
科学的标准是使用小于0.05的p值,也就是说,如果事实上是没有效应的,那么100次里我们有95次能正确地推断出没有效应。另一种检验样本差异是否统计显著的方法是看置信区间有没有包含零值。95%置信区间是一个可以在95%的时间里覆盖真实差异值的区间。
对于较大的样本量,这个区间通常以观测到的实验组和对照组差值为中心点,向两边各扩展1.96倍于标准差的宽度。图2.3展示了p值和置信区间这两种方法的等价性。
▲图2.3
关于p值更详细的解读可以参考此前的文章《终于有人把p值讲明白了》。
现在可以开始设计实验了。我们已经有了一个假设和一个实际显著的边界,并且刻画了指标。我们将接着做以下决定来敲定设计:
这里我们假设随机化单元是用户。
以一个特定群体为目标意味着你只想对具有某一特征的用户运行实验。例如,要测试新的仅限于某几种语言的文本,这时,可以选择界面语言设置为这几种语言的用户。其他常见的目标属性包括地理区域、平台和设备类型。在我们的这个例子里,假设以所有用户为目标。
实验的样本量大小(对我们而言就是用户量)对结果的精确度有直接影响。如果你想要检测出很小的变化或者对结论更有信心,那么就要运行一个有更多用户的实验。这里我们列出一些可能要考虑的调整:
其他一些决定实验样本量的考虑因素如下:
另一个重要的问题是实验需要运行多久。我们需要考虑如下这些因素:
至此,我们的实验设计如下:
一般来说,实验的统计功效过大是没有问题的,甚至是推荐的,因为有时候我们需要检查细分群(例如,地理区域或平台),且有时候需要保证实验有足够的统计功效来检测多个关键指标的变化。例如,我们可能有足够的统计功效来检测对所有用户的营收的影响,但没有足够的统计功效来观测针对加拿大用户的影响。
还有一点值得注意的是,虽然这里的对照组和实验组有近似相同的样本量,但如果实验组数量增加,则可能要考虑让对照组的样本量比实验组多。
现在我们运行实验并收集必要的数据。这里只简单概述一下要点。
为了运行实验,我们需要:
一旦开始运行实验,并且使用工具化日志记录收集了日志数据,就可以开始着手处理数据、计算概述统计量并可视化结果了。
实验有数据了!分析实验对人均营收的影响之前,需要先做一些合理性检查来确定实验的运行是正确的。
多种漏洞都会使实验结果无效。为了抓住这些漏洞,我们会关注护栏指标(guardrail metric)或不变量(invariant)。这些指标不应该在对照组和实验组之间存在差异。如果有差异,那么实验中测量到的差异有可能是由其他变动而不是被测试的改动导致的。
不变量指标有两种类型:
如果合理性检查失败,那么很有可能背后的实验设计、基础设施或数据处理是有问题的。
完成基于护栏指标的合理性检查之后,我们可以开始看结果(表2.1)。
表2.1 结账页面实验的人均营收结果
由于两个对照组的p值都小于0.05,我们拒绝实验组和对照组有相同均值的零假设。
这意味着什么呢?我们证实了在用户界面添加优惠券输入框会降低营收。如果进一步研究数据,结果表明营收降低是因为完成付款过程的用户更少。
因此,任何发送优惠券的营销邮件需要扣除的不仅是实现优惠券添加系统带来的处理和维护成本,还有最开始添加优惠券输入框的负面影响。
由于这一市场营销模型被预测可以小幅增加部分目标用户的营收,而A/B测试显示它会显著降低所有用户的营收,最终我们决定放弃引入优惠券的想法。画门法的A/B测试节省了我们很多精力!
运行A/B测试的目标是收集数据以驱动决策。很多工作都用来确保实验结果是可重复的且可信赖的,以做出正确的决策。接下来我们对几种可能发生的不同情况梳理决策过程。
对于每一种情况,我们都已经有了实验结果,且目标是将实验结果转化为产品功能发布/不发布的决策。强调决策部分是因为一个决策既需要考虑从测量结果得到的结论,也要考虑更广泛的背景,例如:
如果成本很高,则必须确保预计的收益高于成本。对于这种情况,需要确保实际显著的边界设立得足够高。反过来,如果成本很低或没有成本,你可以选择发布任何有正面影响的改动,也就是说,实际显著的边界很低。
决策错误的代价是什么?不是所有的决策都是等价的,也不是所有的错误都是等价的。发布没有影响的改动可能没有任何坏处,但放弃有影响的改动可能机会成本很高,反过来也是一样。例如,你在网站上测试两个头条推广,且推广只存续几天的时间。由于改动的生命期很短,做出错误决策的代价很低。此时,你可能愿意降低统计显著性和实际显著性水平。
构造统计显著性和实际显著性阈值的时候,需要考虑以上这些背景。从实验结果出发来做决策或采取行动的时候,这些阈值非常关键。假设我们在实验开始之前已经考虑了这些背景并更新了阈值,现在来用图2.4中的例子解释如何用这些阈值指导决策。
▲图2.4
图2.4 关于决策是否发布时理解统计显著性和实际显著性的例子。实际显著的边界由两条虚线表示。各个示例结果的估计差异值(及置信区间)由黑框表示
要记住的关键一点是,有些时候实验结果给不了清晰的答案,但仍然要做出决策。对于这种情况,我们需要明确考虑的因素,尤其是这些因素如何影响实际显著和统计显著的边界设定。这些考虑会为未来的决策提供基础,而非局限于当前的单一决策。
关于作者:罗恩·科哈维(Ron Kohavi)是爱彼迎的副总裁和技术院士,曾任微软的技术研究员和公司副总裁。在加入微软之前,他是亚马逊的数据挖掘和个性化推荐总监。他拥有斯坦福大学计算机科学博士学位,论文被引用超过40 000次,其中有3篇位列计算机科学领域引用最多的1 000篇论文榜。
黛安·唐(Diane Tang)是谷歌院士,大规模数据分析和基础设施、线上对照实验及广告系统方面的专家。她拥有哈佛大学的文学学士学位和斯坦福大学的硕士及博士学位,在移动网络、信息可视化、实验方法、数据基础设施、数据挖掘和大数据方面拥有专利和出版物。
许亚(Ya Xu)是领英数据科学与实验平台负责人,曾撰写了多篇关于实验的论文,并经常在顶级会议和大学演讲。她曾在微软工作,拥有斯坦福大学的统计学博士学位。
本文摘编自《关键迭代:可信赖的线上对照实验》,经出版方授权发布。
延伸阅读《关键迭代:可信赖的线上对照实验》
推荐语:爱彼迎、谷歌、领英A/B测试领军人物撰写,亚马逊、谷歌、微软和领英等公司互联网产品成功的秘诀!谷歌院士JeffDean、脸书首任CTO、沈向洋等37位专家推荐。本书基于近些年实验领域的研究成果和实践经验,对实验的方法和应用做了很好的全景式描述,是一本兼顾系统性的方法论和基于实战的经验法则的书籍。