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. 埃氏筛法(求n以内有多少个素数)

    题目大意:给定整数n,请问n以内有多少个素数 思路:想必要判断一个数是否是素数,大家都会了,并且可以在O(根号n)的复杂度求出答案,那么求n以内的素数呢,那样求就显得有点复杂了,下面看一下这里介绍的

  2. Java面向对象_增强for可变参数与代码块

    1.foreach循环 for(类型 变量名称:数组或集合){ //输出操作 } 2.可变参数:根据需要自动传入任意个数的参数,就是可变参数. 语法:返回值类型 方法名称(数据类型...参数名称){ ...

  3. 嵌入式CISC模型机设计

    一.     课程设计的题目和内容 题目:设计一台嵌入式CISC模型计算机 采用定长CPU周期.联合控制方式,并运行能完成一定功能的机器语言源程序进行验证,机器语言源程序功能如下: 任意输入5个整数, ...

  4. Quartz.NET实现作业调度(3.0版本实现)定时执行一个任务

    2.0版本请参考https://www.cnblogs.com/best/p/7658573.html这里的文章很详细: 我们现在想每5秒钟往txt文件夹里存储一个时间 首先:定义一个类,实现Quar ...

  5. UICollectionView基础API笔记

    UICollectionView系列API,属性含义笔记.在UICollectionView笔记1中我们了解了UICollectionView是什么,以及可以做什么:在UICollectionView ...

  6. 018.Java类加载器

    https://www.ibm.com/developerworks/cn/java/j-lo-classloader/ 类加载器(class loader) 用来加载 Java 类到 Java 虚拟 ...

  7. React搭建脚手架

    npm install -g create-react-app    //安装 create-react-app react-demo    // react-demo 项目的名称 cd react- ...

  8. Android接入支付宝支付实现

    接上篇android接入微信支付文章,这篇我们带你来接入支付宝支付服务 简介 首先要说明的是个人感觉接入支付宝比微信简单多了,很轻松的,所以同学们不要紧张~ 当然还是老规矩啦,上来肯定的贴上官网地址, ...

  9. C++编写双向链表

    创建双向链表类,该类有默认构造函数.类的拷贝函数.类的.实现链表添加数据.升序排序.查找链表中某个节点及删除链表中某个节点的操作 代码实现: #include<iostream> #inc ...

  10. 安装express

    就目前来说安装express需要走几个步骤,要不就会出现在检查版本的时候就会出现,expres不是内部的命令或者是这种 安装的步骤: 1. 先是输入npm install -g express-gen ...