小流量 AB 测试能做吗?能!

前言

AB测试对于产品和运营优化的重要性有目共睹。为了能更快的得到试验结果,试验流量越大越好。

但是当流量不够的时候怎么办呢?小流量AB测试能不能做?能!那么,怎么做?

下面是6个节约流量的方法。

消除异常数据的影响

当点击量作为指标时,有时会看到少量设备贡献了数万的点击。这些设备可能是出了bug处于异常状态,也可能是在运行自动化测试,总之不会是正常的业务数据。如果将这些数据计入统计结果,将会对结果的准确性产生很大的影响。严重的情况只能重做试验,相当于本次试验流量全浪费掉了。所以极端用户的数据不进行统计,实践中让点击量最大的1%用户数据不参与计算。

正确统计进入试验的用户数

转化漏斗中的每个步骤都可以进行AB测试。假设在转化漏斗的第3层的页面进行AB测试,在统计试验UV的时候,比较科学的方法是将进入到该页面的用户统计为试验UV,而不是所有访客。如果没进入该页面的用户也统计为试验UV,则会稀释试验数据。

假设到达该页面的访客为10%,该页面转化率为50%,如果想检测出10%的提升(50%提升到55%),根据公式计算大概需要1600试验样本,对应总访客16000。如果把所有访客作为试验样本参与统计,则该种算法下页面转化率为5%(只有原来的十分之一),同样想检测出10%的提升(5%提升到5.5%),则需要30400试验样本,对应总访客也是30400。

这个例子里节约了大概1/2的流量,如果试验页面的转化率更高,前面漏斗的转化率更低,节约效果会更明显。

点击转化率比点击数量更容易获得统计显著的结果

有些场景下,如果认为用户多次点击和单次的点击差别并不大(比如下载,注册,看广告等),可以观察点击转化率指标的统计结果。转化率是去重的,用户只要点击过就计算为1,否则计算为0。同样的试验样本,点击量的标准差是一定大于转化率的。

仍然用上面提到的公式举例:

假设用户点击量的分布为0次20%,1次20%,2次20%,3次20%,4次20%。

则点击量均值为2方差为2,想检测出10%的提升需要800样本量。

转化率为80%,方差为0.16,想检测出10%的提升需要400样本量。

这个例子里节约了1/2的样本量,如果点击量的分布更加分散,节约效果会更明显。

原始版本的流量不要浪费掉

在有些情况下,为了稳妥起见往往只会让一小部分流量(比如总用户的1%)看到试验版本,99%的用户看到原始版本,如果统计试验数据的时候,看到原始版本的用户只挑出和看到试验版本用户数相同的人数(总用户的1%)来参与统计,则另外98%的流量相当于浪费了,他们实际上是对试验有帮助的。当试验版本和原始版本样本数不相同时,有一个计算等效样本数的公式:

N = (1/Ncontrol + 1/Nexperimnet)-1

当 Ncontrol=Nexperimnet 时计算得出 N=Nexperimnet/2

如果原始版本(即control版本)的流量全部参与统计,则 Ncontrol>>Nexperimnet 计算得出 N=Nexperimnet

等效样本数量翻倍了,相当于又节约了1/2的流量。

善用分层试验

想优化的地方太多了,同时跑多个试验是常态,是不是流量就不够用了?如果试验之间互相不会干扰,可以考虑分层试验。分层试验即允许同一个用户同时参加多个试验,通过流量分配的随机算法保证试验结果的代表性。原来流量只能做一个试验,现在不相关的试验可以一起做了,效率成倍增加。

同层试验共用原始版本数据

同层的多个试验,大家的原始版本是完全相同的,分开各自统计显然浪费了数据。以4个试验为例:

如果每个试验有独立的原始版本和试验版本,流量分配都是总流量的1/8,则根据上面提到的等效样本量公式,每个试验的等效样本数为总流量的1/16。如果4个试验的原始版本合并为公共的原始版本(占总流量1/2),则每个试验的等效样本数为总流量的1/10。等效样本量提升了60%。

如果多个AB测试试验优化的是同一指标,还可以进一步的对公共原始版本的流量进行微调。令n为试验数量,则 (Ncontrol/Nexperimnet)2 = n 时等效样本数量达到最大值。n=4代入得到原始版本占总流量1/3,每个试验版本占总流量1/6,最终每个试验的等效样本数为总流量的1/9。等效样本量又提升了11%。

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT派

我们从250个机器学习开源项目中挑出了Top 10,Github平均star979

在过去一个月中, Mybridge 从 250 个机器学习开源项目中挑选出了 Top 10。Mybridge AI 比较了这期间发布的新项目和重大项目,然后依据...

983
来自专栏AI科技评论

Google正式发布TensorFlow Lite预览版,针对移动/嵌入设备的轻量级解决方案

AI科技评论消息,日前,谷歌正式发布 TensorFlow Lite 开发者预览版,这是针对移动和嵌入式设备的轻量级解决方案。TensorFlow Lite 是...

2837
来自专栏AI科技评论

ICML论文 | Facebook分享机器学习研究开源平台代码

正在美国纽约举行的国际机器大会(ICML)上,我们很难忽略 Facebook 研究科学家们的身影——他们呈现三篇论文、主导四场研讨会、并主讲两场教程。其中包括 ...

36411
来自专栏机器之心

教程 | 如何使用JavaScript实现GPU加速神经网络

选自Towards Data Science 作者:Sebastian Kwiatkowski 机器之心编译 参与:Nurhachu Null、路雪 本文作者 ...

2855
来自专栏人工智能头条

利用GPU和Caffe训练神经网络

1405
来自专栏IT派

TensorFlow简单介绍

TensorFlow深度学习框架 Google不仅是大数据和云计算的领导者,在机器学习和深度学习上也有很好的实践和积累,在2015年年底开源了内部使用的深度学习...

4198
来自专栏橙、

Python机器学习库:Scikit-Learn简介

如果你是一名Python程序员,并且你正在寻找一个强大的库将机器学习引入你的项目,那么你可以考虑使用Scikit-Learn库。

21611
来自专栏贾志刚-OpenCV学堂

我为什么要写《OpenCV Android 开发实战》这本书

2015年我出版了个人第一本关于图像处理方面的书籍《Java图像处理-编程技巧与应用实践》,这本书主要是从理论与编码上面详细阐述了图像处理基础算法以...

1063
来自专栏机器学习算法原理与实践

英文文本挖掘预处理流程总结

    在中文文本挖掘预处理流程总结中,我们总结了中文文本挖掘的预处理流程,这里我们再对英文文本挖掘的预处理流程做一个总结。

472
来自专栏AI研习社

告别选择困难症,我来带你剖析这些深度学习框架基本原理

无论你喜欢或不喜欢,深度学习就在这里等着你来学习,伴随着技术淘金热而来的过多的可选项,让新手望而生畏。

1253

扫码关注云+社区