A/B Test❣️

参考了很多大佬的文章,用与个人学习

本质就是一种对照,如何找到完美合适的对照组?就算找到了,样本量是否充足呢?

  • 样本选择 - 正交分桶

  • 确定样本量的分布

    • 确定选择什么检验统计量

      • 小样本 大样本 方差是否已知 u 还是t
    • 计算样本均值和样本标准差
  • 设计样本量

    • 知道预期提升的比例 (比如转化率)

      • 在假定的提升比例下,确实这个假设是否通过
    • 通过转化率和p值共同确定

  • 检验结果

一、A/B Test

1. 常见用途

新功能验证、计算算法、UI布局、运营策略、文案

计算收益:例如,最近新上线了一个直播功能,那么直播功能究竟给平台带了来多少额外的 DAU,多少额外的使用时长,多少直播以外的视频观看时长等

二、A/B Test实验设计

1. 流量分类

实验版本的设计要遵循变量的单一性,也不一定吧。可以是单一因素,也可以是多因素试验设计

因此经常需要在流量分配时有所权衡,一般有以下几个情况:

  • 不影响用户体验:如 UI 实验、文案类实验等,一般可以均匀分配流量实验,可以快速得到实验结论

  • 不确定性较强的实验:如产品新功能上线,一般需小流量实验,尽量减小用户体验影响,在允许的时间内得到结论

  • 希望收益最大化的实验:如运营活动等,尽可能将效果最大化,一般需要大流量实验,留出小部分对照组用于评估 ROI

2. 实验时长

业界的实验时长一般是2-3周,最短时长建议不要少于7天。因为不同日期活跃的用户群体可能不一样,所以最好要覆盖一个周期,如7天、14天、21天。

实验时间不宜过程,应该快速验证快速迭代

3. 选择指标

  • 直接指标
  • 间接指标
    • 正向指标:可能提升的指标
    • 负向指标:可能导致下降的指标

基于什么指标进行比较?

指标基线:由历史的数据得出,如果没有额话可以参考其他类似功能的指标

4. 计算最小样本量

虽然参加实验的样本越多越好,但是资源有限。而且如果实验是负向,可以避免不必要的损失

第一类错误和第二类错误:

  • α\alphaα:表示出现第一类错误的概率,也称为显著性水平,常见的取值有1%、5%、10%、,一般取值5%,即犯第一类错误的概率不超过5%

    • 1-α,称为统计显著性,表示有多大的把握不误诊。
  • β\betaβ: 出现第二类错误的概率,一般取值20%
    • 更常见的表示方式为统计功效power=1-β,即有多大把握能检查出版本差异
  • A/B Test的重要理念:宁肯砍掉多个好的产品,也不要让一个不好的产品上线

1. 计算最小样本量的两种检验方法

对于留存率、渗透率等漏斗类指标,采用**卡方检验**

对于人均时长类等均值类指标,采用**t 检验**:

  • Z检验

    • 检验灵敏度Δ,新方案的直接效果指标与指标基线差值的绝对值,即新方案与旧方案的区别有多大

      • 从表达式上看,差距越大所需样本量越小 (不理解)❓
  • 卡方检验

5. 圈选用户

如何从一个总体中按一定比例抽取随机样本;如果同时进行的实验中有互斥的怎么办。

正交实验和互斥实验

  • 正交:test1和test2互不影响
  • 互斥:实验之间存在相互影响。举例: AB Test1是测试温控限频策略对温度的影响,AB Test2是测试温控降亮度对温度的影响,Test1和Test2都会影响温度,所以Test1和2之间互斥。

分流(或者说抽样):应该保证同时性、同质性、唯一性、均匀性。

  • 同时性:分流应该是同时的,测试的进行也应该是同时的。

  • 同质性:也可以说是相似性,是要求分出的用户群,在各维度的特征都相似。

    • 判断同质性的方法:AAB测试,对两组对照组的结果进行方差检验,判断结果是否存在差异
  • 唯一性:即要求用户不被重复计入测试。

  • 均匀性:要求各组流量是均匀的

  1. 单层方案

    所有流量按某个参数(UserID,DeviceID、CookieID、手机号等)分成n个桶,假设选定UserID,有以下两种方法:

    如果出现实验互斥的情况,只能靠人工给各个实验指定分组

    单层方案适合简单的验证,不适合长期大规模做交叉实验,流量利用效率太低,且随机组不好把握,最终容易造成某一组用户指标明显优于其他组。

  2. 多层方案

    人为定义一些分层,如:UI 层、推荐算法层,每一层中再对用户随机分组,即可实现同一个用户出现在不同层的不同组里面,做到流量的重复利用。

​ 单独看每一层,其实就是一个单层方案,并没有从根本上解决问题,只不过是复制出来多几层而已,如果某一层实验非常多,还是会存在流量不够用的情况,

  1. 无层方案

    就是每一层都单独一层。确保每一个实验都单独占据了所有流量。可以取任意组的流量进行实验,但是又引进了新的问题,多层方案将实验的互斥在层内进行了限制,无层会导致同一个用户命中多个实验,即使这些实验是互斥的。

    显然这样子是绝对不允许的,解决方法是赋予每个实验优先级,例如按上线优先级排序,优先将流量赋予高优先级用户。也可以在创建实验的时候如果有互斥实验,新创建实验的分组算法复用已有实验的实验ID进行分组即可避免。

三、A/B Test实验结果评估

显著性检验同样有多种方法:T检验、Z检验、卡方检验。具体选择什么检验参考如下流程图,互联网行业日活较大数据量较多,常常选用Z检验。

Z检验使用的是总体方差,T检验使用的是样本方差,卡方检验是比较两组数值的分布,因此Z检验比T检验和卡方检验效果更明显,检验精确度是:Z检验>T检验>卡方检验,下面以Z检验为例进行介绍。

AB测试需要比较出哪个实验组表现更好,因此使用的是单尾检验。原假设为新方案不优于旧方案,然后计算出在原假设成立的条件下,计算所得实验样本数据特征的概率原假设发生的概率P值,和显著性水平α进行比较以判断是否拒绝原假设。具体步骤如下:

1. 计算Z值

根据实验数据得到对照组均值为p1、实验样本数n1,实验组均值为p2、实验样本数n2

这个公式可能不太对,常见的公式为$z=\frac{p_1 - p_2}{\sqrt{(\frac{1}{n_2}+\frac{1}{n_2})p_c(1-p_c)}} $

2. 得到结果

  • 法一:比较置信区间

    计算Φ1−α(z0)\Phi_{1-\alpha}(z_0)Φ1−α​(z0​),也就是左分位数的值,与正态分布的进行比较

  • 法二:比较p值

    计算P(z<z0)P(z<z_0)P(z<z0​),与显著水平α\alphaα 进行比较,如果两者相等则加大样本量

    利用statsmodels.stats.proportion.proportions_ztest([c1,c2],[n1,n2],alternative='smaller')

    计算置信区间和p值,其中n1 n2为对应的样本量,alternative='smaller’代表左尾

实验结束后需要:

  • 反馈实验结论,包括直接效果(渗透、留存、人均时长等)、ROI
  • 充分利用实验数据,进一步探索分析不同用户群体,不同场景下的差异,提出探索性分析
  • 对于发现的现象,进一步提出假设,进一步实验论证

3. 更加高级的实验

3.1 多个活动交集量化的实验

活动 A 和活动 B,有着相互放大的作用,这个时候就会 1+1 > 2;还有的时候,活动 A 和活动 B,本质上是在做相同的事情,这个时候就会 1+1 < 2。

这个时候就需要一个贯穿层(贯穿所有活动的对照组)

  • 春节活动的整体贡献:实验填充层 vs 贯穿层
  • 活动A的贡献:活动A实验层,实验组 vs 对照组
  • 活动B的贡献:活动B实验层,实验组 vs 对照组

3.2 业务迭代的同时,如何与自身的过去对比

业务需要和去年或上个季度的自身对比,同时业务还不断在多个方面运用 AB Test 迭代

类似与上面这种层次设计,在推荐系统中较为常见,在某一些产品或系统中,贯穿层不能够完全没有策略,那么采用去年或上个季度的策略,代表着基准值,从而量化新一个周期的增量贡献

可以量化:

  • 每个小迭代对整体体统的贡献:实验层中的实验组vs对照组
  • 系统的整体迭代与上一个周期的比较:实验填充层 vs 贯穿层1(如果是年,那就2)
  • 同时,可以量化去年策略的自然增长或下降,以衡量旧有系统是否具有长期的适用性(作为系统设计者,更应鼓励设计具有长期适应性的系统):贯穿层 1(上个季度的策略)VS 贯穿层 2(去年的策略)

3.3 更为复杂的实验设计

微视任务福利中心的实验设计为例,举例一个更复杂的实验系统设计,综合了上面提到的 2 个目的:

  • 量化每一个实验迭代为系统带来的增量贡献

    • 即每一次实验迭代都与上一次对比
  • 量化每一类迭代(如 UI 迭代、策略迭代),在一个阶段的增量贡献
  • 量化系统整体在上一个周期(季度、年)的增量贡献
  • 量化任务福利中心的整体 ROI(本质上,是给用户一些激励,促进用户活跃,获得更多商业化收益,所以和推荐系统不同的是,需要有完全没有任务福利中心的对照组,用户量化 ROI)


={“sourceType”%3A"answer"%2C"sourceId"%3A1103961403})整体在上一个周期(季度、年)的增量贡献

  • 量化任务福利中心的整体 ROI(本质上,是给用户一些激励,促进用户活跃,获得更多商业化收益,所以和推荐系统不同的是,需要有完全没有任务福利中心的对照组,用户量化 ROI)

A/BTest 基础相关推荐

  1. 黑马程序员C语言基础(第四天)数据类型

    https://www.bilibili.com/video/BV15W411K7k6?p=65&spm_id_from=pageDriver 文章目录 数据类型 常量与变量 关键字 数据类型 ...

  2. 【python篇】python基础之--基本问题记录

    第一:保留字 python的保留字 查看所有的保留字命令:[在ipython里操作 退出用:quit] import keyword keyword.kwlist and as assert brea ...

  3. 【五】 C语言基础知识学习回顾 | 一篇搞定C语言基础 | 内附详细代码以及注释

    一 .C语言学习第一天 1.1 编写C语言代码:hello.c #include<stdio.h> #include<stdlib.h> //调用system系统函数需要包含的 ...

  4. 计算机统考多媒体技术操作题,2020年9月网络教育统考《计算机应用基础》多媒体技术模拟题试卷操作题...

    2020年9月网络教育统考<计算机应用基础>多媒体技术模拟题试卷操作题 操作题: 1.在考生文件夹中,有一个"Test.rar"压缩文件,其中包括"Test1 ...

  5. 2023 Data数据分析岗前景如何?0基础学习数据分析成功上岸,3个月掌握令人惊叹的sql能力!...

    Date数据分析师的发展路线! 从事数据分析相关工作,按职业发展方向大致分为两类. [1]业务路线:业务分析--数据分析师--部门leader--管理高层 一般在大中型企业为业务持续增长带来价值,比如 ...

  6. 软件测试 | 测试开发 | 30 分钟轻松搞定正则表达式基础

    提起正则表达式,可能大家的第一印象是:既强大好用但也晦涩难懂.正则表达式在文本处理中相当重要,各大编程语言中均有支持(跟 Linux 三剑客结合更是神兵利器). 正则表达式是对字符串操作的一种逻辑公式 ...

  7. Java基础学习笔记(完结)

    Java基础 前言 一.Java基础语法 1.注释 2.标识符 3.数据类型 4.类型转换 5.变量.作用域.常量 6. 运算符 二.Scanner与流程控制 1. Scanner对象 2. 流程控制 ...

  8. C语言基础知识-数据类型

    C语言基础知识-数据类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量与变量 1>.关键字 C的关键字共有32个.1>.数据类型关键字(12个)char,sh ...

  9. 30分钟轻松解决正则表达式基础

    提起正则表达式,可能大家的第一印象是:既强大好用但也晦涩难懂.正则表达式在文本处理中相当重要,各大编程语言中均有支持(跟 Linux 三剑客结合更是神兵利器). 正则表达式是对字符串操作的一种逻辑公式 ...

  10. 前端基础(HTML,CSS,JavaScript,jQuery)

    文章目录 `HTML` 基础 `HTML`文件的基本结构 标签 属性 转义字符 元素之间的关系 常用标签 基本 列表 图片 表格 嵌套页面 表单 `form`提交表单的属性: `GET`请求的特点 ` ...

最新文章

  1. 图像金字塔与resize函数
  2. loader调用过程
  3. 南宁师范大学计算机与信息工程学院研究生,南宁师范大学计算机与信息工程学院(专业学位)职业技术教育保研...
  4. 【特征】机器学习之特征优选
  5. torch 变量_python变量
  6. 百度云观测优化建议解决方案:未设置max-age或expires
  7. QT的QDesignerFormWindowInterface类的使用
  8. 【Python CheckiO 题解】Popular Words
  9. Eclipse中web项目的默认发布路径改为外部Tomcat中webapp路径
  10. ubuntu下安装及配置git的方法(最全超详细教程github)
  11. 【SpringCloud】Spring Cloud bus
  12. sql 在某表中加入一列count所有数据_执行COUNT(1)、COUNT(*) 与 COUNT(列名) 到底有什么区别?...
  13. 音效SystemSoundID
  14. TLS 1.3套件TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256
  15. 4556: [Tjoi2016Heoi2016]字符串
  16. 已解决-Excel选择多个单元格,只有计数,没有合计和平均值
  17. 倾斜摄影在农房一体不动产测量中的技术流程(Smart3D+EPS)
  18. 盘点人工智能高薪职位
  19. 团队项目-团队成员介绍
  20. Asio Streams, Short Reads and Short Writes

热门文章

  1. Codeforces 686D. Kay and Snowflake
  2. Visual Studio 2015官方汇总包括下载和视频
  3. 【Java-网络编程】一对一聊天系统的实现
  4. 【详解】指令系统中跳转指令与OF,SF,CF,ZF的关系
  5. 浅谈essay、paper和dissertation的区别
  6. java实现在线预览的功能(一)word转html
  7. Unity场景优化工具:Mesh Baker 基础教程(贴图篇)
  8. js 改变匹配到的字符串的颜色 — replace
  9. root 账号不能登录的解决方法
  10. sql server case when then else end as 用法