AB测试基本原理

news2025/1/20 5:59:58

AB测试基本原理

  • AB测试
  • AB测试的基本步骤
    • 1、AB测试的基本步骤
          • ①选取指标
            • 指标的分类
          • ②建立假设
          • ③选取实验单位
          • ④计算样本量
          • ⑤流量分割
          • ⑥实验周期计算
          • ⑦线上验证
          • ⑧数据检验

AB测试

  • 所谓的AB测试就是使用实验组和对照组,通过控制变量法保证实验组和对照组基本条件一致,在实验组上增加变量,看是否引起显著变化。
  • AB测试是互联网行业常用的归因分析方法,用来评估某个策略或者变化引起的效果。从理论上来说,AB测试是基于假设检验为理论依据的,就是我们先对实验组&对照组是否有显著差异提出假设,通过试验后的数据进行验证,判断是否显著差别。

AB测试的基本步骤

1、AB测试的基本步骤

AB测试一般分成8个步骤,具体如下。

①选取指标

在建立AB实验前,我们需要明确我的实验目的是什么,或者改动点是什么。并对应落到哪些指标上,但是需要注意,所选取的指标能够很好的衡量实验的目的,而且需要对指标进行分级,唯一核心指标+其他观察指标

  • 核心指标:核心指标用来衡量实验的效果。
  • 观察指标:用来观察实验对其他指标的影响。
指标的分类

指标按照来源不同,可以分为绝对值类和比率类指标,我们这里区分不同类型观测指标,主要因为在接下来的样本量计算中,这两类指标的样本计算有所差别

  • 绝对值类指标。我们平常直接计算就能得到的单个指标,不需要多个指标计算得到。一般都是统计该指标在一段时间内的均值或者汇总值,比如DAU,平均停留时长等。这类指标一般较少作为AB测试的观测指标。

  • 比率类指标。与绝对值类指标相对应,我们不能直接计算得到,而是通过多个指标计算得到。比如某页面的点击率,我们需要先计算页面的点击数和展现数,两者相除才能得到该指标。类似的,还有一些转化率、复购率等等。AB测试观测的大部分指标都是比率类指标。

为什么这里要区分不同类型的观测指标,因为在接下来的样本量计算中,这两类指标的样本量计算有所差别。

②建立假设

由于AB测试的理论基础是基于假设检验的,所以需要建立假设,即提出原假设和备选假设。

  • 原假设H0:实验组&对照组 实验改动后指标是相同的,无差异的。
  • 备选假设H1:实验组&对照组 实验改动后指标是不同的,有差异的。
    原假设和备选假设都是基于第一步的选取指标来假设的。
③选取实验单位

在实验中我们一般使用用户粒度的实验单位,但总体有3中选择粒度:

  • 用户粒度
    这个是最推荐的,即以一个用户的唯一标识来作为实验样本。好处是符合AB测试的分桶单位唯一性,不会造成一个实验单位处于两个分桶,造成的数据不置信。
  • 设备粒度
    以一个设备标识为实验单位。相比用户粒度,如果一个用户有两个手机,那么也可能出现一个用户在两个分桶中的情况,所以也会造成数据不置信的情况。
  • 行为粒度
    以一次行为为实验单位,也就是用户某一次使用该功能,是实验桶,下一次使用可能就被切换为基线桶。会造成大量的用户处于不同的分桶。强烈不推荐这种方式。
④计算样本量

该步骤是要避免流量浪费,高效利用流量,把可用流量分到其他试验。另外还要避免在统计功效不足的情况下给出错误结论。即避免实验过程种,流量使用过多或者过少的情况。
计算样本量的理论基础主要基于大数定律和中心极限定理

  • 大数定律:当试验条件不变时,随机试验重复多次以后,随机事件的频率近似等于随机事件的概率。
  • 中心极限定理:对独立同分布且有相同期望和方差的n个随机变量,当样本量很大时,样本的均值近似服从标准正态分布N(0,1)。

每一组的实验样本数量计算如下:
N = ( Z ( 1 − α 2 ) + Z 1 − β ) 2 ∗ σ 2 δ 2 , N= \frac{(Z_{(1-\frac{\alpha}{2})}+Z_{1-\beta})^2*\sigma^2}{\delta^2}, N=δ2(Z(12α)+Z1β)2σ2,
其中, σ 代表的是样本数据的标准差,衡量的是整体样本数据的波动性,可以计算样本的标准差计算得到。 其中,\sigma代表的是样本数据的标准差,衡量的是整体样本数据的波动性,可以计算样本的标准差计算得到。 其中,σ代表的是样本数据的标准差,衡量的是整体样本数据的波动性,可以计算样本的标准差计算得到。
而 δ 代表的是预期实验组和对照组两组数据的差值 , 比如期望点击率从 20 % 提升到 25 % ,那么 δ 就是 5 % 。 而\delta代表的是预期实验组和对照组两组数据的差值,比如期望点击率从20\%提升到25\%,那么\delta就是5\%。 δ代表的是预期实验组和对照组两组数据的差值,比如期望点击率从20%提升到25%,那么δ就是5%
α 和 β 也就是我们在统计学中提到的,犯第一类错误和第二类错误的概率,通常 α 取值 0.05 ,即置信度是 ( 1 − α ) 是 0.95 % ; β 取值 0.2 ,即统计功效的取值( 1 − β )是 0.8 。 \alpha和\beta也就是我们在统计学中提到的,犯第一类错误和第二类错误的概率,通常\alpha取值0.05,即置信度是(1-\alpha)是0.95\%;\beta取值0.2,即统计功效的取值(1-\beta)是0.8。 αβ也就是我们在统计学中提到的,犯第一类错误和第二类错误的概率,通常α取值0.05,即置信度是(1α)0.95%;β取值0.2,即统计功效的取值(1β)是0.8

在上述公式中,截至到目前只有 σ \sigma σ还没进行解释,当观测指标为绝对值/比率指标时,样本的标准差的计算公式会略有不同:

  • 当观测值为绝对值时:
    σ 2 = 2 ∗ Σ 1 n ( x i − x ˉ ) 2 n − 1 , 其中 n 为样本量, x ˉ 为样本均值 \sigma^2=\frac{2*\Sigma_{1}^{n}(x_{i}-\bar{x})^2}{n-1},其中n为样本量,\bar{x}为样本均值 σ2=n12Σ1n(xixˉ)2,其中n为样本量,xˉ为样本均值
  • 当观测指标为比率类指标时:
    σ 2 = P A ( 1 − P A ) + P B ( 1 − P B ) ,其中: P A , P B 分别对照组合实验组的观测数据 \sigma^2 = P_{A}(1-P_A)+P_B(1-P_B),其中:P_A,P_B分别对照组合实验组的观测数据 σ2=PA(1PA)+PB(1PB),其中:PA,PB分别对照组合实验组的观测数据
    其中 P A P_A PA P B P_B PB分别为对照组合实验组的观测数据,例如,我们希望点击率从20%提升到25%,那么 P A = 20 % , P B = 25 % , δ = 5 % P_A=20\%,P_B=25\%,\delta=5\% PA=20%,PB=25%,δ=5%

在实际工作中,可以不用那么复杂,有现成的计算网页,我们可以直接线上计算连接
在这里插入图片描述

⑤流量分割

在实际的运营中,流量是稀缺资源,产品迭代时代时,会有很多AB测试需要同时做,而产品的流量又是有限的,因此需要对流量进行充分切割。主要可以分成“分流”、“分层”,“分桶”。
在这里插入图片描述

  • 分流(互斥)
    用户分流是指将整体分成几块,例如上图中把流量分成组1(A)和组2(B)两组,主要特征是分流的结果是互斥的,一个用户只能被分到一个组中,组1+组2 = 100%流量。划分的目的,是为了更好的进行互不干扰的实验测试。但是当同时进行多个实验的时候,这种方法就可能不太满足需求了。
  • 分层(正交)
    同一分流可以分成多个分层,例如分流组2分成了3层,B1=B2=B3,流量从B1进入下一层中用户随机分桶,进行实验,每桶的用户质量一致,即我们说的正交。分层的前提是各个实验层之间无业务关联,保证这一批用户都均匀的分布到所有实验层中,达到用户正交的效果。
  • 分桶(互斥与正交)
    我们在同时进行多个实验的时候,会在层中进行分组实验,例如上图中B1层分成了B1_1、B1_2、B1_3等3个桶,这三个桶彼此是互斥的,且和B2、B3层正交的。
⑥实验周期计算

实验周期通常由最小样本量、可以接受实验桶的大小比例以及周活决定的。

实验时长 = 最小样本量 ∗ 实验桶比例 周活 实验时长 = \frac{最小样本量*实验桶比例}{周活} 实验时长=周活最小样本量实验桶比例
此外还需要考虑一些用户周期的情况,例如用户在工作日和周末特征不一样的情况,那么周期就需要1个完成周。

⑦线上验证

这一步很显然,就是根据上述一些步骤把实验部署到线上,然后进行实验。

⑧数据检验

绝对值指标推荐使用T检验,相对指标推荐使用Z检验,当多组测试时推荐使用方差检验。
需要统计的结果:diff,P值,置信区间。

  • 计算P值
    也就计算当H0假设成立时,观测到样本数据出现的概率。在统计学上,将5%作为小概率时间,所以一般用5%来对比计算出来的P值。当P值小于5%时,拒绝H0假设,即两个指标不同,反过来,当P值大于5%时,不拒绝H0 假设。
  • 计算置信区间
    一般情况下,我们都会用95%来作为置信水平,也就是说,当前数据的估计,有95%的区间包含了总体参数的真值。

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

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

相关文章

NumPy 数组学习手册:6~7

原文:Learning NumPy Array 协议:CC BY-NC-SA 4.0 译者:飞龙 六、性能分析,调试和测试 分析,调试和测试是开发过程的组成部分。 您可能熟悉单元测试的概念。 单元测试是程序员编写的用于测试其代码的自动测试。 例如&…

AI —— 一看就懂的代码助手Copilot获取教程

背景 随着chatgpt的发布,人工智能领域近期站上了风口浪尖。GitHub Copilot由github与 OpenAI 合作创建,是世界上第一个使用 OpenAI 的 Codex 模型(GPT-3 的后代)制作的大规模生成式 AI 开发工具。GitHub Copilot 作为 AI 结对程序…

【条件判断】

目录知识框架No.0 筑基No.1 条件判断题目来源:PTA-L1-031 到底是不是太胖了题目来源:PTA-L1-063 吃鱼还是吃肉题目来源:PTA-L1-069 胎压监测题目来源:PTA-L1-077 大笨钟的心情题目来源:PTA-L1-083 谁能进图书馆知识框架…

Day15-二维数组字符串

文章目录一 二维数组二 字符串案例1案例2案例3-随堂练习案例4-输入-类型转换案例5案例6案例7一 二维数组 <script>// 书:编号 名称 描述 价格/*** 二维数组* */let arr [ [1001,"HTML","网页设计",100],[1002,"CSS","样式设计"…

Leetcode刷题之环形链表

莫等闲&#xff0c;白了少年头&#xff0c;空悲切。 --岳飞 目录 1.环形链表 2.环形链表Ⅱ 1.环形链表 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next …

Stable Diffusion扩散模型

1 GAN到Stable Diffusion的改朝换代 随着人工智能在图像生成&#xff0c;文本生成以及多模态生成等生成领域的技术不断累积&#xff0c;生成对抗网络&#xff08;GAN&#xff09;、变微分自动编码器&#xff08;VAE&#xff09;、normalizing flow models、自回归模型&#xf…

Android Textview Button 等基础组件学习

一 Textview 1 基本使用 <?xml version"1.0" encoding"utf-8"?><LinearLayout android:layout_height"match_parent"android:layout_width"match_parent"android:orientation"vertical"xmlns:android"http…

vue中的pinia使用和持久化 - 粘贴即用

学习关键语句&#xff1a; pinia怎么用 写在前面 pinia 作为 vuex 的替代品好像变得不得不学习了&#xff0c;学起来一用发现 vuex 是什么麻烦的东西&#xff0c;我不认识 这篇文章一共包含的内容有&#xff1a; 安装 pinia读取数据修改数据数据持久化 其中&#xff0c;修…

代码不熟没关系,让AI替你写

程序员早已不是一个陌生的群体&#xff0c;但程序、代码相对普通人而言&#xff0c;看着还是比较深奥难懂&#xff0c;但自从有了ChatGPT&#xff0c;不少对此有兴趣的外行人士&#xff0c;也能轻松写出代码了&#xff0c;比如让ChatGPT写一个贪吃蛇游戏&#xff0c;按它给出的…

C++入门(2)

C入门1.缺省参数1.1. 缺省参数举例和概念1.2. 函数的传参是从左到右给参数的1.3.缺省参数分类1.4. 缺省参数的函数声明与定义2.函数重载2.1.函数重载的概念2.2. 函数重载的情况2.3.剖析C语言不能函数重载而C却可以的原因2.3.1. 编译链接过程2.3.2. 函数名修饰规则3.引用3.1. 引…

Java并行流:一次解决多线程编程难题,让你的程序飞起来

前言 在日常的工作中&#xff0c;为了提高程序的处理速度&#xff0c;充分利用多核处理器的性能&#xff0c;我们需要手动编写多线程代码。但是多线程编程非常复杂&#xff0c;容易出现死锁、竞态条件等问题&#xff0c;给我们带来了很大的困扰。而 Java 并行流则提供了一种更加…

python机器学习和深度学习在气象中的应用

查看原文>>> Python人工智能在气象中的实践技术应用 Python 是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能&#xff0c;这些优势使得 Python 在气象、海洋、地理、…

14:24面试,14:32就出来了 ,问的实在是太...

从外包出来&#xff0c;没想到算法死在另一家厂子&#xff0c;自从加入这家公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到8月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资直降30%&#xff0c;顿时有吃不起饭的赶脚。 好在有…

PythonFlash+MySQL实现简单管理系统的增删改查

今天简单分享一下用Python的flash框架结合MySQL来实现信息管理系统的增删改查&#xff01; ps&#xff1a;该博客只完成了信息的添加和查看&#xff0c;删除和修改按照该方法下推即可&#xff01; 实现功能之前我们先在数据库里设置数据&#xff0c;例如&#xff1a; 我们创…

日常记录:天梯赛练习集L1-046 整除光棍

题目&#xff1a; 这里所谓的“光棍”&#xff0c;并不是指单身汪啦~ 说的是全部由1组成的数字&#xff0c;比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如&#xff0c;111111就可以被13整除。 现在&#xff0c;你的程序要读入一个整数x&#x…

Mac环境下nvm的安装与环境配置

目录 1.nvm简介 2.nvm安装 3.配置nvm环境 1.nvm简介 nvm全称 Node Version Manager &#xff0c;意思为node版本控制&#xff1b;它是一个命令行应用&#xff0c;可以快速地更新、安装、使用、卸载本机的全局 node.js 版本。他可以在同一台电脑上进行多个node版本之间的切换…

redis基础(6.0)数据结构、事务、常用组件等

1 概述 1.1 redis介绍 Redis 是互联网技术领域使用最为广泛的存储中间件&#xff0c;它是「Remote Dictionary Service」的首字母缩写&#xff0c;也就是「远程字典服务」。Redis 以其超高的性能、完美的文档、 简洁易懂的源码和丰富的客户端库支持在开源中间件领域广受好评。…

华为手表开发:WATCH 3 Pro(16)传感器订阅气压

华为手表开发&#xff1a;WATCH 3 Pro&#xff08;16&#xff09;传感器订阅气压初环境与设备气压传感器介绍与说明鸿蒙开发文件夹&#xff1a;文件新增展示的文本标记index.hmlindex.cssindex.js初 希望能写一些简单的教程和案例分享给需要的人 鸿蒙可穿戴开发 环境与设备 …

【目标检测】YOLOv5:修改自己的网络结构

前言 YOLOv5就像一座金矿&#xff0c;里面有无数可以学习的东西。之前的博文一直将YOLOv5当作一个黑盒使用&#xff0c;只考虑模型的输入和输出&#xff0c;以此来对模型进行二次开发。 本篇博文将更近一层&#xff0c;深入到“金矿”内部&#xff0c;来尝试对模型结构进行替换…

高并发浅析

什么是高并发 高并发指通过设计保证系统能够同时并行处理很多请求&#xff0c;是分布式系统非常重要的概念 评价分布式系统性能的指标有&#xff1a; 响应时间&#xff1a;系统对请求做出响应的时间。吞吐量&#xff1a;单位时间内处理的请求数量。QPS&#xff08;和吞吐量基…