2

A/B 测试名词解释

 2 years ago
source link: https://www.volcengine.com/docs/6287/65799
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一. 初阶 #

1. AB实验 #

为了验证一个新策略的效果,准备原策略A和新策略B两种方案。 随后在总体用户中取出一小部分,将这部分用户完全随机地分在两个组中,使两组用户在统计角度无差别。将原策略A和新策略B分别展示给不同的用户组,一段时间后,结合统计方法分析数据,得到两种策略生效后指标的变化结果,并以此判断新策略B是否符合预期。

  • 上述过程即A/B实验,亦被称为“对照实验”或“小流量随机实验”。

2. 互斥组 #

互斥组,也称互斥层、实验层。 互斥实验,指的是互斥组中的所有实验都不会共享用户,开在同一实验层的多个实验中,流量只能命中其中一个,即同层实验的流量之间是相互排斥的。 如果一个用户/设备命中了实验A,就不会命中该互斥组中的其他实验。

  • 基本原则:内容相同或相关、可能会彼此影响的实验,建议将实验加入到同一个互斥组中。举例, 您要同时做按钮颜色和按钮形状的实验,就需要将两个实验加入到一个互斥组。

假如现在有4个实验要进行,每一个实验要取用30%的流量才能够得出可信的实验结果。此时为了同时运行这4个实验就需要4*30%=120%的流量,这意味着100%的流量不够同时分配给这4个实验。
那么此时我们只能选择给实验排序,让几个实验先后完成,但是这样会造成实验效率低下。

实验层技术就可以完美解决这个问题:
实验层技术是为了让多个实验能够并行不相互干扰,且都获得足够的流量而研发的流量分层技术。
我们把总体流量“复制”无数遍,形成无数个流量层,让总体流量可以被无数次复用,从而提高实验效率。各层之间的流量是正交的,可以简单理解为:在流量层选择正确的前提下,流量经过科学的分配,可以保证各实验的结果不会受到其他层实验的干扰。

3. 互斥实验 #

互斥实验:互斥组中的所有实验都不会共享用户,如果一个用户/设备命中了实验A,就不会命中该互斥组中的其他实验。

  • 举例,你要同时做按钮颜色和按钮形状的实验,就需要将两个实验加入到一个互斥组列表。

4. 正交实验 #

互斥组=互斥层=实验层

  • 每个独立实验为一层,一份流量穿越每层实验时,都会随机打散再重组,保证每层流量数量相同。

如何理解流量正交?

举个例子。假设我现在有2个实验。实验A(实验组标记为A1,对照组标记为A2)分布于实验层1,取用该层100%的流量;实验B(实验组标记为B1,对照组标记为B2)分布于实验层2,也取用该层100%的流量。(要注意,实验层1和实验层2实际上是同一批用户,实验层2只是复用了实验层1的流量)
如果把A1组的流量分成2半,一份放进B1组,一份放进B2组;再把A2组的流量也分成2半,一份放进B1组,一份放进B2组。那么两个实验对于流量的调用就会如下图所示。此时实验A和实验B之间,就形成了流量“正交”
image.png

流量正交有什么意义呢?

  • 我们可以发现,因为A1组的一半流量在B1中,另一半流量在B2中,因此即使A1的策略会对实验B产生影响,那么这种影响也均匀的分布在了实验B的两个组之中;
  • 在这种情况下,如果B1组的指标上涨了,那么就可以排除B1是受A1影响才形成上涨。这就是流量正交存在的意义。

5. 实验组 #

实验组和对照组是一组相对的概念,A/B实验通常是为了验证一个新策略的效果。假设在实验中,所抽取的用户被随机地分配到A组和B组中,A组用户在产品中体验到新策略,B组用户在实验中体验的仍旧是旧策略。在这一实验过程中,A组便为实验组,B组则为对照组。

6. 参数、参数类型、参数值 #

在开一个实验时,你需要通过一个标识来区分对照组和实验组,我们用参数来解决标识的问题。在A/B测试的实验中,每一个对照组和实验组可以有1个参数也可以有多个参数,每个参数都会有参数类型(目前支持String、Number、Boolean),每个参数还会有参数值。

  • 如,对于注册文案的实验,我们可以建立一个String类型的参数(命名为:register_name),对照组的参数值为"一键注册",实验组的参数值为"立即注册"。

7. 指标 #

在开一个实验时,目的是对比对照组和实验组的某个或者某几个指标。

  • 如,分析点击按钮的次数时,需要上报注册按钮的点击事件,然后在「A/B 测试」产品上配置指标即可。

8. 流量 #

互联网行业的A/B实验中,流量通常用于描述产品所拥有的总体用户数量。

9. 流量分配 #

开A/B实验时,一般都会小流量测试,当看到某个实验组效果后,再大流量测试,最终再全量上线。

10. 过滤条件 #

在实验中增加一些限制条件,规定被实验命中的用户必须符合(或不符合)这些条件,进而达到缩小用户集群、精准找到用户的目的,这种限制条件即“过滤条件”,亦称filter。

11. 白名单用户 #

在实验正式开启之前,通常需要先选择几名用户进入测试阶段,观察实验是否能够正常获取想要收集的数据,或客户端是否有bug等。参与这一步的用户被称为“白名单用户”。

12. 命中 #

用户经过随机分配后,进入实验组或对照组,参与到实验之中,即称为用户被实验“命中”;反之则为“未命中”。

13. 时长 #

即A/B实验持续的时间长度,在「A/B 测试」产品中,时长的单位是“天”。

14. SDK #

SDK 就是Software Development Kit的缩写,中文意思就是“软件开发工具包”。
辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”,我们可以把SDK理解成一个小型工具包,来实现指定的功能,帮助我们解决指定的问题,A/B测试SDK的主要作用就是帮助实验者进行分流

15. WAU #

WAU(Weekly Active Users),周活跃用户数,最近一周(含当日的7天)启动使用产品的用户数,一般按照自然周进行计算。

16. MAU #

MAU(Monthly Active Users),月活跃用户数,最近一个月(含当日的30天)启动使用产品的用户数,一般按照自然月进行计算。

17. 方差与标准差 #

  • 方差:方差是数据组中各数据值与中心值间距的平方和的平均值。

方差的计算公式:公式中M为数据的平均数,n为数据的个数,s²为方差。
alt

  • 标准差:标准差是方差的平方根,即s。

二. 中阶 #

1. 留存率 #

实验报告中的留存率指的是“按进组时间拆分的留存率”,是根据【用户首次进实验组的时间】作为起始,用户回到App作为回访,计算用户n日留存。
统计方式如下:

规则处理逻辑分组方式首次进入实验组的用户归因方式把留存用户按照进组时间划分,分别归因到首次进组的时间回访规则回到APP即是为回访。

举个例子说明:

  • 第一天实验组A的用户数为:10000,第一天base_user为10000。
  • 第二天实验组A的用户数为:10400,其中9200用户是第一天便已经在A中的用户,1200用户为当天新进组用户;第二天base_user为1200,第一天的次日留存为9200/10000=92%。
  • 第三天实验组A的用户数为:10200,其中8000用户为第一天便已经在A中的用户,1100用户为第二天进入A中的用户,1100为第三天进入A的用户;第三天的base_user为1100, 第一天的2日留存为8000/10000=80%, 第二天的次日留存为1100/1200=91.67%。
  • 然后分别把每个进入实验日期的指标用base_user进行加权平均,得到次日留存率、第2天留存率等。

当日"已进组用户" 表示当日曝光进组的总用户数,包括之前已进组的老用户和初次到访的"新进组用户"。

2. 置信区间 #

置信度区间就是用来对一组实验数据的总体参数进行估计的区间范围。

举个例子,我们现在开了一个实验来优化商品页面的用户购买率,其中采用了新策略B的实验组,购买率提升均值为5%,置信区间为[-3%,13%]。

怎么理解此处的置信区间呢?
由于在A/B实验中我们采取小流量抽样的方式,样本不能完全代表总体,那么实际上策略B如果在总体流量中生效,不见得会获得5%的增长。如果我们设策略B在总体流量中推行所导致的真实增长率为μ,那么在这个案例中,μ的真实取值会在[-3%,13%]之间。

值得注意的是,μ并不是100%概率落在这一区间里,在计算置信区间的过程中,我们会先取一个置信水平,计算这一置信水平下的置信区间是多少,A/B实验中我们通常计算95%置信度下的置信区间。回到刚刚的例子,我们就可以得知,μ的真实取值有95%的可能落在[-3%,13%]之间。

3. 多天累计指标 #

“多天累计指标”是所选实验日期范围内,对应指标多天合并的累计值。

举个例子,假如现在我们要看6月1日到6月3日,用户A、B、C的用户阅读数这一指标:

6月1日6月2日6月3日多天累计指标用户A1301629用户B53412用户C781227

上表中的数字关系很清晰地展示了多天累计指标与单日指标之间的逻辑(即加在一起)。

在A/B实验中,如果我们所检测的指标支持多天累计指标,那么我们基本上应该以多天累计指标为准,而不要过多关注实验周期内的单日指标。
多天累积数据意味着,随着实验的进行,实验的总体样本不断增加,实验的检验灵敏度在不断提高。

4. A/B实验分流服务 #

开设A/B实验,顾名思义,我们至少需要一个A组和一个B组,那么究竟是什么决定了哪些用户被实验命中,以及哪些用户进入A组/B组呢?就是靠A/B实验分流服务。

  • 分流服务会帮助实验者,从总体流量中抽取部分流量,并将抽取的流量随机地分配进A组与B组之中,尽量减少抽样误差。
  • 需要注意的一点是,当分流服务分流完成后,被选中进入实验的用户会被赋予一个“身份信息”——ab_version(又称vid),这个id标记着流量究竟应该进入实验的哪一组中。

三. 高阶 #

1. 假设检验 #

A/B实验的核心统计学理论是(双样本)假设检验。假设检验,即首先做出假设,然后运用数据来检验假设是否成立。需要注意的是 ,我们在检验假设时,逻辑上采用了反证法。通过A/B实验,我们实际上要验证的是一对相互对立的假设:原假设和备择假设。

  • 原假设(null hypothesis):是实验者想要收集证据予以反对的假设。A/B实验中的原假设就是指“新策略没有效果”。
  • 备择假设(alternative  hypothesis):是实验者想要收集证据予以支持的假设,与原假设互斥。A/B实验中的备择假设就是指“新策略有效果”。

利用反证法来检验假设,意味着我们要利用现有的数据,通过一系列方法证明原假设是错误的(伪),并借此证明备择假设是正确的(真)。这一套方法在统计学上被称作原假设显著性检验 null hypothesis significance testing (NHST)。

举个例子:
我们要针对某页面的购买按钮做一个实验。我认为:将购买按钮的颜色从蓝色改为红色,可以提高购买率3%。在这个实验中,我们想通过统计学检验的“原假设”就是“购买按钮改成红色不能提升购买率”;“备择假设”就是“购买按钮改成红色能够提升购买率”。这是一对互斥的假设。也就是说,实际上我们要证明的就是“改成红色不能提升购买率”是错误的。

2. 第一类错误和显著性水平(α) #

  • 第一类错误,指原假设正确(真),但是我们假设检验的结论却显示原假设错误。这一过程中我们拒绝了正确的原假设,所以第一类错误是“弃真”。
  • 第一类错误在实际操作中表现为:实验结论显示我的新策略有用,但实际上我的新策略没有用。

在统计学中,我们用显著性水平(α)来描述实验者犯第一类错误的概率。
当某个实验组的指标是显著的,说明这个实验结果大概率是可信的。这个概率是95%,也就是说,系统有95%的信心确认这个实验结果是准确的。
显著性水平存在的意义是什么?

一个按钮从蓝色改成红色,一个窗口从左边移到右边,到底用户体验会变好还是变差呢?我们并不确定,因此我们试图使用A/B实验的办法,帮助我们转化这种“不确定”——观察小流量实验中新旧策略的表现,从而确定新旧策略的优劣。
但是,这样就能完全消除不确定性了吗?答案是不能,因为存在抽样误差

  • 举个例子,假设瑞士人均收入为中国的十倍,那么随机抽三个瑞士人和三个中国人,能保证样本里这三个瑞士人的平均收入是三个中国人的十倍吗?万一这三个中国人是马云,王健林和一个小学生呢?
  • 反过来想,假设在1%的流量下,组A(按钮呈红色)比组B(按钮呈现蓝色)购买率高,将流量扩大至100%,能保证策略A的表现仍旧比策略B出色吗?显然,我们还是不确定。

抽样误差带来的不确定性,使得我们在做小流量实验时,永远没法保证结论是完全正确的。幸运的是,对于抽样的不确定性,在统计学中,我们有一套方法来量化这种不确定性到底有多大,这便是显著性水平(α)存在的意义。

3. 第二类错误( β )和统计功效(statistics power) #

  • 第二类错误,指原假设错误(伪),但是我们假设检验的结论却显示“原假设正确(真)、备择假设是错误的”,这一过程中我们接受了错误的原假设,所以第二类错误是“取伪”。
  • 第二类错误在实际操作中表现为:我的新策略其实有效,但实验没能检测出来。

在统计学中,统计功效 = 1 - 第二类错误的概率,统计功效在现实中表现为:我的新策略是有效的,我有多大概率在实验中检测出来。

4. 统计显著性/置信水平/置信度/置信系数 #

  • 置信水平(也称置信度、置信系数、统计显著性),指实验组与对照组之间存在真正性能差异的概率,实验组和对照组之间衡量目标(即配置的指标)的差异不是因为随机而引起的概率。置信水平使我们能够理解结果什么时候是正确的,对于大多数企业而言,一般来说,置信水平高于95%都可以理解为实验结果是正确的。因此,默认情况下,「A/B 测试」产品将置信水平参数值设置为95%。
  • 在A/B实验中,由于我们只能抽取流量做小样本实验。样本流量的分布与总体流量不会完全一致,这就导致没有一个实验结果可以100%准确——即使数据涨了,也可能仅仅由抽样误差造成,跟我们采取的策略无关。在统计学中,置信度的存在就是为了描述实验结果的可信度。

在实验的过程中,我们所抽取的样本流量实际上与总体流量会存在些许的差异,这些差异就决定了我们通过实验得出的结论或多或少会存在一些“误差”。

举个例子,实验中,我通过改变落地页的颜色让购买率提升了3%,但是因为样本流量并不能完全代表总体流量,有可能“我改变颜色这一策略其实没用,购买率提升3%是抽样结果导致的”。

那么发生这种“我的策略其实没用”事件的概率有多大呢?在统计学中,我们会用“显著性水平(α)”来描述发生这一事件的概率是多少。而置信度=1-α。

在「A/B 测试」产品上,根据业界标准,显著性水平α取0.05。在A/B实验中,如果发生“我的策略其实没用”这一事件的概率小于0.05,我们即称实验结论已经“统计显著/可置信”。这意味着你采取的新策略大概率(A/B实验中意味着大于95%)是有效的。相反,如果这一事件的概率大于0.05,则称实验结论“不显著/不可置信”。

5. 中心极限定理 #

显著性水平的理论依据便是中心极限定理。我们可以量化抽样误差的根基在于中心极限定理的存在。
什么是中心极限定理?

  • 由于存在抽样误差,我们每次实验所得到的指标结果,都可能与我们期望得到的真正结果有误差。假设我们从总体中抽取样本,计算其指标的均值,每一次计算,样本均值都会受抽样误差影响。假如我们做无数多次实验,那么理论上,这无数多个样本均值中,总应该有一个是“真的”,不受抽样误差影响的,这个值在统计学里被称为“真值”。
  • 中心极限定理定告诉我们,如果我们从总体流量里不断抽取样本,做无数次小流量实验,这无数次抽样所观测到的均值,近似呈现正态分布(就是下图这样的分布)。这个分布以真值为中心,均值越接近真值,出现的概率就越大;反之均值越偏离真值,出现的概率就越小。

PS:此处为了便于理解,放弃了阐述统计学概念,仅从A/B实验场景下出发,解释中心极限定理。
image.png
为什么样本均值越接近真值,出现的概率越大?

举个例子,如果从全中国人这个总体中,抽取很多很多次样本,计算很多很多次平均收入。
可以预见,我们会因为样本不同而得到很多个不同的平均收入值。这些数值确实有可能因为偶然抽到顶级富豪而偏高,或因为抽到极贫困的人口而偏低。但是,上述两种情况毕竟是少数(均值越偏离真值,出现的概率小)。随着抽样次数增多,我们会发现,平均收入落在大多数普通人收入范围内的次数,会显著增多(均值接近真值,出现的概率大)。并且,有了中心极限定理的帮助,我们可以知道每个均值出现的概率是多少。

6. 校验灵敏度MDE #

  • MDE是什么:Minimum Detectable Effect (MDE),最小可检测单位,即检验灵敏度,是实验在当前条件下能有效检测的指标diff幅度。当前条件,指当前样本量,指标值和指标分布情况,并假设样本方差与总体指标方差足够接近。有效检测,指检出概率大于等于80%(type II error小于等于20%)。
  • MDE可以用来做什么:通过比较指标MDE与指标的目标提升率,来判断不显著的指标结论是否solid,可以避免实验在灵敏度不足的情况下被过早作出非显著结论而结束,错失有潜力的feature
  • 如何设置:MDE越小,意味着您要求测试的灵敏度越高,所需的样本量也越大。如果MDE设置过于精细,不仅会浪费不必要的流量,同时实际收益可能不能弥补新策略的研发和推广成本。灵敏度不足(比如预期1%就达标,但实验灵敏度仅能检测5%及以上),可能会导致错失有潜力的feature。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK