工作中经常会有AB相关工作,空闲下来进行了梳理,整个文档没有重点关注AB中对应统计知识,一方面觉得展开的话太多,另一方面也受限于个人水平。不足之处肯定很多,希望和大家多多交流,大家多多提意见,感谢大家。

一、背景:

实际工作中,为了优化用户产品体验,或者验证运营策略,机器学习模型线上效果等等,我们通常都会进行线上的AB测试。多个方案线上运行对应周期后,回收数据以验证各方案策略的有效性,所以这里离不开数据分析最基本的思维—对比。指定参照进行数据对比,便知孰好孰坏。所以通俗不严谨的理解,可以认为ABtest是一个对比实验,但AB有着其科学的严谨性。


(相关资料图)

二、AB测试的大体流程:

1.明确测试目的

2.确定测试关注指标

的假设

4.确定测试对象

5.实验样本量计算及流量分割

6.线上实验配置及有效性验证

7.数据评估及AB迭代

1.明确测试目的

理清需求,明确AB的目的是为了什么,是否有必要进行线上验证,因为有些疑惑通过数据分析也能实现。个人理解,AB还是有一定的成本的,比如对用户体验的影响,所以有必要清楚目的,评估而行。

2.确定测试关注指标

核心收益指标:最为关心的核心指标,即测试目的所在,如订单被司机接单的应答率。

潜在负向指标:这类指标不是AB直接所影响,但潜在因为AB的策略会带来负面影响,如司机接到订单后的取消率。

辅助指标:辅以观察ab效果的指标,电商中的用户的复购率等等。

的假设

简单理解

这里其实是假设检验的思想在主导,构造本次AB测试的原假设和备择假设,即本次实验想要验证的东西。

如:检验样本均值是否存在差异:

或者二者是否是存在某个值的差异(c是常数,如均值差异2以上的等等):

当然对于比例类的假设检验形式也是类似的,这里就不展开了。

 第一类错误和第二类错误

第一类错误 错误,即‘弃真’错误,小概率事件发生了我们认为实验组和对照组存在显著差异,而事时上二者无显著性差异,这个错误的概率就是 ;

第二类错误 错误,即‘取伪’错误,实验组和对照组两组实际有差异时被拒绝掉的概率,这里会涉及到统计功效(1-第二类错误,实验组&对照组有差异且能被检测出来的概率);

4.确定测试对象

这里要明确以下几个点:

测试上线平台,版本等等

测试上线功能/策略,明确AB中需要测试的策略、产品功能

测试上线的用户群体,要保证分流的科学合理性。

只有科学变量的控制,才能保证AB最为基础的可对比性,得到的结论才可靠。

5.实验样本量计算及流量分割

实验样本量的计算,AB测试指标的从当前表现到预期收益需要多少样本量,这可以从对应的统计学知识计算所得,大致如下(具体公式可以查看对应统计知识了解即可):

实验样本量计算

均值类检验所需样本量计算

n是所需样本量,实验组和对照组理论上样本一样多,则至少需要2n样本;α和β即为假设检验中的提及到的第一类错误和第二类错误的概率(一般分别取和),Z为正态分布的分位数函数;Δ为两组数值的差异;σ为标准差,是数值波动性的衡量,σ越大表示数值波动越厉害。

所以可知在其他变量不变情况下,当实验组&对照组数值的波动性越小,所需要的样本量就越小。

比例类检验所需样本量计算:

其中P1和P2是我们实验中的对照组和实验组的取值,其余同上。

在线工具进行样本量计算:

该在线计算样本量工具还是很好用的,大家可以用用看

实验流量分配

1.实验对用户体验感知影响很小,通常可以较大流量测试,如实验组:对照组 50%:50%的流量分配

2.实验稳定性不高:如新功能的上线,策略变动较大等,一般先小流量进行测试,后续依据表现放量。

3.依据实验的收益预期来判定:如希望获得很大的收益,在确定较大负面影响下,可以大流量上线。

流量分配比例假定ok之后,结合实验的样本量需求,则实验的实验周期即可得知:

如对订单进行分流:

平台日均订单100w,AB测试样本量需要30w,流量分配为10%,则可知30w/(100w*10%)=3天;

这里很重要的一点是,一个测试周期尽量要覆盖用户或者业务的一个周期性规律:

如短视频的周末播放量整体会偏高,用户刚接触新产品功能时会有新奇效应

关于AA实验

在我面试过程中面试官问过,怎么验证流量是均匀的,或者说如何证明你的实验收益不是波动所带来的?

这里其实可以通过AA实验(也可以设置AABB实验),通过AA实验的效果可以在指定显著水平下计算指标的波动置信区间,这样我们就得到了对照组的波动范围,也可以验证分流是否 是ok的;

对于测试我们同样可以计算出对应的指标波动的置信区间,这样对比即可知实验收益是否是否是由波动所造成的。

6.线上实验配置及有效性验证

实验的配置一般分为两种:

1.正交实验:

实验1和实验2是互斥的,彼此流量是互斥的;实验1和实验2流量打乱之后再分配到实验3和实验4,此时实验3和实验4是互斥的,但是和实验1与实验2是正交的。

2.互斥实验

互斥实验大体如下,各实验流量之间互斥

3.一些较为复杂的策略:

事实上,当ab测试活动比较多时,经常为了评估活动的有效性,实验的配置设置上会比较复杂,以下图为例:

基于贯穿周期的对照组和实验总流量分层这样的设计,来评估多活动共同作用下的整体收益

4. 实验配置后要数据查验

实验配置ok后,最好做一下数据查验工作,检查所设置实验是否真实线上生效,我个人遇到过2次研发实验配置错误导致数据回收不到的问题。

7.数据评估及AB迭代

这里个人认为至少有以下几点需要关注:

1.核心指标变化:以用来评估方案好坏

2.收益是否长期有效,AB在实际的复盘中不同周期试验下要考虑的问题是不完全相同的,如前期可能是关注指收益指标,中后期可能会更加关注短期内无法暴露出的负面影响,比如是否带来用户流失等问题。

3.不同类别/群体表现是否存在差异

基于上述这些思考来衡量AB是否扩量还是暂时下线迭代:

如笔者曾经评估过一个司机像用户提出加价申请的AB,当时大体如下的评估框架:

编辑切换为居中

三、AB测试中的几个注意事项:

1.保证实验组和对照组流量分配的均衡,以保证可实现最基础的对比;这里可以做AA实验,以及AABB实验等来进行验证。

2.保证版本,时间等客观的外界环境的的一致性。

3.实验生效日期尽量要覆盖业务的一次规律特征周期,或者是用户的一个完整的活动周期。

4.一次实验尽量保证用户的地理位置可比性,同事可以避免用户之间的交流带来的影响。

5.个人觉得没必要不停的检验数据是否有正向收益。

四、AB测试中的一些其他思考:

1.关注指标收益正向,但检验不显著,实验该作何处理?

个人理解,AB的目的是为了优化,如果线上收益是正向的,虽然检验不显著,但是可以继续保持线上运行,初次之外要关注是否存在可优化点。

2.实验中指标1正向收益,指标2收益负向,实验该作何处理?

个人理解,明确AB的首要关注指标,如果核心关注指标1,而指标2的负向暂时是可以接受的,则暂时可以保持AB的正常运行,可将实验周期再稍微拉长,重点关注下指标2的表现,这样指标2的问题得以放大,更利于解决。

3.实验指标收益不显著得做法?

通常做法有2:

1.增大实验样本量来快速验证实验是否真实有效

2.调整实验策略

进一步思考,为啥实验有时需要很大得样本量,这里本质上是关注指标的变动大,方差大,从而需要较大样本量来进行验证;唤个角度思考,如果把关注指标的方差缩小,那么所需样本量就随之减小。

前段时间学习,了解到了CUPED的方法(Controlled-experiment Using Pre-Experiment Data),简单介绍如下:

CUPED算法是一个通用的方法,主要利用实验前的无偏数据,(一般选取实验前的同一指标)对实验核心指标进行修正,使得新指标的方差更低,得到更敏感的新指标,放大treatment的影响。

CUPED思路如下:

编辑

编辑切换为居中

其中CUPED的结果关键点需要注意一下:

1.协变量X的选择:

通常为和Y相关的变量,多数情况下还是关注指标的本身,不过该指标数据可以选取实验前一定周期内的数据

2.部分样本缺乏数据的处理办法:

部分新用户在实验前缺乏数据,可以使用实验前对应指标的均值来进行代替

3.。。。其他注意点,还在学习理解中。

4.实验放量后,核心指标呈现负向

此时要从以下几个方面思考问题:

样本量的问题,是否随机,是否充足

实验周期

数据统计口径

用户群体问题

放量前的实验组用户、放量后新增的实验组用户、放量后对照组用户,看一下哪类用户影响的,一般而言,实验结果的差异,是与之前不同的那个人群造成的,需要找出这部分人群。

8. AB实验中的注意事项

1.不同组的实验参与对象互不干扰

2实验分组保证随机性,同一用户在实验期间保持所在组统一

。。。

推荐内容