A/B实验避坑指南:为什么不建议开AABB实验

AABB实验是一种非标准的A/B测试方法,通常用于验证用户分流的均匀性和比较策略效果。然而,文章指出,AA组内的差异显著并不意味着分流不科学,而AABB实验增加了犯统计错误的概率,影响实验灵敏度,并且p-value已能比较AB与AA差异。因此,AABB实验可能浪费资源且不适用于多数业务场景。

e24cf3550ee17128764ab61fbc8abe6e.gif

本文将针对日常开设 A/B 实验过程中一个不太合理的使用方法——AABB 实验进行详细的解释,告诉大家为什么不建议开 AABB 实验。

在开始之前,先来回顾一下“什么是 A/B 实验”,A/B 实验是针对想调研的问题,提供两种不同的备选解决方案,然后让一部分用户使用方案 A,另一部分用户使用方案 B,最终通过实验数据对比来确定最优方案。

489bdf3c9a41e1e084e181d94a5c22c1.png

什么是 AABB 实验

众所周知,AB 实验就是我们在总流量中分流出两组用户,一组使用原策略 A,一组使用新策略 B,比较两个策略的效果。

那么 AABB 实验是什么呢?

简单来说,在做实验的时候,会从总流量中分流出2个原策略组(A1、A2)和2个新策略组(B1、B2)。两个原策略组的实验配置一模一样,两个新策略组的配置也是一模一样的。实验者会综合比较 A1、A2、B1、B2 各组之间的指标差异(但其实多数实验者分析的方法并没有理论依据,文章后面会作出解释),这样的实验被称为 AABB 实验。

当然,也有实验者会分流出更多策略组(AAABBB、AAAABBBB 等),或者引入多个不同的新策略(AABBCCDD 实验等)。这些实验与 AABB 实验存在的问题趋同,本文中姑且先以 AABB 实验为主要分析对象。

325f74979253f4c60705d5084d6712ea.png

为啥总有人想开 AABB 实验

在进行了部分用户调研后,火山引擎 DataTester 团队发现,开设 AABB 实验的实验者通常想解决以下问题:

  • 验证用户分流是否“均匀”

部分实验者担心火山引擎 DataTester 平台的用户分流不科学,因此开设 AABB 实验,通过比较 A1与A2、B1与B2之间的实验指标差异,来检验用户分流是否合理。

理想状态下,如果用户分流是随机的,那么相同的策略组(A1和A2之间),在实验中检测出的指标差异应该很小 。这是用户对于实验结果指标的预期。这时候,假如实验结果中,A1、A2的指标出现很大的差异,甚至于呈现“显著”,实验者就会认为,是火山引擎 DataTester 后台的分流机制有问题。然而,这个判断是不科学的。为什么呢?请阅读下文中的错误 No.1。

  • 比较“AA组内差异”和“AB组间差异”

有的实验者认为:开设 AABB 实验,假如 AA 之间的实验结果差异很小,AB 之间的实验结果差异较大,那么在这种情况下,我的B策略应该就是有用的。这种想法本身没有问题,但是火山引擎 DataTester 的大部分指标提供了置信度功能,此时这种做法就显得有些画蛇添足了。详细的原因参考下文中错误 No.2和错误 No.4。

67592f6502343787113e10ca1fa0124e.png

AABB 实验到底错在哪儿

  • No.1 AA组内指标差异显著/置信并不代表分流不科学

A1、A2组之间的实验指标差异大,甚至出现显著,就能说明分流不科学吗?其实并不能。实际上,在对比 AA 组间指标差异时,以下的几种情况都是完全可能发生的:

1.AA组内的指标必然存在差异:虽然A1、A2两组所采用的策略完全一样,但进入A1、A2组的用户是完全随机的,这是随机抽取的两份样本,必然存在抽样误差,因此指标值不可能完全一样。

2.AA组内的指标差异可能还不小:如果样本中的用户量太少,或样本用户中存在极端个例(比如抽20个人算中国人的平均收入,抽样的时候抽到了农夫山泉董事长钟睒睒和月薪5000元的某人),那么在观察常见的均值等类型指标时,AA组内指标差异很可能还“不小”。

3.AA差异可能“显著”:在检验假设的过程中,我们容易犯的一类错误是:策略原本无用,但实验结果显示该策略有用。A1、A2组指标差异显著,正是对应了这类错误——其实两个策略是一样的,但是实验结果显示A2有用。在 A/B 实验中,这类错误出现的概率是5%。也就是说,假如你开100次 AA 实验,出现5次显著是合理的。如果 AA 实验指标差异呈现统计显著,也不过是一个概率问题,并不代表分流不科学。

综上,我们再来回顾一下什么是“统计显著”。顾名思义,这是一个统计术语,并不等同于指标在实际业务中发生了“显著变化”。更不能以此推论出“因为 AA 有差异,且 AA 的策略相同,所以分流结果有问题,AB 的结论也不可信”。

  • No.2 AABB实验中,统计指标更容易犯错

先来明确一点,目前火山引擎 DataTester 的统计学原理是双样本假设检验。也就是说,目前火山引擎 DataTester 的假设检验都是按照一个对照组(旧策略组A)和一个实验组(新策略组B)来设计的。在1次比较中,我们犯第一类错误的可能是5%。AABB 实验中,实际上有6组对比(排列组合一下:A1A2,A1B1,A1B2,A2B1,A2B2,B1B2)。组合增多,那么我们犯错的概率必然会增大。

如果实验者将实验组增多(AAABBB),或者参与实验的策略增多(ABCDE,AABBCCDD等多个新策略),那么排列组合就会更多了,犯错的概率就会越来越大。再加上在实验中,我们可能会观察多个指标,这样我们犯错的概率就更大了。

  • No.3 AABB实验一定程度上会影响实验的灵敏度

实验调用的样本量越多,实验结果就越灵敏。相较于A/B 实验(只设置一个A组和一个B组)来说,AABB 实验将实验组的数量增加到了4个。此时实验者不得不面临几个选择:

1.实验总流量不变,各实验组的流量减少一半,这会造成实验灵敏度下降;

2.单实验组的流量不变,将分流进实验的总体流量增加一倍,这意味着实验者可能会承担更大的风险(如果新策略造成负向影响,会有更多的用户受到影响);

3.也有一些聪明的实验者选择延长实验时长,让更多用户进入实验之中,但这会产生更多的时间成本。

既然如此,我们为什么不干脆把AABB实验合并为A/B实验呢?这样反而可以使得实验更灵敏、风险更小、结果更可靠。

  • No.4 p-value已经帮助我们比较了“AB差异”与“AA差异”

经过一些用户访谈,我们了解到大多数用户开设AABB实验的动机是:判断“ AB差异”是否高于“ AA 差异”,并以此辅助自己进行决策。事实上,仔细理解显著性水平的原理,我们就会发现,p-value 已经从更科学的角度帮助我们完成了这个任务:p-value 小于0.05,就是在保证了“ AB 差异”一定大于95%以上的“ AA 差异”。

既然 p-value 已经帮我们比较了“ AB 差异”与“ AA 差异”,我们为什么还要自己开设 AABB 实验进行比较呢?从某种程度上说,利用一次 AABB 实验来观察“ AB 差异”是否大于“ AA 差异”,仅仅是在浪费实验资源而已。

e7864251faa5e70731424b6ebb4d9773.png

核心:让险“可量化”且“可控”

总体来说,A/B 方法论的核心是要让风险“可量化”且“可控”,火山引擎DataTester 团队围绕这个目的使用假设检验范式设计了一整套系统。AABB 的实验设计作为一种客观存在,并没有什么绝对的对错,只是根据火山引擎的观察,对于绝大多数实验者和绝大多数业务场景,它的 ROI 是远远不足以让你选择的。

c5084b7bf63a5d88585fb32a476e4e33.gif

359189a0ec56fb5aee7b6514ace32cdc.jpeg

☞没有这些,别妄谈做 ChatGPT 了
☞被“误解”的游戏开发者
☞刚自愿降薪 40% 的库克,要被“踢出”苹果董事会了?
内容概要:本文介绍了ENVI Deep Learning V1.0的操作教程,重点讲解了如何利用ENVI软件进行深度学习模型的训练与应用,以实现遥感图像中特定目标(如集装箱)的自动提取。教程涵盖了从数据准备、标签图像创建、模型初始化与训练,到执行分类及结果优化的完整流程,并介绍了精度评价与通过ENVI Modeler实现一键化建模的方法。系统基于TensorFlow框架,采用ENVINet5(U-Net变体)架构,支持通过点、线、面ROI或分类图生成标签数据,适用于多/高光谱影像的单一类别特征提取。; 适合人群:具备遥感图像处理基础,熟悉ENVI软件操作,从事地理信息、测绘、环境监测等相关领域的技术人员或研究人员,尤其是希望将深度学习技术应用于遥感目标识别的初学者与实践者。; 使用场景及目标:①在遥感影像中自动识别和提取特定地物目标(如车辆、建筑、道路、集装箱等);②掌握ENVI环境下深度学习模型的训练流程与关键参数设置(如Patch Size、Epochs、Class Weight等);③通过模型调优与结果反馈提升分类精度,实现高效自动化信息提取。; 阅读建议建议结合实际遥感项目边学边练,重点关注标签数据制作、模型参数配置与结果后处理环节,充分利用ENVI Modeler进行自动化建模与参数优化,同时注意软硬件环境(特别是NVIDIA GPU)的配置要求以保障训练效率。
在编译 OpenMVS 项目时,如果遇到如下错误: ``` fatal error: CGAL/AABB_traits_3.h: 没有那个文件或目录 ``` 这表明编译器无法找到 CGAL(Computational Geometry Algorithms Library)相关的头文件。CGAL 是一个广泛使用的计算几何算法库,OpenMVS 依赖于它来进行三维重建等操作。 ### 解决方法 #### 1. 安装 CGAL 发库 在大多数 Linux 系统上,可以通过包管理器安装 CGAL 的发文件。例如,在基于 Debian/Ubuntu 的系统上执行以下命令: ```bash sudo apt-get update sudo apt-get install libcgal-dev ``` 这将安装 CGAL 及其所有必要的头文件和发工具[^1]。 #### 2. 验证安装路径 安装完成后,确保 CGAL 头文件位于标准包含路径中,例如 `/usr/include/CGAL/`。如果头文件位于非标准路径,请在编译时通过 `-I` 选项指定包含路径: ```bash g++ -I/path/to/cgal/include -o SceneReconstruct SceneReconstruct.cpp ``` #### 3. 使用 CMake 设置 CGAL 路径 如果使用 CMake 构建 OpenMVS,可以手动设置 CGAL 的路径。编辑 `CMakeLists.txt` 文件,添加以下内容: ```cmake set(CGAL_DIR "/path/to/cgal") include_directories(${CGAL_DIR}/include) ``` 或者在配置时通过命令行指定路径: ```bash cmake -DCGAL_DIR=/path/to/cgal .. ``` #### 4. 检查 OpenMVS 的依赖项 确保所有依赖项都已正确安装,包括 Boost、Eigen 和 CMake 等。可以使用以下命令安装 OpenMVS 所需的依赖项: ```bash sudo apt-get install libboost-all-dev libeigen3-dev cmake ``` #### 5. 手动下载并安装 CGAL 如果系统包管理器中没有合适的 CGAL 版本,可以从 CGAL 官方网站下载源码并手动编译安装: ```bash git clone https://github.com/CGAL/cgal.git cd cgal mkdir build && cd build cmake .. make sudo make install ``` 这将把 CGAL 安装到默认路径 `/usr/local/include/CGAL`,确保编译器可以找到它[^1]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

优快云资讯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值