A/BTest 基础

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 − α ( z 0 ) \Phi_{1-\alpha}(z_0) Φ1α(z0),也就是左分位数的值,与正态分布的进行比较

  • 法二:比较p值

    计算 P ( z < z 0 ) 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)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值