火山引擎 DataTester:如何做 A/B 实验的假设检验作者:字节跳动数据平台

news2024/11/15 21:37:08

A/B 实验的核心统计学理论是(双样本)假设检验,是用来判断样本与样本、样本与总体的差异是由 抽样误差 引起还是 本质差别 造成的一种统计推断方法。

假设检验,顾名思义,是一种对自己做出的假设进行数据验证的过程。通俗地说,假设检验是一门 做出拒绝 的理论,检验结果有两种:拒绝原假设(reject H0),无法拒绝原假设(fail to reject H0)。实验者往往将主观不希望看到的结果(新策略没有效果)置于 原假设 (从英文命名就可以看出来感情色彩 - 它叫 null hypothesis),而将原假设的互斥事件,即对事实本身有利的结果(新策略有提升)置于 备则假设 (alternative hypothesis),如此构成的假设检验目的在于用现有的数据通过一系列理论演绎 拒绝原假设 ,达到证明备择假设是正确的,即某项改进有效的目的,所以这一套方法也被称作 null hypothesis significance testing (NHST)

由于我们永远只能抽取流量做 小样本 实验,所以每个假设检验都面临着 随机抽样误差 ,因此在做出推论的过程中,一切都围绕 概率 展开。这意味着没有任何一个基于假设检验的演绎过程可以对结果 100%确定。但所幸,统计理论可以告诉我们在每一步中犯错的机会。因此,事先知晓我们 可能犯什么错 ,以及 有多大机会犯错 就成了设计和解读假设检验的关键所在。

实验者在假设检验的过程中可能会做出 两类错误判断 - 不意外地 - 它们被命名为 第一类错误 (弃真)和 第二类错误 (取伪)。第一类错误(Type I Error):H0 为真,拒绝 H0。“本身没提升,但误判为有提升”第二类错误(Type II Error):H1 为真,接受 H0。“本身有提升,但没有察觉提升”

对比上图,第一类错误指的是原假设正确但是我们做出了拒绝原假设的结论,这个错误在现实中常常表现为“我作出了统计显著的结论但是我的改动实际上没用”;相应地,第二类错误指的是原假设错误但是我们没能拒绝原假设,这个错误在现实中常常表现为“我的改动有效,但实验没能检测出来”。

在 AB 实验的场景下,如果对某一个新 feature 是否有效进行假设检验,H0 为新 feature 没有效果,第一类错误指的是“新 feature 实际无效但检测出存在显著性效果”,第二类错误则指的是“新 feature 实际有效但未能检测出效果”。如果犯了第一类错误,会导致新 feature 的错误上线,可能会带来实际利益损失,如果犯了第二类错误,实际有效的 feature 将不会上线,带来的是潜在利益的损失。两相比较,应该更严格地控制第一类错误发生的概率。

定性知晓我们可能犯什么错以后,我们仍然需要定量地分析有多大机会犯错。在频率统计学中 ,显著性水平(α) 以及 (1 - 检验效力 power)(beta) 分别描述了实验者犯第一类错误和第二类错误的概率。这两个统计指标结合在一起比较完整地刻画一个假设检验的总体基本性能,也是进行一个假设检验所需统计指标的最小集。应该说,缺少任何一个,我们都没有足够的信息作出科学的推论,甚至可能错误影响产品的走向。

适用范围可以对 单个总体参数(H0:μ=c) 或者 两个总体参数(H0: μ1= μ2) 进行检验,假设的内容可以是双侧检验 如参数是否等于某个值(H0:μ=c),也可以为单侧检验如 参数是否大于或小于某个值(H0:μ><c)。在 AB 实验的背景下,我们通常进行的检验是 两总体双侧检验。

检验步骤

  1. 提出假设:H0: μ1= μ2v.s. H1: μ1!= μ2

  2. 构造统计量

  3. 计算统计量、检验阈值、置信区间及 p 值

  4. 得出结论:若 p<0.05 或统计量绝对值>阈值或置信区间包含 0,则拒绝原假设;若 p>0.05 或统计量绝对值<=阈值或置信区间不包含 0,则无法拒绝原假设。

Note:有些其他的计算公式会假定两组的总体方差相等,在方差的计算方式上有区别,这类公式不推荐,因为该假设在 AB 实验应用中并不常见。

p-valueP 值就是当原假设为真是所得到的样本观察结果或更极端结果出现的概率。如果 P 值很小,说明这种情况发生的概率很小,但如果出现了,根据小概率原理,我们就有理由拒绝原假设。P 值越小,说明实验发现的差异是因为抽样误差导致的概率越小,极大程度上还是由于本质上存在差异造成,我们拒绝原假设的理由越充分。

注: 两样本均值差的置信区间包含 0 等价于 P 值大于 0.05 ,此时接受原假设。思想上 与区间估计的原理中提到的“对称”有相通之处。两样本均值差的置信区间包含 0 等价于 均值差与 0 的距离小于 1.96 倍标准差 等价于 统计量的绝对值小于 1.96 等价于 P 值大于 0.05

DataTester 是火山引擎数智平台旗下产品,能基于先进的底层算法,提供科学分流能力和智能的统计引擎,支持多种复杂的 A/B 实验类型。DataTester 深度耦合推荐、广告、搜索、UI、产品功能等多种业务场景需求,为业务增长、转化、产品迭代、策略优化、运营提效等各个环节提供科学的决策依据,让业务真正做到数据驱动。

DataTester 经过抖音、今日头条等字节业务多年验证,截至 2022 年 8 月,已在字节跳动内部累计完成 150 万次 A/B 实验。此外也已经服务了美的、得到、凯叔讲故事等在内多家标杆客户,将成熟的“数据驱动增长”经验赋能给各行业。

 

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

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

相关文章

STM32CUBEMX_SDIO和FATFS_读写SD卡

STM32CUBEMX_SDIO和FATFS_读写SD卡 简述 FATFS是一个完全免费开源&#xff0c;专为小型嵌入式系统设计的FAT&#xff08;File Allocation Table&#xff09;文件系统模块。FATFS的编写遵循ANSI C&#xff0c;并且完全与磁盘I/O层分开。支持FAT12/FAT16/FAT32&#xff0c;支持多…

Django入门

Django 中文官网&#xff1a;初识 Django | Django 文档 | Django (djangoproject.com) Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。 使用 Django&#xff0c;只要很少的代码&#xff0c;Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部…

Python 学习笔记001-发布

Python 学习笔记001-发布Python如何发布为EXE文件发给别人装X0 我的开发环境Step 1 安装PyInstaller包Step2 打包Python文件Step 3 运行Python程序Step 4 最后附上Atm.py的代码Python如何发布为EXE文件发给别人装X 0 我的开发环境 Python : 3.10 PyCharm:2022.03 社区版 Ste…

VIAVI唯亚威光纤高分辨率多模 OTDR 测试方案

VIAVI Solutions 高分辨率多模 OTDR 测试方案设计用于飞机、宇宙飞船、潜艇和舰船中部署的超短多模光纤的特性分析和故障定位 高分辨率多模 OTDR 测试方案是业界紧凑、轻巧的便携装置。它的用户界面经过专门设计&#xff0c;简化了 OTDR 测试和结果读取。 特点 紧凑、轻巧、现…

Oracle --- 视图 索引 语法结构

目录 视图 概念 优点 创建视图 查看视图 ​修改视图 删除视图 索引 概念 分类 普通索引 唯一索引 复合索引 反向键索引 位图索引 存储函数 概念 语法结构 视图 概念 视图 是一种数据库对象&#xff0c;是从 一个或者多个 数据表或视图中导出的 虚表。 视图所…

C#,图像二值化(07)——全局阈值的迭代算法及其源代码

1、 全局阈值的迭代算法 图像阈值分割---迭代算法 (1) 为全局阈值选择一个初始估计值T(图像的平均灰度)。 (2) 用T分割图像。产生两组像素&#xff1a;G1有灰度值大于T的像素组成&#xff0c;G2有小于等于T像素组成。 (3) 计算G1和G2像素的平均灰度值m1和m2&#xff1b; (4) …

机器学习笔记之Sigmoid信念网络(二)醒眠算法

机器学习笔记之Sigmoid信念网络——醒眠算法引言回顾Sigmoid\text{Sigmoid}Sigmoid信念网络的模型表示Sigmoid\text{Sigmoid}Sigmoid信念网络——对数似然梯度求解过程中的问题醒眠算法基于平均场假设变分推断求解后验概率平均场理论求解后验的弊端醒眠算法引言 上一节介绍了对…

jsp+servlet+mysql实现的在线图书商城源码附带论文开题报告及视频指导教程

今天给大家演示的是一款由jspservletmysql实现的在线图书商城系统&#xff0c;主要分为前台后后台管理员功能&#xff0c;前台用户可以浏览查看各类图书信息&#xff0c;可自定义搜索&#xff0c;注册登录后可以将书添加到购物车&#xff0c;购物车中的商品可以提交订单&#x…

【复习笔记】JavaWeb实验重点代码

JavaWeb实验重点代码笔记 一、课上练习题目汇总&#xff08;部分&#xff09; 题目一 基础HTML、CSS和JavaScript 1.1 问题要求 页面上有下拉菜单、文本框、跳转按钮并排放置&#xff0c;当下拉菜单选中某个具体网站名称时&#xff0c;文本框出现其对应的链接地址&#xff0…

Linux环境下vs code中Markdown与PlantUML联合工作

PlantUML是一个可以让你快速编写UML图的组件。 在线服务器 https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000 Markdown是一种轻量级标记语言&#xff0c;排版语法简洁&#xff0c;让人们更多地关注内容本身而非排版。它使用易读易写的纯文本格式编写…

零膨胀泊松回归案例分析

零膨胀泊松回归分析 计数研究模型中&#xff0c;常用泊松回归模型&#xff0c;但泊松回归模型理论上是要求平均值与标准差相等&#xff0c;如果不满足&#xff0c;则可使用负二项回归模型 在实际研究中&#xff0c;会出现一种情况即因变量为计数变量&#xff0c;并且该变量包…

Lua闭包和Upvalue上值

一、lua中的作用域 在Lua语言中声明的变量默认是全局变量&#xff0c;声明局部变量需要使用local关键字&#xff0c;和其他语言相比这有点特殊。 -- 全局变量 a 10function func()b 100 -- 仍然是全局变量local c 20 -- func的局部变量 end func()print(a b) -- 输出…

终极.NET混淆器丨.NET Reactor产品介绍

无与伦比的 .NET 代码保护系统&#xff0c;可完全阻止任何人反编译您的代码。 产品优势 01、混淆技术 .NET Reactor通过向 .NET 程序集添加不同的保护层来防止逆向工程。除了标准的混淆技术之外&#xff0c;它还包括NecroBit、虚拟化、x86代码生成或防篡改等特殊功能。NET Re…

xilinx srio ip学习笔记之初识srio

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 xilinx srio ip学习笔记之初识srio前言IP 设置总结前言 因为工作原因&#xff0c;需要对rapidio 的协议进行了解&#xff0c;在xilinx的IP核中&#xff0c;是对应着Serial R…

这支隐藏“球队”,颠覆消费品「赛场」

【潮汐商业评论/原创】 大好的黄金周末&#xff0c;Fred约了几个朋友来家里看球。按照他的计划&#xff0c;周五准备下班后&#xff0c;他赶紧得去一趟附近的大型超市扫货&#xff0c;买一批零食酒水招待朋友。没想到的是&#xff0c;好不容易等到快下班了&#xff0c;领导通知…

外包呆一年,外包的工作经历怎么写?外包的项目经验怎么写?

0. 先来看下大家的各种问题&#xff1f; 外包的工作经历怎么写&#xff1f;外包的项目经验怎么写&#xff1f;外包如何优化简历&#xff1f;进入外包后黑化了简历&#xff0c;如何成功跳出外包圈&#xff1f;外包该如何提升自己&#xff1f;外包仔如何自我救赎&#xff1f; ……

前端基础_离线Web应用概述

离线Web应用概述 在Web应用中使用缓存的原因之一是为了支持离线应用。在全球互联的时代&#xff0c;离线应用仍有其实用价值。当无法上网的时候&#xff0c;你会做什么呢&#xff1f;你可能会说如今网络无处不在&#xff0c;而且非常稳定&#xff0c;不存在没有网络的情况。但…

【服务器数据恢复】误操作导致ocfs2文件系统被格式化的数据恢复案例

服务器故障&#xff1a; 用户误操作将linux文件系统误装入到Ocfs2文件系统的数据卷上&#xff0c;导致原始Ocfs2文件系统被格式化为Ext4文件系统。 因为Ext4文件系统每隔几百兆就会写入文件系统的原始信息&#xff0c;所以本案例中的原始Ocfs2文件系统中的数据可能受到一定程度…

搭建开源版个人图床

在微博图床、gitee、jsDelivr 陆续被 ban 的今天&#xff0c;很有必要搭建自己的图床系统了。 兰空图床 兰空图床官网&#xff1a;https://www.lsky.pro docker版本&#xff1a;https://hub.docker.com/r/halcyonazure/lsky-pro-docker 本次讲解使用 docker 版本进行部署使用 …

linux跟踪技术之ebpf

ebpf简介 eBPF是一项革命性的技术&#xff0c;起源于 Linux 内核&#xff0c;可以在操作系统内核等特权上下文中运行沙盒程序。它可以安全有效地扩展内核的功能&#xff0c;而无需更改内核源代码或加载内核模块。 比如&#xff0c;使用ebpf可以追踪任何内核导出函数的参数&…