面试_ABtest原理简介

01 什么是ABtest

  1. ABtest来源于假设检验,现有两个随机均匀的有样本组A、B,对其中一个组A做出某种改动,实验结束后分析两组用户行为数据,通过显著性检验,判断这个改动对于我们所关注的核心指标是否有显著的影响;
  2. 在这个实验中,我们的假设检验如下
    • 原假设H0:这项改动不会对核心指标有显著的影响;
    • 备选假设H1:这项改动会动核心指标有显著影响;
    • 如果我们做完实验发现通过显著性检验发现P值足够小,我们则推翻原假设,证明这项改动会对我们所关注的核心指标产生显著影响;否则接受原假设,认为该改动未产生显著影响
  3. 用一句话概括 ABtest其实就是随机均匀样本组的对照试验

02 ABtest的一般流程

ABtest会涉及到产品、开发、数据部门,流程较长,环节较复杂;

2.1一般来说,主要有以下几个步骤:

  1. 一般在开始实验之前,我们首先需要和相关产品或项目经理确定这个实验所需要验证的改动点是什么;
  2. 在确认改动点之后,数据分析师需要设计实验中所需要去观测的一些核心指标,比如点击率、转化率等;
  3. 确定完核心指标之后,下一步就是计算实验所需的最少样本流量,实验样本越大,我们的结果越可信,但是对我们用户的不良影响就越大,所以我们需要计算能够显著地证明我们策略有效的最少样本量;
  4. 结合目前日均活跃的用户量,计算实验的持续周期;
  5. 在计算完所需的样本量之后,就要设计流量分割策略,根据实验需要对样本流量就行分流分层,保证样本的随机和均匀分布,避免出现辛普森悖论;
  6. 以上准备工作就绪,需要和PM以及开发同学确认可以开始实验;一般在上线正式实验之前,会通过小流量去看一段时间的灰度实验,这个灰度实验的目的就是为了验证我们这个改动并不会造成什么特别极端的影响;
  7. 在灰度之后就会正式发版,等到实验周期结束,我们对实验的结果进行显著性检验;

总结:

实验改动点确认>核心指标确认>样本量、周期确认>流量分割>AB测试灰度>AB测试上线>效果评估

2.2 明确改动点和观测指标

2.2.1 明确改动点

实验开始之前,首先要和产品和项目经理明确实验的变量是什么,我们要保证ABtest的单一因素原则,即每一个实验的评估因素都是单一因素,一次实验都不能糅合多个影响因素,否则会导致实验效果难以区分是哪个因素的影响;

2.2.2 明确观测指标

观测指标可以分成两种类型;

  1. 【绝对之类指标】,我们平常可以直接计算就能得到的单个指标,不需要多个指标计算得到,一般都是该指标在一段时间内的均值或者汇总值,比如DAU,平均停留时长等;这类指标一般较少作为AB测试的观测指标;
  2. 比率类指标,与绝对值类指标相对应,我们不能直接计算得到,而后通过多个指标计算得出,比如某页面的点击率,我们需要先计算页面的点击数和展现数,两者相除才能得到该指标;类似的,还有一些转化率,复购率等;
  3. ABtest观测的大部分指标都是比率类指标,为什么这里要区分不同类型的观测指标,因为在接下来的样本量计算中,这两类的样本量计算有所差别

2.3 样本量、实验周期计算

ABtest样本量计算:AB测试的样本量选取基于大数定律和中心极限定理,在计算样本量之前,我们先了解一下大数定律和中心极限定理;

  1. 大数定律:当实验条件不变时,随机实验重复多次以后,随机事件的频率近似等于随机事件的概率;
  2. 中心极限定理:对独立同分布且有相同期望和方差的n个随机变量,但样本量很大时,样本的均值近似服从标准正态分布【说人话就是,只要样本量足够大,样本就能代表整体的表现】
  3. 这个足够大是多大?每一个实验组所需的样本量计算公式如下:
    1. 在这个公式当中,α代表的是样本数据的标准差,衡量的是整体样本数据的波动性,可以计算样本的标准差计算得到;
    2. 代表是预期实验组和对照组两组数据的差值,比如说期望点击率从20%提升到25%,那么就是5%;
    3. α和β就是我们在统计学中经常提到的犯第一类错误的概率和第二类错误的概率,其中α为犯第一类错误的概率,把没有犯第一类错误的概率1-α称为置信水平;
    4. 一般情况下,α取值为0.05;β为防第二类错误的概率,把统计功效定义为1-β,一般情况下,β的取值为0.2,则统计功效的取值为0.8;
    5. 当观测的指标为绝对值类型/比率类指标时,样本的标准差的计算公式有所差异,当观测指标为绝对值类型时【】,当观测指标为比率类指标时【】,其中PA、PB分别为对照组和实验组的观测数据,举例说明,我们希望点击率从20%提升到25%,那么PA=20%,PB=25%,=5%
    6. 计算样本量工具链接:Sample Size Calculator (Evan's Awesome A/B Tools)
      1. Baseline conversion rate【PA】
      2. Minimum Detectable Effect【PB-PA】
      3. Significance level α:犯第一类错误的概率
      4. Statistical power 1−β:统计功效

2.4 ABtest 流量分割

  1. 为什么要进行合理的流量分割,细分的结果和总体的结果相悖;
    1. 流量风格忽略了一个重要的隐藏因素,也就是性别比例,性别上的差异在AB组中也成为了影响结果的一个变量,从而导致最终结果相悖;
  2. 正确的试验实施方案里,除被测试的变量外,其他可能影响结果的变量的比例都应该保持一致,这就需要对流量进行均匀合理的分割;
  3. 分流分层原理,流量的分割通常的有分流和分层
    1. 用户分流是指按照地域、性别、年龄等把用户均匀地分为几个组;一个用户只能出现在一个组中,但是实际情况中,往往会同时上线多个实验,拿广告来说,有针对样式形态的实验,有针对广告位置策略的实验,有针对预估模型的实验,如果只是按照这种分流模式来,在每组实验放量10%的情况下,整体的流量只能同时开展10个实验,这个实验效率是非常低的;为了解决这个问题,提出用户分层、流量复用的方法
    2. 用户分层,用一份流量可以分布在多个实验层,也就是用一批用户可以出现在不同实验层,前提是各个实验层之间无业务关联,保证这一批用户都均匀地分不到所有实验层里,达到用户"正交"的效果就可以;所谓的正交分层,其实可以理解为互不影响的流量分层,从而实验流量复用的效果;
    3. 分流分层模型
      1. 组1、组2通过分流的方式分为2组流量,此时组1组2是互斥的,即组1+组2=100%实验流量;
      2. 分层:流量流过组2中的B1层、B2层、B3层时,B1层、B2层、B3层的流量都是与组2相等,相等于对组2的流量就行了复用即B1层=B2层=B3层=组2;流量流过组2中的B1层时,又把B1层分为了B1-1、B1-2、B1-3,此时B1-1、B1-2、B1-3之间又是互斥的;即B1-1层+B1-2层+B1-3层 =B1层;
      3. 根据以上规则,我们可以不断的在此模型中增加组、层;并且可以相互嵌套,这要与实际业务相匹配,拆分过多可能会把简单的业务复杂化,拆分过少的结构又可能不能满足实际业务
      4. 对于上图所示的流量分流分层模型,如果用于某些对所有功能都有影响的运营活动,比如春节红包运营,由于活动时整体的,UI、策略、内容等模块都会配合配合修改,因此要评估春节红包活动的时候就会使用组1来评估;而剩余的组2流量,则会划分为多个层,比如UI层,推荐策略层,内容模块层等,这几层基本上是没有任何业务关联度的,计算共用相同流量(流量正交)也不会对实际的业务造成结果;

2.5 显著性检验

  1. AB测试效果显著性检验,AB测试后,我们需要对AB测试的结果进行显著性校验,从而判断改动是否对我们的核心指标产生了显著差异;
  2. 举个例子:我们以点击率为例,我们运行了AB测试一周,分为对1000个样本进行了测试,对照组A 1000 ,点击率7.5%;对照组B 1000,点击率9%;我们能否给出结论说B比A好,改动是有效果的呢?有多大的可能是因为一些随机的因素导致这样的差异呢?
  3. 假设检验可以有效的帮助我们回答这个问题,首先假设改动没有效果,即B的效果不会比A好,然后试图通过样本测试的结果来验证这个假设,如果样本足以推翻假设,那么我们就可以认为改动有效果,否则我们需要继续实验或者干脆就接受这个假设,把B方案扔掉了事;
  4. 由于我们实验的样本一般都较大(大于30),所以我们使用Z检验来检验差异显著性(样本量较小时,我们一般用T检验)

2.5.2 Z检验

  1. 样本统计量Z值:
    1. Z检验是一种适用于大样本(样本量大于30)的两组平均数之间的差异性检验的方法;
    2. 它是计算两组平均数之间差的Z值和理论Z值想比较,看是否大于规定的理论Z值,从而判定两组平均数的差异是否显著;
  2. 其一般步骤如下:
    1. 建立原假设H0,μ1=μ2,即先假定两组平均数之间没有显著差异
    2. 计算统计量Z值,对于不同类型的问题,选择不同的统计量计算方法,通过检验两组样本平均数的差异性,判断它们各自代表的总体差异是否显著,与计算样本相似;当观测的指标为绝对值类型的类型/比率型指标时,Z值的计算公式有所差异
    3. 当观测指标为绝对值类指标时
    4. 当观测指标为比率类指标时
    5. 理论Z值
      1. 置信水平 90% Z值 1.64
      2. 置信水平 95% Z值 1.96
      3. 置信水平 99% Z值 2.58
    6. 样本统计量Z值VS理论Z值比较,假设通过以上公式计算的统计量Z值 =1.22,小于我们设定95%置信水平对于理论值Z值1.96,也就是说我们暂无法判断这种差异性是显著的,所以上述样本不足以得出B比A好的结论;
  3. 继续实验,正如之前所说,由于无法得出B比A好的结论,这种情况下,我们需要做更多实验,于是我们又做了一周,AB分别得到了3000个样本,对照组和实验组转化率不变,仍然套用上诉公式求统计量Z值=2.66,超出了我们设定的95%置信水平对应的理论Z值1.96,这个时候我们有了足够的信心来相信B比A好;
  4. 用工具直接验证 Evan's Awesome A/B Tools Evan's Awesome A/B Tools - sample size calculator, A/B test results, and more
    1. 分别输入对照组和实验组的比率类指标对应分子、分母和置信水平Confidence level(一般95%)
    2. 第一周
    3. 第二周

03 ABtest常见面试题

3.1如何理解ABtest中的第一类错误和第二类错误

  1. 第一类错误代表的是一个功能的改动,本来不能给我们带来任何收益,但是我们却误以为它能够给我们带来收益;
  2. 同样第二类错误代表的是本来是一个好产品,它本来可以给我们带来收益,但是由于我们统计的误差,导致我们误认为它并不能给我们带来收益;
  3. 往往在实际工作中,第一类错误是我们更加不能接受的,换句更直白的话,就是我们宁愿砍掉几个好的产品,也绝对不能让一个坏的产品上线;因为通常是一个坏的产品上线会给用户的体验带来极大的不好的影响;而这个不好的影响会非常大程度影响到我们日活以及留存;

3.2 统计显著 = 实际显著?

  1. 【问题】 如果你发现在AB测试的结果在统计上来说是显著的,但是在实际中却不显著,这是为什么?
  2. 【解答】这个可能的原因是我们在AB测试当中所选取的样本量过大,导致和总体数据差异很小;这样的话即使我们发现一个细微的差别,它在统计上来说也是显著的,在实际的案例当中可能变得不显著了;
  3. 举例:我们做了一个改动,app启动优化了0.001秒,这个数字可能在统计学上对于的P值很小,也就是说统计学上是显著的,但是在实际中用户0.01秒的差异是感知不出来的,那么这样一个显著性的统计差别其实对我们来说没有太大的实际意义的;
  4. 所以统计学上的显著并不意味着实际效果的显著;

3.3 AB测试效果统计学上不显著

  1. 【问题】如果你发现你在AB测试当中所选取的指标在统计上来说都是不显著的,你该怎么去判断这个实验的收益?
  2. 我们选取的通用方式:将这个指标拆分成每一天去观察,如果指标的变化曲线每一天实验组都高于对照组,即使他在统计学上不显著,我们也认为在这样一个观测周期内,实验组的关键指标变现是优于对照组的;
  3. 结合这样一个观测,我们最终也可以得出这个优化可以上线的结论;

3.4 实验组优于对照组就能上线?

  1. 【问题】如果你在AB测试中发现实验组核心指标明显优与对照组,那这个优化就一定能够上线吗?
  2. 不一定;举例:比如有的时候我们想提升产品的视觉展现效果,但是这种优化可能是以用户等待内容展示事件作为代价来进行提升的;所以一个方面的优化可能会导致另一方面的劣化;在做这个优化的时候,可能会对其他部门产生一些负向的影响,进而导致公司收入的下降;,所以我们在进行AB测试的时候,必须要评估所有方面的一些指标变动,同时对收益和损失来做一个评估,才能确认这个优化可以最终上线;

3.5 AB测试时必须的吗?

  1. 【问题】AB测试成本很高,每个调整都需要AB测试吗
  2. 如果是验证一个小按钮或者小改动,我们可以在界面去设置一个开关,用户可以通过开关的形式自行决定我才用哪一种方式,那么我们最后就可以通过这个开关的相关指标去判断用户对哪一种形式有更大的倾向性;或者有的时候我们可以去做一些用户的调研,比如通过访谈或者设计问卷的形式,去收集一些用户的反馈;或者他们关于这些小变动的体验,所以并不是绝对的;

3.6 AB测试其他变式考法

  1. 【问题】如何量化这个数字、这些收益的显著性;
相关推荐
字节数据平台2 个月前
数据飞轮赋能科学决策:火山引擎 DataTester 升级 A/B 大模型评测
大数据·人工智能·语言模型·ab测试
字节跳动数据平台2 个月前
数据飞轮赋能科学决策:火山引擎 DataTester 升级 A/B测试大模型评测
后端·ab测试
软件测试微课堂4 个月前
接口框架辅助类的深度解析(上篇)
单元测试·测试·ab测试
得物技术4 个月前
得物AB实验平台数据驱动决策实践
大数据·架构·ab测试
ldj20205 个月前
Linux 安装ab测试工具
linux·服务器·ab测试
货拉拉技术6 个月前
因果推断之中介效应
大数据·算法·ab测试
字节跳动数据平台6 个月前
解锁产品迭代新速度:A/B测试在AI大模型时代的应用
大数据·ab测试
货拉拉技术6 个月前
因果推断技术实践简述
大数据·算法·ab测试
007php0076 个月前
《探索信息技术中心一体化系统架构:提升企业数字化转型的效率与能力》
java·数据结构·经验分享·redis·笔记·git·selenium·测试工具·其他·算法·百度·docker·微信·golang·系统架构·github·测试用例·php·排序算法·集成测试·音视频·压力测试·postman·文心一言·课程设计·ai编程·微信公众平台·ab测试·模块测试·测试覆盖率·webkit·facebook·oneapi·twitter·composer·jira·scss·安全性测试·paddle·新浪微博·segmentfault·微信开放平台