AB Test 介绍:

https://vwo.com/ab-testing/

AB Test 的意义:

数据分析告诉我们要不要去做一件事情,ab 实验反馈告诉我们我们做得好不好,哪里有问题,以及衡量可以带来多少确定性的增长。

一、理论基础

 
1、中心极限定理:
 
大量相互独立的随机变量,其均值(或者和)的分布以正态分布为极限(意思就是当满足某些条件的时候,比如Sample Size比较大,采样次数区域无穷大的时候,就越接近正态分布)。而这个定理amazing的地方在于,无论是什么分布的随机变量,都满足这个定理。
 
2、大数定理
 
    简单的可以描述为,如果有一个随机变量X,你不断的观察并且采样这个随机变量,得到了n个采样值,然后求得这n个采样值得平均值,当n趋向于正无穷的时候,这个平均值就收敛于这个随机变量X的期望。
 
3、置信区间和统计显著性
参考:


https://zhuanlan.zhihu.com/p/22987913

 概念:样本、总体
 
置信区间是(用来对一个概率样本的总体参数进行区间估计的) 样本均值范围,它展现了这个均值范围包含总体参数的概率,这个概率称为置信水平;
 
置信水平代表了估计的可靠度,一般而言,我们采用95% 的置信水平进行区间估计。
 
置信区间在ABtest中的意义:(两个总体的均值之差的置信区间)
 
由t检验大样本检验公式计算得出Z值(由均值、样本量、方差计算出来的统计值,通过这个统计值再结合分布公式,也可以计算出p value从而作出是否拒绝原假设的决策),再根据两个总体的均值、标准差和样
本大小,利用以下公式即可求出两个总体均值差的95%置信区间:

 值得注意的是,置信区间的上下限同为正或负,只能说明试验是统计显著的(也就是试验版本和对照版本有差异),但是这个差异有可能是非常小的,在实际应用中微不足道的。因此,只有兼备统计显著和效果显著两个特征的结果,才能说明该版本是可用,值得发布的。
 

二、AB testing的实验注意点

 
1、时间一致性;
 
2、数据分布的一致性;
 
3、统计显著的结果才可以引导决策;
 
4、实验分组设计上(流量分布要均匀):
 
算法对用户的偏差没有反映到实验分桶上,会放大算法之间效果的差距,从而产生辛普森悖论;
 
5、置信
 
要获得一个可信的试验结果需要一定的流量(样本)和时间,如果流量(样本)太小或者分不均匀,试验结果会存在偶然性,可能无法得出可信的结果;试验运行时间太短的话同理;
 
6、时间
 
实验周期中也要避免外部因素的影响,尽量在平稳时期进行,减少外部因素的干扰;
 
有时候为了保证实验效果的置信,防止小流量分布不均匀,可以在试验过程中,逐步增大流量分配,同时监控关键指标的数据走势,从而得到置信的结论;
 

三、分流及分桶原理

需要保证:

(1)同一实验中不同分桶之间是随机的;

(2)不同的场景、实验,分桶会被重新打散;

(3)实验设计时,需要考虑验证哪个因子,则可以按照那个因子来进行分桶;

分桶和分流之间的关系:

  分流是指,从总体中随机抽样百分之几来做实验;

  分桶是指,在实验的流量里面根据某个需要验证的因子随机分桶;

四、分桶不平衡的验证办法

 
1、AA testing
 
A/A测试可以理解成对两个相同版本进行的A/B测试。通常,这样做的目的是为了验证正在使用的工具运行试验在统计上是公平的。在A/A测试中,如果测试正确进行,控制组和实验组应该没有任何区别。
 
如果说A/B测试用来测试比较几个方案的优劣,那么A/A测试就是验证A/B测试及工具置信度的有效方式。
 
应该考虑运行A/A测试的唯一种情况:
 
(1)你刚安装了一个新的测试工具或更改了测试工具设置;
 
(2)你发现了A/B测试与数据分析工具结果之间存在差异;
 
一般在AB测试之前进行AA测试,或者在ab测试中同时进行A/A/B测试,观察两个相同的A组之间是否有统计显著的不同,从而确定分桶规则是否靠谱。一些分析表明,这种方式还不如直接让控制桶(a桶)是实验桶(b桶)的两倍大(所谓的 池化)
 
2、多项检验的统计方法;
 
 

五、分桶不平衡的解决办法

 
1、由AA实验演变的A:B=2:1的流量大小分配方式;
 
2、通过逐步放大流量做对比的方式;
 
 

六、AB test的应用

 
1、方案优选;
2、系统测试;
3、因果推断;
 

AB test和离线评估的优缺点和使用场景:

1、AB test 系统搭建和维护需要一定成本,对技术也有一定要求,如果该系统做得不好,用了反而有害;ab系统更多是用于方便衡量算法/产品优化带来的效果,对于用人紧缺的创业公司其实不是必要的;
2、离线评估最重要是模拟真实线上场景,如果模拟不好,离线测试的结果也不可信;
  但是,当公司的ab test系统还没有搭建好的时候,离线评估还是很有必要,起码有一些明显的算法问题可以通过离线测试看出来,模型选择和调优也需要离线测试,而且离线测试不会对线上造成影响,ab实验则会;
3、当产品在市场上的竞争环境激烈,项目上线需要争取有利时机时,往往凭借战略决策来决定上线与否而不是ab实验,ab实验有一段观察期而且需要外部条件相对稳定才能得出客观的结论,适用于产品的发展期处于相对比较平稳的时候,防止决策错误导致数据下降;
  因此,实时数据分析是有必要的,实时ab test必要性不是很强;
4、多数的ab test系统并不具备决策推全后仍然持续观察的能力,有一些关乎实现公司或者产品长期战略目标的功能/算法,可能短期内会导致指标下降或者没有明显增长,但是也必须要上线;
5、AB test 帮助你在现有流量中获取更多的收益,或者在现有流量中提升ROI,或者说在现有用户基础上提升活跃度,但是在衡量对用户量增长或者获取新流量是否有帮助上,ab test或者所起作用不大。
6、AB test还有一个缺点,就是只能做小范围的效果比较,比如作用于同一个场景使用不同算法的效果比较;比如它不能告诉我们,A业务的推荐算法是否比B业务的推荐算法做得好;也就是说它不能衡量一个模型的迁移和泛化能力;
 
 

算法ab test 与数据分析的关联:

 1、使用deep模型做算法,ab test衡量算法end-to-end的效果;然后用统计分析方法或者ml的方法做模型解释,或者是建模前的特征分析。
 
 

其他:

 
1、验证达尔文系统流量分配不均的问题解决办法:设置AA testing
 
2、对照组的设置要和优化baseline一致,实验设计要和我们需要验证的结论相一致才行;
 
3、模型到底是否需要 fine tuning?(权衡模型调优与新算法尝试之间的选择:看目标到底是要精准还是要召回高?其实是准确率和召回率的平衡。抛开业务需求,一个好的模型,是在准确率和召回率趋向接近的基础上,两者还能达到一个比较高的值;那如果是有业务需求,那么就根据业务需求使用相应特点的模型)
 
4、在线模型里面到底是抽样训练还是全量样本训练比较好?(训练样本抽样方面的优化)(需要实验验证)
 
5、特征优化包括特征的全面性完善和特征加工方式的多样性完善;
 
 数据分析->基础特征加工->模型设计->平台工具(特征工程、模型训练及预测)->实验设计及验证->(反馈到前面任意步骤再顺序执行)
 

附:

ab test tutorial

具体计算方法及工具:

 
贾俊平 《统计学》5~8章
 
 
 
 

AB test学习笔记的更多相关文章

  1. Theano 学习笔记(一)

    Theano 学习笔记(一) theano 为什么要定义共享变量? 定义共享变量的原因在于GPU的使用,如果不定义共享的话,那么当GPU调用这些变量时,遇到一次就要调用一次,这样就会花费大量时间在数据 ...

  2. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  3. C++学习笔记(2)

    本学习笔记是C++ primer plus(第六版)学习笔记.是C++学习笔记(1)的后续.复习C++基础知识的可以瞄瞄. 转载请注明出处http://www.cnblogs.com/zrtqsk/p ...

  4. 两千行PHP学习笔记

    亲们,如约而至的PHP笔记来啦~绝对干货! 以下为我以前学PHP时做的笔记,时不时的也会添加一些基础知识点进去,有时还翻出来查查. MySQL笔记:一千行MySQL学习笔记http://www.cnb ...

  5. Git学习笔记(3)——撤销修改和文件的删除

    本文主要记录了git中,错误的撤销和文件的删除. 撤销修改 这里有3中情况 改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file. 不但改乱了工作区某个 ...

  6. 测试Servlet生命周期学习笔记

    测试环境:windows xp旗舰版 软件环境:myclipse8.5+tomcat7.0 ****************************************************** ...

  7. guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用

    guava 学习笔记(二) 瓜娃(guava)的API快速熟悉使用 1,大纲 让我们来熟悉瓜娃,并体验下它的一些API,分成如下几个部分: Introduction Guava Collection ...

  8. A.Kaw矩阵代数初步学习笔记 9. Adequacy of Solutions

    “矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...

  9. A.Kaw矩阵代数初步学习笔记 7. LU Decomposition

    “矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...

随机推荐

  1. Htpp通讯协议详解

    转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的 ...

  2. SpringBoot | 第十六章:web应用开发

    前言 前面讲了这么多直接,都没有涉及到前端web和后端交互的部分.因为作者所在公司是采用前后端分离方式进行web项目开发了.所以都是后端提供api接口,前端根据api文档或者服务自行调用的.后台也有读 ...

  3. web.config文件executionTimeout的单位

      executionTimeout:表示允许执行请求的最大时间限制,单位为秒

  4. Laravel项目的结构文章

    http://esbenp.github.io/2016/04/11/modern-rest-api-laravel-part-1/

  5. Java并发编程的艺术,解读并发编程的优缺点

    并发编程的优缺点 使用并发的原因 多核的CPU的背景下,催生了并发编程的趋势,通过并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升. 在特殊的业务场景下先天的就适合于并发编程. 比如在 ...

  6. spring运用的设计模式

    1.代理模式(典型的aop) 2.工厂模式(beanFactory) 3.观察者模式(ApplicationContextEvent && ApplicationContextList ...

  7. 深入剖析javaScript中的深拷贝和浅拷贝

    如何区分深拷贝与浅拷贝,简单来说,假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,如果B没变,那就是深拷贝:我们先看两个简单的案例: //案例1(深拷贝) var a ...

  8. Spring IoC和AOP的介绍

    基于Spring Framework 版本:5.0.2.RELEASE IoC 概念:传统Java开发中,程序通过new主动创建对象实例,而Spring有专门的IoC容器来创建对象,具体来说就是在Sp ...

  9. PHP报错configure error Cannot find libmysqlclient under usr

    编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法 (问题产生,mysql是yum安装的,libmysqlclient* ...

  10. Spring Boot : Swagger 2

    每次修改完代码需要找原本的API时楼主的内心是痛苦的,因为一般情况下都找不到,需要重新写一份.如果使用Swagger的话,只要加几个注解就可以实时生成最新的在线API文档,而且不仅仅是文档,同时支持A ...