17611538698
webmaster@21cto.com

提升用户体验的必杀器—A/B实验统计方法解密

资讯 0 3190 2017-09-28 12:02:10

abtest.png

导读:A/B 实验是很多互联网技术团队都非常关注的内容,本文内容由滴滴出行效能平台部倾情呈现,介绍 A/B 实验所涉及的重要统计学知识。


前言

持续快速有效的A/B实验是实现业务从十到百增长、获得更好的用户体验的必杀器,而其背后的黑科技来源于统计。本文将介绍使用Apollo进行A/B实验所涉及的重要统计学知识,以帮助大家更好的设计实验并解读实验结果,做出科学有效的数据驱动决策。

为什么统计对于A/B实验如此重要呢?因为A/B实验从本质上来说是一个基于统计的假设检验过程,它首先对实验组和对照组的关系提出了某种假设,然后计算这两组数据、确定这两组数据差异是否存在统计上的显著性,最后根据上述结果对原假设做出判断。但是事实上,我们关心的重点并不是实验组和对照组这一小部分用户,而是我们的新方案最终全量曝光给所有用户会带来多大的影响。如果这是一个不太成功的方案,直接全量上线,等到真正造成大量用户损失就无法挽回了。而统计的价值在于其先验性,能帮助我们在事情尚未发生时通过手头有限的信息来预测和估计我们不了解的结果,且具有一定的准确度。

因为统计能根据有限信息一定程度上准确推测全量信息,所以它满足了我们同时验证多个idea的需求。使得平台可以同时并行跑大量实验,大大提高测试效率。而测试效率与业务增长速度呈高度正相关,即使100个实验里有80个与预想的转化率提升无关,也帮助验证了100个idea,挡住了80个无效的尝试,这就是为什么统计对于A/B实验来说如此有高价值的原因。

这看起来很简单,但其实也不简单。如果我们想知道两个机器学习模型哪个用户体验更优,我们可以随机选取10000个用户做实验,对5000个用户采用第一个模型,另外5000个用户采用第二个模型,经过一周的的观察,得到第一个组转化率为40%,第二个组转化率为41%。那么能否认为第二个模型的用户体验更好呢?如果简单粗暴来看,41% 明显高于40%,我们可以认为对于这10000个用户来说,第二组的方案确实用户体验更好。但需要注意的是,这10000个用户仅是这个实验中的样本,样本永远不可能是总体的完美代表,用样本估计总体是有偏的,那么这次估计可不可信,多大程度可信,这是统计需要解决的问题。

接下来,让我们来快速定义一些术语:
/uploads/fox/28070344_0.jpeg
总体 (Population):我们最终关注的全部对象。例如,如果我们的实验对象是10%的用户,那么它与剩下90%用户组成的全部用户是总体。
样本 (Sample):总体中的小部分用户,这是我们的实验对象。例如,如果我们的实验对象是10%的用户,那么样本就是这10%的用户。
样本量 (Sample Size):样本的总个数。

样本统计量 (Sample Statistics):它本身是个很宽泛的概念,可以是样本均值,可以是比率, 可以是方差。但是在A/B实验中,由于我们目标是了解实验组和对照组方案的好坏,样本统计量特指这两组的差异, 如实验组和对照组的转化率之差,用p2-p1表示。

抽样 (Sampling): 采用某种特定的方法,从总体中选取一部分有代表性样本的方法,比如随机抽样。

分布 (Distribution): 你可以把分布想象成一个横轴为观测值,纵轴为出现频率的图,比如扔骰子只可能出现1-6这6种可能,重复扔50次骰子,它的分布也许如下:

/uploads/fox/28070344_1.jpeg
正态分布 (Normal Distribution): 又叫高斯分布。它的分布图是一个两头少/中间多的对称的钟形曲线。自然界的许多随机事件都服从这种分布, 如人的身高,体重。对于正态分布的数据,有68.2%个落在距离总体均值1个标准差 (σ) 的范围内,95.4%个落在距离总体均值2个标准差 (σ) 的范围内,99.7%个落在距离总体均值3个标准差 (σ) 的范围内(中心极限定理和正态分布的运用),有95%个落在距离总体均值1.96倍个标准差 (σ) 的范围内。
/uploads/fox/28070344_2.png
伯努利分布 (Binomial Distribution): 只有0和1两种取值。都可以表达为是或否的问题。例如,抛一次硬币是正面向上吗?新出生的小孩是女孩吗?转化率就满足这种分布。

中心极限定理 (Central Limit Theorem):随着抽样次数增多,样本均值的抽样分布趋向于服从正态分布。这里需要注意的是,抽样次数并不是样本量,一次实验只是一次抽样,只能得到一个样本均值。而n次抽样会得到n个值,这些值的分布才是正态分布。举个例子,在下图中当抽样次数达到30次时,样本均值的分布逐渐呈一个对称的钟形曲线。中心极限定理是概率论的重要定理,它是接下来谈到的显著性检验的基础。如果一组数据属于正态分布,我们可以根据正态分布的概率密度函数推算出置信区间或p-value,当一组数据不属正态分布时,我们仍然可以依据中心极限定理和正态分布的函数推导出置信区间和p-value。

关于置信区间和p-value在下文重点谈到。
/uploads/fox/28070344_3.png
(Source: Dawson B, Trapp R G: Basic & Clinical Biostatistics,4th Edition)
 
有了以上背景知识铺垫,我们接下来继续说A/B实验。理想状态中,样本能够完美的代表总体。例如:总体有100,000个用户,有10,000个用户成功转化,那么转化率为10%。理想状态中,抽取100个用户做实验,那么一定有10个用户转化。在这个例子中,样本的转化率10%是严格等于总体转化率10%的。但是现实没有这么完美。现实情况下,在这100个样本中,也许只有2个人转化,也许有20个人转化。这就是样本之间的波动。由于样本的随机性,样本的观测值(如转化率)和总体的真实参数(如总体转化率)存在差距。这种差距能用抽样误差衡量。 抽样误差越大,用样本估计总体的结果就越不准确。正因为抽样误差的存在,我们用样本观测值直接作为总体参数的估计值是不可取的。因此,直接比较实验组和对照组转化率的大小还不足以支撑一个有力的决策。我们需要更多的信息来描述这次抽样用样本估计总体的准确程度。置信区间和p-value正起到了这个作用。
 
如何理解置信区间和抽样误差?
 
问题重述
 
为比较实验组和对照组的转化率差异,我们需要首先收集实验组和对照组的转化率数据,经过7天的观察,对照组的转化率为40%, 实验组为41%,是否实验组转化率优于对照组?
你也许会说因为实验组转化率比对照组高了1%, 所以实验组能实现更高的转化率。但是由于抽样误差的存在,这样的描述也许并不准确。更smart的表述可能是这样的:
 
我认为实验组转化率相比对照组转化率高0.8-1.2%(1% ± 0.2 %), 置信度为95%。
在这句话中,1%是实验组和对照组的绝对差异(即41%-40%), ± 0.2 % 是抽样误差,绝对差异±抽样误差给出了置信区间的范围为0.8%-1.2%。
 
置信度95%说的是我们95%确信实验组转化率相比对照组转化率高0.8-1.2%。从概率论的角度解释,就是在其他参数不变的情况下,如果我们重复做同样的实验100次,那么有95次得出的实验组和对照组的转化率差异都在0.8%-1.2%这个区间内。因此置信区间是一个区间使得重复实验n次具有一定概率(这个概率就是置信度)的结果都落在此区间内。而置信度是人为给定的,我们需要在实验开始前选定一个置信度(工业届常用95%),它会影响这个实验所需的样本量大小和显著性检验的结果。
 
用图说话:
/uploads/fox/28070344_4.jpeg
如果我们想知道在这个世界上有多少人喜欢吃橘子,我们不可能去调查世界上所有人的喜好,只能通过抽样的方法用样本来推断总体。假设在这个世界上有50%的人真正喜欢吃橘子(p=0.5),但是否真的是50%我们是不确定的。于是我们试图通过随机抽样来验证这个值到底对不对,于是我们每次随机抽取100个样本,并且重复抽样n次。如果用 p̂ 来表示每次抽样喜欢吃橘子的人的比例,那么重复抽样n次会得到n个 p̂ 。根据正态分布的概率密度函数,不管 p̂ 落在距离总体均值 μ多么远的地方, 总有68.2%个落在距离总体均值1个标准差 (σ) 的范围内,95.4%个落在距离总体均值2个标准差 (σ) 的范围内,99.7%个落在距离总体均值3个标准差 (σ) 的范围内(中心极限定理和正态分布的运用)。特别的,有95%个落在距离总体均值1.96倍个标准差(σ) 的范围内。
 
反过来思考,以一次抽样的观测值p̂ 为中心,往前和往后推大约1.96 σ 的区间,就有可能抓住那个真实的的p 。如果重复抽样无数次,构成无数个这样的区间,有95%个区间会包含真实的p , 只有5%个区间不包含。在这个例子里,如果一次随机抽样的结果是80%的人喜欢吃橘子,标准差为sqrt(0.2*0.8/100)=0.04(伯努利分布),那么可以说我们95%肯定这个世界上爱吃橘子的人的比率在[80%±1.96*0.04]这个区间内。通过上面的例子,我们知道置信区间的上界是样本均值+抽样误差,下界是样本均值-抽样误差,95%置信度下的抽样误差是1.96*样本标准差。
当得到了一个置信区间后,我们需要通过统计上的假设检验来判断这次抽样的结果是否具有统计上的显著性。在这个例子中,由于 [80%±1.96*0.04] 这个区间不包含我们事先假设的0.5,并且我们已经95%肯定这个区间包含真实值,那么先前假设的0.5是非常值得怀疑的,是我们应该拒绝的。
 
如何理解假设检验
 
假设检验是依据反证法思想,首先对总体参数提出某种假设(原假设),然后利用样本信息去判断这个假设是否成立的过程。在A/B实验中一般有两种假设:
 
原假设 (H0):反对的假设。
备择假设 (H1, or Ha):支持的假设。
 
假设检验的目标是拒绝原假设,它的核心是证伪。一般来说我们在多个备选项中选出其中的某一个有两种思考过程,一种是基于满意法的思考,也就是找到那个看上去最可信的假设;另一种是证伪法,即剔除掉那些无法证实的假设。满意法的严重问题是,当人们在没有对其他假设进行透彻分析的情况下就坚持其中一个假设,当反面证据如山时往往也视而不见。而证伪法能克服人们专注于某一个答案而忽视其他答案,减少犯错误的可能性。证伪法的思考过程类似于陪审团审判,首先假定一个人无罪,然后收集证据证明他有罪,如果有足够证据说明他有罪,就拒绝他无罪的假设。
 
在上篇文章我们提到的吃橘子的案例里,世界上有50%的人爱吃橘子是我们的原假设。由于一次实验得出的置信区间 [80%±1.96*0.04] 不包含0.5,并且我们95%确信这个区间包含真值,只有5%的概率出错,而5%概率非常小,小到我们可以接受,所以拒绝原假设。
在A/B实验中,我们的目标与橘子案例不同的是,我们不是要估算全部用户的转化率,而是在实验组和对照组之中选出更优的方案。因此A/B实验的估计量不再是p,而是p2-p1 (实验组和对照组的转化率之差)。原假设是p2-p1=0 (即两者没有差异),因为只有当我们怀疑实验组和对照组的结果不一样, 才有实验的动机,而我们支持的备择假设是 p2-p1≠0(两者有差异)。如果p2-p1≠0,在此基础上我们还需要确定这种差异是否具有统计上的显著性以支撑我们全量上线实验组方案。
 
由于抽样误差的存在,A/B实验可能出现四种结果,而这四种结果中存在两种假设检验错误:当原假设H0为真,却拒绝原假设;和当H0为假,却没有拒绝原假设H0。这两种错误分别用 α (alpha)和 β (beta)表示,相应的,做出正确假设检验判断的概率分别是1-α和 1-β。
/uploads/fox/28070344_5.jpeg
一类错误和统计显著性
 
一类错误(Type I Error)指错误的拒绝原假设。对于A/B实验来说就是实验组相比对照组有提升,然而实际却没有差别。这里所说的有提升,是相对于样本而言的,在总体上实验组是否相比对照组有提升,这是我们关心却无从知晓的。也许对于样本用户,实验组存在提升,但对于总体用户而言,这样的提升并不存在。当我们想知道这次实验的提升,是否适用于总体,是否能使假设检验犯一类错误的概率保持在非常低的水平(例如5%以下)时,我们就需要特别关注实验是否具有统计显著性(Statistical Significance)。要想判断实验是否具有统计显著性,p-value至关重要。
 
p-value是什么?
 
以万能的扔硬币为例。我们的原假设是硬币是均匀的,备择假设是硬币不均匀。下表为扔硬币的次数和出现正面朝上的概率。
/uploads/fox/28070344_6.png
当扔硬币1次,正面朝上了,如果硬币是均匀的,那么发生这件事的概率是0.5;
 
当扔硬币2次,两次正面都朝上,如果是均匀的硬币,那么发生这件事的概率是0.5*0.5=0.25;
 
接着你扔了3次,4次,每次都正面朝上。当扔硬币5次的时候,仍然是正面朝上,如果硬币是均匀的,那么发生这件事的概率只有0.5^5=0.03。这是一个非常小的概率,因为如果硬币是均匀的,是不太可能发生这样极端的事情的。但是这样极端的事情却发生了,这使你怀疑原假设的正确性,因为一枚不均匀的硬币极有可能投出这样的结果,因此你拒绝了原假设,接受了备择假设,认为这是一枚不均匀的硬币。
我们回到什么是p-value的问题,在这个例子里,假设一枚硬币是均匀的,扔了n次,n次都正面朝上的概率就是p-value。对于A/B实验而言,p-value是在实验组和对照组没有差别这个前提条件成立的情况下,实验仍然检测到差异以及更极端情况出现的概率。如果p-value非常小,就拒绝原假设,认为实验组和对照组没有差别这个前提是错误的。那么怎么定义非常小这个概念?这时需要用到显著性水平(significance level) 来做标尺。显著性水平是人为给定的假设检验中犯一类错误的可接受上限,用α表示,在工业届它的取值一般是5%,这说明我们寻求95%可能性正确的结果。当p-value超过这个值时(即p-value>0.05),我们会认为这个实验犯一类错误的概率太高,因此用这个实验估计总体是不可信的。当p-value小于显著性水平时(p-value<0.05), 实验达到统计上的显著性,认为这个实验犯一类错误的概率比较小,因此适用于总体。
 
这里需要注意的是,统计显著性并非实际显著性 (Practical Significance)。p-value只能告诉你两个版本是否存在差异,并不能说明实验组到底比对照组好了多少。举个例子,在某个A/B实验中,实验组相比对照组只有0.1%的提升,p-value=0.001,这说明这次实验是达到统计显著的,但是实验效果却只提升了0.1%。是否会为了这0.1%的提升而全量上线实验组方案,还需要从成本等角度全面衡量实验的商业效果。因此做决策不能仅凭借统计显著性。
 
另外,对于很多实验,在实验前段时期的显著性是在显著和不显著之间上下波动的,我们需要足够多的样本量和更长的实验周期来涵盖前期的波动直到显著性趋于平稳。
/uploads/fox/28070344_7.png
(Source: Statistics for Online Experiments)
 
上图为统计显著性的波动随样本量增大的变化情况。在实验刚开始时,统计显著性的波动是非常明显的,这可能受到新奇效应(Novelty Effect) 的影响。对于用户存在感知的A/B实验,如UI的改版、运营方案的更新、新功能的上线等,实验组所做的任何改变都可能引起用户的注意,好奇心会驱使他们先体验一番,从而导致A/B实验中实验组效果一开始优于对照组,p-value极小,实验效果非常显著。但是一段时间过去后,用户对于新的改变不再敏感,实验组效果回落,显著性可能会下降,最后趋于稳定。足够的样本量能保证一个合理的实验周期,从而避免这种新奇效应的影响。
 
统计显著性还可以通过置信区间来判断。A/B实验的原假设是实验组与对照组没有差异,即p2-p1=0, 那么在刚才的例子里,在样本量达标的前提下,如果实验求得的置信区间不包含0,也可以说明我们95%确信实验组相比对照组存在提升。
 
二类错误和统计功效
 
在A/B实验中,我们还需要注意二类错误 (Type II Error)。二类错误指没有正确的拒绝原假设,即当原假设为假时没有拒绝原假设, 犯这种错误的概率为 β。对于A/B实验来说就是实验组和对照组没有差异,但实际实验组和对照组有差异。
 
一类错误和统计显著性有关;二类错误则和统计功效 (Power) 有关。统计功效是正确的拒绝原假设的概率, 即 1-β。为了让实验结果更准确,
实验需要提高统计功效, 一般来说提升到80%以上,犯二类错误的概率控制到20%一下,实验结果就比较可信了。
 
更大的样本量和更长的实验周期能获得更高的统计功效和更准确的测试。为什么这么说?因为对于很多A/B实验来说,实验组相比对照组的实际提升值非常小,对于这样微小的提升值,需要更多的样本使其被检测到。通过给定的统计功效值(如80%)和预期提升幅度, 可以推导出一个实验需要的最小样本量值。比较实验实际进入的样本量和最小样本量值,如果实际样本量能达到这个值,并且达到预期提升幅度,说明统计功效足够,此时就可以下结论了。
 
总结A/B实验结果的注意事项
 
1:样本量达标
根据给定的统计功效预估实验最小样本量,根据历史数据表现推测未来每日进入样本量。通过最小样本量/每日进入样本量估算实验时长。这可以保证实验达到统计功效,减小犯二类错误的概率。
 
2:观察实际提升
对比实验组相比对照组的指标在实验周期内的累积提升值。比如我希望实验组相比对照组在某核心指标上有正向提升,实验累积结果确实出现了正向提升。
 
3:观察统计显著性
若实验周期结束后的累积p-value<0.05, 或置信区间不包含0, 则拒绝原假设,说明实验组和对照组有差异,实验具有统计显著性。反之,则不拒绝原假设,说明实验组和对照组没有统计上的显著差异。特别的,观察p-value在实验周期的波动,是否在实验后期趋于稳定。
 
4:结合2和3和心理预期判断是否应该采纳实验组方案
如果实验累积结果有符合预期的提升,并且实验检测出统计显著性。这时需要结合其他因素(如全量上线实验组方案的成本)衡量该提升幅度是否值得我们采纳实验组方案。一般来说实验组的提升幅度越大,实验效果越明显。在A/B实验前,你需要建立一个心理预期,比如实验组相比比对照组至少实际提升2%,才认为实验组的版本有实际价值。这个最小预期提升幅度 (MDE) 需要在做实验前就具备大致意识,根据具体优化需求确定。如果实验组相比对照组有提升,且检测到统计显著性,却没有达到你心理预期的最小提升,实验组方案就不值得被采纳。
本系列文章介绍了A/B实验的统计原理,从抽样和中心极限定理,到统计显著性和统计功效,再到如何将这些理论知识与实际的测试相结合来解读实验结果,希望能帮助大家做出正确的数据驱动决策。
 
滴滴效能平台部(EP)致力于通过技术持续提升组织效能,肩负着公司重点项目交付管理、工程师文化建设、研发工具链建设、企业内部信息化平台建设等重任。在这里,有来自BAT和硅谷的技术大牛助你成长,有一群正直简单激情追求极致的兄弟姐妹陪你战斗。我们提倡敏捷,鼓励创新,认同全栈,追求快速成长。期待你加入我们!欢迎投递简历→ephr@didichuxing.com急需 Java 工程师!
以上内容由滴滴出行效能平台部倾情呈现
滴滴效能平台部(Effectiveness Platform)
肩负着公司重点项目交付管理、
研发工具链建设、
企业内部信息化平台建设、
工程师文化建设等重任,
致力于通过技术持续提升组织效能。
 
本文由滴滴效能平台部供稿,转载请注明出处,技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。
 

评论