面试_ABtest原理简介

news2024/12/27 13:35:35

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. \partial代表是预期实验组和对照组两组数据的差值,比如说期望点击率从20%提升到25%,那么\partial就是5%;
    3. α和β就是我们在统计学中经常提到的犯第一类错误的概率和第二类错误的概率,其中α为犯第一类错误的概率,把没有犯第一类错误的概率1-α称为置信水平;
    4. 一般情况下,α取值为0.05;β为防第二类错误的概率,把统计功效定义为1-β,一般情况下,β的取值为0.2,则统计功效的取值为0.8;
    5. 当观测的指标为绝对值类型/比率类指标时,样本的标准差的计算公式有所差异,当观测指标为绝对值类型时【】,当观测指标为比率类指标时【】,其中PA、PB分别为对照组和实验组的观测数据,举例说明,我们希望点击率从20%提升到25%,那么PA=20%,PB=25%,\partial=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. 【问题】如何量化这个数字、这些收益的显著性;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2240370.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

‘nodemon‘ 不是内部或外部命令,也不是可运行的程序

解决方法:使用 npx 临时运行 nodemon 如果你不想全局安装 nodemon,你可以使用 npx(npm 5.2 及以上版本自带)来临时运行 nodemon: npx nodemon server.jsnodemon正常配置 要在开发过程中实现每次修改 Node.js 代码后…

计算机网络基础(3)_应用层自定义协议与序列化

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络基础(3)_应用层自定义协议与序列化 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论区交流讨论&a…

E2E、CRC、Checksum、Rollingcounter

文章目录 前言1、E2E2、CRC3、Checksum4、Rollingcounter总结 前言 在专栏文章仿真CAN报文发送的CRC校验算法(附CAPL代码)和同星TSMaster中如何自定义E2E校验算法中分别给出了CRC算法和E2E校验实现,从中也明白了为什么在测试中需要去做这些仿…

嵌入式硬件杂谈(一)-推挽 开漏 高阻态 上拉电阻

引言:对于嵌入式硬件这个庞大的知识体系而言,太多离散的知识点很容易疏漏,因此对于这些容易忘记甚至不明白的知识点做成一个梳理,供大家参考以及学习,本文主要针对推挽、开漏、高阻态、上拉电阻这些知识点的学习。 目…

二叉树面试题(C 语言)

目录 1. 单值二叉树2. 相同的树3. 对称二叉树4. 二叉树的前序遍历5. 二叉树的中序遍历6. 二叉树的后序遍历7. 另一颗树的子树8. 通过前序遍历返回中序遍历 1. 单值二叉树 题目描述: 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有…

MFC中Excel的导入以及使用步骤

参考地址 在需要对EXCEL表进行操作的类中添加以下头文件:若出现大量错误将其放入stdafx.h中 #include "resource.h" // 主符号 #include "CWorkbook.h" //单个工作簿 #include "CRange.h" //区域类,对Excel大…

【C++】类中的“默认成员函数“--构造函数、析构函数、拷贝构造、赋值运算符重载

目录 "默认"成员函数 概念引入: 一、构造函数 问题引入: 1)构造函数的概念 2)构造函数实例 3)构造函数的特性 4)关于默认生成的构造函数 (默认构造函数) 默认构造函数未完成初始化工作实例: 二…

LeetCode【0052】N皇后II

本文目录 1 中文题目2 求解方法:位运算回溯法2.1 方法思路2.2 Python代码2.3 复杂度分析 3 题目总结 1 中文题目 n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回 n 皇后问…

C语言-详细讲解-P1009 [NOIP1998 普及组] 高精度阶乘之和

目录 1.题目要求 2.题目解读 3.代码实现 4.一些小细节 1.数组储存大整数方式 2.memset函数介绍 3.digit与sum的关系 1.题目要求 2.题目解读 这道题本质就是高精度乘法高精度加法的结合,我之前有出过 高精度算法-保姆级讲解 希望详细了解的小伙伴可以去…

浅谈:基于三维场景的视频融合方法

视频融合技术的出现可以追溯到 1996 年 , Paul Debevec等 提出了与视点相关的纹理混合方法 。 也就是说 , 现实的漫游效果不是从摄像机的角度来看 , 但其仍然存在很多困难 。基于三维场景的视频融合 , 因其直观等特效在视频监控等相关领域有着…

Qt_day10_程序打包(完结)

目录 1. 设置图标 2. Debug和Release版本 3. 动态链接库 4. 打包 5. 联系项目要求 Qt开发的程序最终都是要给用户使用的,用户的电脑上不可能装一个Qt的开发环境导入项目使用。因此项目项目开发完成后需要打包——制作成安装包,用户直接下载并安装即可使用…

路径规划——RRT-Connect算法

路径规划——RRT-Connect算法 算法原理 RRT-Connect算法是在RRT算法的基础上进行的扩展,引入了双树生长,分别以起点和目标点为树的根节点同时扩展随机树从而实现对状态空间的快速搜索。在此算法中以两棵随机树建立连接为路径规划成功的条件。并且&…

【项目开发 | 跨域认证】JSON Web Token(JWT)

未经许可,不得转载。 文章目录 JWT设计背景:跨域认证JWT 原理JWT 结构JWT 使用方式注意JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理、结构及用法。 JWT设计背景:跨域认证 互联网服务的用户认证流程是现代应用中的核心组成部分,通常的流程…

学习笔记——PLCT:milk-v duo(持续更新)

买板子 官方标配有可能是单板(如下图)无工具包,记得买之前问一下客服。

Kubernetes-ArgoCD篇-01-简介

1、什么是Argo CD Argo CD 是针对 Kubernetes 的声明式 GitOps 持续交付工具。 Argo CD官方文档地址:https://argo-cd.readthedocs.io Argo CD源码地址:https://github.com/argoproj/argo-cd 1.1 关于Argo Argo是一个开源的项目,主要是扩…

【Python】轻松实现机器翻译:Transformers库使用教程

轻松实现机器翻译:Transformers库使用教程 近年来,机器翻译技术飞速发展,从传统的基于规则的翻译到统计机器翻译,再到如今流行的神经网络翻译模型,尤其是基于Transformer架构的模型,翻译效果已经有了质的飞…

父子线程间传值问题以及在子线程或者异步情况下使用RequestContextHolder.getRequestAttributes()的注意事项和解决办法

用到的工具类: Slf4j Configuration Lazy(false) public class SpringContextUtil{public static HttpServletRequest getRequest() {ServletRequestAttributes servletRequestAttributes (ServletRequestAttributes) RequestContextHolder.getRequestAttributes()…

FRTC8563实时时钟芯片的作用

FRTC8563是NYFEA徕飞公司推出的一款实时时钟芯片,采用SOP-8封装形式。这种封装形式具有体积小、引脚间距小、便于集成等特点,使得FRTC8563能够方便地应用于各种电子设备中,如:安防摄像机、监控摄像机、行车记录仪、车载电子等。 F…

怎么样绑定域名到AWS(亚马逊云)服务器

1,拿着你买的域名去亚马逊申请一个证书。申请证书分两种,一种是去亚马逊后台填域名手动申请 ,另一种是通过API来申请,类似如下代码: 2、证验证书。有两种方式:一种是通过邮件,另一种去到域名提供…

从0开始深度学习(28)——序列模型

序列模型是指一类特别设计来处理序列数据的神经网络模型。序列数据指的是数据中的每个元素都有先后顺序,比如时间序列数据(股票价格、天气变化等)、自然语言文本(句子中的单词顺序)、语音信号等。 1 统计工具 前面介绍…