面试_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. \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.xdnf.cn/news/14789.html

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

相关文章

Anolis8.2系统中搭建python环境

文章目录 安装依赖项依赖项介绍 下载python源码包安装python源码包 安装依赖项 [rootPython ~]# dnf install -y gcc make zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel xz-devel libffi-devel uuid-devel libnsl2-d…

Gurobi学术版+Anaconda安装步骤

注意:在anaconda虚拟环境中安装gurobi库是不需要在本地下载gurobi这个软件的,只需要conda install gurobi即可,或者指定版本的安装conda install -c gurobi gurobi11.0.3。 step0:安装ananconda step1:获得学术许可&a…

OBOO鸥柏:旗下户外景区自助触摸查询一体机已布局智慧城市便民

OBOO鸥柏作为户外自助查询一体机制造商品牌源头工厂一体化,鸥柏室外液晶广告屏凭借其独特的展览展示交互式查询互动优势,OBOO鸥柏正逐渐成为城市公共服务与商业信息查询的商用及工业液晶显示终端机新标杆。基于智慧城市便民化布局主要体现于以下几点&…

Mysql每日一题(分组+select嵌套查询)

本题我通过自己的努力,利用多个知识点,完成了本题,目前还没有查看题解,一会会给出别人题解的方法,自己写的代码就很很繁琐很麻烦,如果是大佬,可能知道这一题就直接这个窗口函数加这个窗口函数就…

Java并发篇--线程池

线程池 为什么要创建线程池 因为CPU核心数量有限,如果每来一个任务就创建一个线程,就会使线程数远远多于CPU核心数,使线程上下文切换过于频繁,会导致系统性能降低。而且每创建一个线程都会占用一定的内存,如果每来一个任务就创建一个线程,内存消耗太大了。 ThreadPoolExecuto…

ubontu--cuDNN安装

1. 下载 cuDNN https://developer.nvidia.com/cudnn 2. 拷贝到服务器/home/<username>文件夹下 解压缩到当前文件夹&#xff1a; tar -xvf cudnn-linux-x86_64-9.5.1.17_cuda11-archive.tar.xz复制头文件和库文件到cuda安装目录/usr/local/cuda/ sudo cp /home/usern…

Mac终端使用brew命令报错:zsh: command not found: brew

当在终端中出现 zsh: command not found: brew 这个错误时&#xff0c;可能是因为 Homebrew 没有被正确安装&#xff0c;或者它的路径没有被添加到环境变量中。 1. 检查 Homebrew 是否已安装&#xff1a; 打开终端&#xff0c;运行以下命令来检查 Homebrew 是否已安装&#xf…

斯坦福iDP3——改进3D扩散策略以赋能人形机器人的训练:不再依赖相机校准和点云分割(含源码解析)

前言 今天10.23日&#xff0c;明天1024则将作为长沙程序员代表&#xff0c;在CSDN和长沙相关部门举办的1024程序员节开幕式上发言&#xff0c;欢迎广大开发者来长工作 生活 考察 创业&#xff0c;​包括我司七月也一直在招聘大模型与机器人开发人员 后天&#xff0c;则将和相关…

Vue3 -- 项目配置之eslint【企业级项目配置保姆级教程1】

下面是项目级完整配置1➡eslint:【吐血分享,博主踩过的坑你跳过去!!跳不过去?太过分了给博主打钱】 浏览器自动打开项目: 你想释放双手吗?你想每天早上打开电脑运行完项目自动在浏览器打开吗?不要9998,不要998,只要你在我们爱的 package.json 中配置一下即可显示。如…

DataWorks on EMR StarRocks,打造标准湖仓新范式

在大数据领域&#xff0c;数据仓库和实时分析系统扮演着至关重要的角色。DataWorks 基于大数据引擎&#xff0c;为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台&#xff0c;为用户带来智能化的数据开发和分析体验。而阿里云提供的 EMR Serverless St…

谷歌浏览器的实验性功能介绍

谷歌浏览器&#xff08;Google Chrome&#xff09;作为全球最受欢迎的网络浏览器之一&#xff0c;以其快速、稳定和丰富的扩展功能而闻名。除了常见的功能外&#xff0c;Chrome还提供了许多实验性功能&#xff0c;这些功能可以通过启用一些隐藏的标志来访问。本文将详细介绍如何…

Acrobat Pro DC 2023(pdf免费转化word)

所在位置 通过网盘分享的文件&#xff1a;Acrobat Pro DC 2023(64bit).tar 链接: https://pan.baidu.com/s/1_m8TT1rHTtp5YnU8F0QGXQ 提取码: 1234 --来自百度网盘超级会员v4的分享 安装流程 打开安装所在位置 进入安装程序 找到安装程序 进入后点击自定义安装&#xff0c;这里…

【论文复现】STM32设计的物联网智能鱼缸

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀STM32设计的物联网智能鱼缸 【1】项目功能介绍【2】设计需求总结【3】项目硬件模块组成 1.2 设计思路【1】整体设计思路【2】ESP8266工作模式…

Elasticsearch 和 Kibana 8.16:Kibana 获得上下文和 BBQ 速度并节省开支!

作者&#xff1a;来自 Elastic Platform Product Team Elastic Search AI 平台&#xff08;Elasticsearch、Kibana 和机器学习&#xff09;的 8.16 版本包含大量新功能&#xff0c;可提高性能、优化工作流程和简化数据管理。 使用更好的二进制量化 (Better Binary Quantizatio…

ubuntu20.04安装FLIR灰点相机BFS-PGE-16S2C-CS的ROS驱动

一、Spinnaker 安装 1.1Spinnaker 下载 下载地址为&#xff1a; https://www.teledynevisionsolutions.com/support/support-center/software-firmware-downloads/iis/spinnaker-sdk-download/spinnaker-sdk–download-files/?pnSpinnakerSDK&vnSpinnakerSDK 在上述地址中…

OCR+多模态数据技术,赋能海洋数据智能处理

海洋是推动高质量发展的关键区域&#xff0c;也是人类未来发展的宝库。然而&#xff0c;我们对海洋生态系统的深入理解尚不足5%。海洋大数据&#xff0c;通过观测、监测、调查、分析和统计等手段获得&#xff0c;已成为我们探索海洋世界的主要工具。 如图1所示&#xff0…

JUC学习笔记

文章目录 锁生产者消费者问题8锁现象集合类不安全Callable创建线程的三种方式 常用辅助类CountDownLatchCyclibarrierSamphore 本篇博客是之前学习JUC时记录的内容&#xff0c;对于并发编程知识只是浅浅谈及&#xff0c;并不深入。也算是给自己开新坑。建一个JUC的专栏&#xf…

集合卡尔曼滤波(EnsembleKalmanFilter)的MATLAB例程(三维、二维)

本 M A T L A B MATLAB MATLAB代码实现了一个三维动态系统的集合卡尔曼滤波&#xff08;Ensemble Kalman Filter, EnKF&#xff09;示例。代码的主要目的是通过模拟真实状态和测量值&#xff0c;使用 EnKF 方法对动态系统状态进行估计。 文章目录 参数设置初始化真实状态定义状…

OpenGL ES 共享上下文实现多线程渲染

OpenGL ES 共享上下文时,可以共享哪些资源? 共享上下文实现多线程渲染 EGL 概念回顾 EGL 是 OpenGL ES 和本地窗口系统(Native Window System)之间的通信接口,它的主要作用: 与设备的原生窗口系统通信; 查询绘图表面的可用类型和配置; 创建绘图表面; 在OpenGL ES 和…

如何安装和使用SSH远程连接工具MobaXterm

文章目录 一、下载二、安装三、使用四、配置1、配置默认编辑器2、配置右键粘贴3、SSH配置4、关闭X-Server服务 一、下载 1、进入官网&#xff1a;https://mobaxterm.mobatek.net/download-home-edition.html 2、Download——>Home Edition。 3、下载绿色安装版本。 二、安…