1.背景介绍:AB实验的由来

在产品迭代过程中,每一个功能点的改进不是产品经理靠经验和拍脑袋想出来的,这就需要我们设置一个对照实验来分析功能点的改进对于我们所关注的核心指标是否有改进。运用 AB 实验,找到一部分小流量用户,并对于这部分用户提供改进的功能点,帮助我们去测试改进功能点的效果。例如:某社交APP增加了“看一看”功能,即用户之间可以查阅到对方所填写的一些基础信息,现在要分析该功能是否有效果。

2.AB实验及其原理:

AB实验的本质就是同质样本组的对照实验。

    原理:有两个同质的样本组,对其中一个组做出某种改动,来观测这个改动对于所关注的核心指标是否有显著的影响。它的原假设是:这项改动并不会对所关注的核心指标有显著性影响。如果在做完实验后,发现p值足够小,则推翻原假设,证明这项改动会对原假设产生影响。

3.实验流程:

(1)确定实验目标和核心观测指标。

(2)确定零假设与备择假设:例如我们的核心指标为加好友率,零假设就是该功能无效果,即两个实验的加好友率无明显差异。备选假设则相反。

(3)分配实验流量:

如果样本量太小,得出的结论容易受到偶然性因素的影响。如果样本量很大,会增加工作量,实验成本太高。

统计学里有最小样本量计算的公式:

说明:1、n是每组所需样本量,因为A/B测试一般至少2组,所以整个实验所需样本量为2n;2、α和β分别称为第一类错误概率和第二类错误概率,一般分别取0.05和0.2;3、Z为正态分布的分位数函数;4、Δ为两组数值的差异,如注册转换率50%到60%,那么Δ就是10%;5、σ为标准差,是数值波动性的衡量,σ越大表示数值波动越厉害。

可以通过 Sample Size Calculator (Evan’s Awesome A/B Tools) 这个网站得到预估的实验最少样本量。

其中,Baseline rate是在开始实验之前,对照组的历史数据(即原来的加好友率是多少),Minimum detectable effect 是对于判断精度的最低要求,即想要提升的变化率。Statistical power =1−β,β是犯第二类错误的概率。Significance level=α,即显著性水平。

(4)小流量开启灰度实验:如果软件要推出一个新功能,或者要做一次比较大的改动,首先要进行一个小范围的测试,然后慢慢放量,直到这个功能覆盖到所有用户。灰度实验的目的是验证新模块不会造成什么特别极端的影响,可以保证整体系统的稳定。 AB实验是为了测试B版本的效果,效果好就进行,不好的话,新版本就不会上线。而灰度是为了上线,而不是为了测试效果,是为了让整个上线过程进行平稳的过渡。

(5)正式试验:确定实验周期,正式开启实验。

在设定测试时间时从以下三个维度进行考虑:

  • 最少样本量/每日可测试用户
  • 用户的行为周期:对部分行业的产品来说,用户的操作行为存在很大的周期性变化,例如电商用户的购买行为有较强的周次规律,周末流量和购买量与工作日会有显著差异,这时测试的周期应该能够覆盖一个完整的周期,也就是应该大于1周。
  • 用户适应期:如果进行的是UI改版一类影响用户体验的测试,新版本上线后用户通常需要有一个适应的过程,这时我们通常会在试验开始时给用户一个适应期让用户适应新的UI版本,然后再考察试验的结果。适应期的长短通常以足量用户流量参与试验后的2到3天为宜。

例如:某客户端当前大盘次日留存率45%,最近决定准备上线一个直播功能,预估至少提升0.2%留存率,每天只有10w的用户量可以做测试,问实验需要多久。

最少样本量为:98w,每天10w,至少需要10天
用户新鲜效应:3天
用户行为周期:周末与平时产品差异很大,需要覆盖一个周末

因此总共实验天数为10+3=13天,也就是测试大约2周

(6)采集数据,数据检验

通过比较新实验版本和老版本是否存在显著差异(若P值小于5%,拒绝原假设,即产品功能有效果),以及计算实验结果指标的置信区间(通常选用指标的95%置信区间),从而判断新版本是否相对老版本存在显著提升或下降。

  • Z检验:一般用于大样本(即样本容量大于30)平均值差异性检验的方法。它是用标准正态分布的理论来推断差异发生的概率,从而比较两个平均数的差异是否显著。
  • T检验:主要用于样本含量较小(例如n < 30),总体标准差σ未知的正态分布。T检验是用t分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著。

统计显著性达到95%或以上并且维持一段时间,实验可以结束;如果在95%以下,则可能需要延长测试时间;如果很长时间统计显著性不能达到95%甚至90%,则需要决定是否中止试验。

以Z检验为例,显著性检验的步骤如下:

1)提出假设

原假设:Pb-Pa <=0

备择假设:Pb-Pa>0

其中,P为你所设定的目标,比如转化率,以转化率的高低比较新版本的价值

2)计算检验统计量

由于每次实验结果要么转化成功(即样本落入B方案),要么失败(即样本落入A方案),所以A,B的分布可看作是n重伯努利分布,即二项分布:

A∼B(n,Pa​);B∼B(n,Pb​)

那么E(A)=nPa,D(A)=nPa(1-Pa)

所以样本均值E(xˉ)=Pa,D(xˉ)=Pa(1-Pa)/n,

由于总体中的Pa是未知的,所以用样本的转化率Pa^来代替Pa,即A中的样本服从

同理B中的样本服从

(注:这里我找到的资料都是这样写的,但是我自己表示存疑:若样本足够大,那么样本均值分布服从正态分布,样本均值应该等于总体均值,样本方差等于D(A)/n,那应该是E(xˉ)=nPa,D(xˉ)=Pa(1-Pa),不知道是不是统计知识不扎实还是理解有偏差,如果大家有答案的话可以告诉我 :))

所以得到如下公式:

3)因为是双侧检验,所以若Z>Z(1-α/2) ,那么P<0.05,拒绝原假设,认为两种方案有显著差异,则拒绝原假设即新版本的效率好于旧版本。

4.AB实验中应该注意的问题:

(1)AA测试:

当测试结果显示两个版本没有区别时,我们不能完全确定这样的结果是因为方案本身的原因还是样本质量的原因。例如购物车复购的案例,假设样本数量足够多,但很不巧的是恰好实验组里大部分都是老王这样的土豪,那么结果依旧会产生偏差。这个时候我们还需要更进一步确定,实验组里究竟有没有这样的意外因素。解决这个问题的办法是AA测试:将原始版本的流量中分出两个和测试版本相同的流量也进入测试。例如:为测试一个新的功能,我们计划分配90%流量给老版本A,10%流量给新版本B;这时我们把老版本里的90%再次拆分成【A1】70%+【A2】10%+【A3】10%,生成两个10%流量的老版本【A2】和【A3】,【A2】和【A3】相互进行AA测试,并分别于【B】进行AB测试;在试验过程中通过考察【A2】和【A3】是否存在显著性差异,就可以确定试验的分流是否有效了。

A / A测试是在企业进行A/B测试之前完成的。运行A / A测试可以帮助他们:

  • 检查A / B测试工具的准确性:在A / A测试中,如果两个被测试的版本存在明显差异,那么原因可能是一下几种:工具未正确设置;测试没有正确进行;测试工具效率低下。
  • 设置以后A / B测试的基准转换率:在进行任何A / B测试之前,需要知道基准转换率。假设正在运行A / A测试,其中,A版本在10,000个访问者中产生303次转化,而版本B在10,000次转化中给出307次。当两个版本之间没有差异时,A的转化率为3.03%,而B的转化率为3.07%。因此,可以设置以后A / B测试的基转换率范围可为3.03-3.07%。如果以后运行A / B测试并且结果在此范围内,那么就意味着结果不显着。
  • 确定最小样本的大小:比较两个类似版本的问题包含“运气”因素。由于测试是在统计基础上制定的,因此存在一定的误差范围,通过执行A / A测试,可以“查看”测试解决方案在相同版本之间最接近“完美平等”的样本大小。简而言之,通过A / A测试,可以找到使“运气”因子最小化的样本数量;然后,可以将该样本量用于以后的A / B测试。

案例:某客户端当前大盘次日留存率45%,最近决定准备上线一个直播功能,预估至少提升0.2%留存率,最终也上线了一周的数据,发现实验组与对照组留存率一直差不多(或者提升太多),怀疑是不是实验组和对照组本身就有差异。

这种情况下:测试之前应该要做一个AA测试

实验组:10w
对照1组:10w
对照2组:10w

通过对比对照1组和对照2组的留存率指标看流量分配是否有问题。

(2)关注的核心指标有显著提升,该优化功能一定能上线吗?

不一定,一个功能方面的优化可能会导致另一个方面的劣化,在做优化提升的时候有可能还会对广告部门、直播部门产生一些负向影响,这些负向影响可能会直接导致公司收益的下降。所以在进行ab实验时必须要综合评估所有指标的变动,同时对收益和损失做一个评估才能确认这个优化可以最终上线。

(3)实验结果在统计意义上是显著的,实际不显著,为什么?

比如对于用户启动app的优化时间是0.00001秒,这个数字在统计意义来说可能p值很小,它是显著的,但在实际中用户是不可感知这个时间的,那这个优化其实就没有太大的实际意义。

5.AB实验实例

其中gate_30 代表旧版本实验A,gate_40代表新版本实验B,retention_1:次日留存,retention_7:7日留存率

对于次日留存率这个指标:

对于7日留存率这个指标:

对于次日留存率指标,p值为0.07,大于0.05,无法拒绝原假设,即新版本没有改进效果

对于七日留存率指标,p值为0.0015,小于0.05,拒绝原假设,即A方案(gate_30)的效果好于B方案(gate_40)

AB实验原理及案例实例(python代码实现)相关推荐

  1. 用通俗易懂的方式讲解:主成分分析(PCA)算法及案例(Python 代码)

    文章目录 知识汇总 加入方式 一.引入问题 二.数据降维 三.PCA基本数学原理 3.1 内积与投影 3.2 基 3.3 基变换的矩阵表示 3.4 协方差矩阵及优化目标 3.5 方差 3.6 协方差 ...

  2. 模拟退火算法详细讲解(含实例python代码)

    模拟退火算法详细讲解(含实例python代码) (一)模拟退火算法简介 (二)模拟退火算法原理 (三)退火过程中参数控制 (四)算法步骤 (五)实例分析 最近老师要求做模拟退火算法实验,看了很多博客之 ...

  3. 数据结构之图:用图解决案例,Python代码实现——24

    用图解决畅通工程案例与途径查找 代码中需要引入的类方法代码链接: 无向图Undigraph 深度优先搜索DFS与广度优先搜索BFS 畅通工程-续 介绍 案例和之前并查集中实现的一样,但问题略有改动,需 ...

  4. 用通俗易懂的方式讲解:逻辑回归模型及案例(Python 代码)

    目录 1 简介 2 优缺点 3 适用场景 加入方式 4 案例:客户流失预警模型 4.1 读取数据 4.2 划分特征变量和目标变量 4.3 模型搭建与使用 4.3.1 划分训练集与测试集 4.3.2 模 ...

  5. 决策树原理实例(python代码实现)_决策树原理实例(python代码实现)

    决策数(Decision Tree)在机器学习中也是比较常见的一种算法,属于监督学习中的一种.看字面意思应该也比较容易理解,相比其他算法比如支持向量机(SVM)或神经网络,似乎决策树感觉"亲 ...

  6. 用通俗易懂的方式讲解:决策树模型及案例(Python 代码)

    文章目录 1 决策树模型简介 2 Gini系数(CART决策树) 3 信息熵.信息增益 4 决策树模型代码实现 4.1 分类决策树模型(DecisionTreeClassifier) 4.2 回归决策 ...

  7. 淘宝APP用户行为数据分析案例(附python代码及注释)

    淘宝APP用户行为数据分析案例 一.分析背景与目的 1.1背景与数据限制 电商平台的最核心的功能就是为买卖双方提供高效和体验良好的交易服务.得益于算法技术的发展,淘宝APP给买方提供了搜索.推荐及广告 ...

  8. Pyecharts一文速学-绘制树形图实例+Python代码

    目录 前言 一.Tree树图 二.数据处理 点关注,防走丢,如有纰漏之处,请留言指教,非常感谢 前言 之前写pandas和matplotlib的时候说到了想要出一期Pyechart系列数据可视化的文章 ...

  9. 3行Python代码达到月入过万案例---起名

    ↑ 点击上方 "一行数据" 关注 + 星标 ~ 每周送书,绝不错过 一行生财它又来啦 学Python,如果不能赚钱,那还有什么意思呢? 今天行哥要给大家介绍一个三行代码月入过万的生 ...

最新文章

  1. 监督学习——随机梯度下降算法(sgd)和批梯度下降算法(bgd)
  2. Linux中的进程创建函数fork
  3. uwsgi的log日志中出现错误uWSGI listen queue of socket 4 full。
  4. buu-[RoarCTF2019]polyre(控制流平坦化,虚假控制流程)
  5. ffmpeg本地编译没有ffplay解决方案
  6. mysql中文显示问号
  7. ExtJS 4 File Upload + Spring MVC 3 Example
  8. Linux操作系统六大优点
  9. Java @FunctionalInterface注解
  10. 为什么都敏捷开发了项目还会延期?!| 技术头条
  11. Nopcommerce主要用到的技术及特点
  12. 如何对物联网数据进行大数据分析
  13. [量子计算]量子计算的发展史与中国现在的量子计算整体水平
  14. 刘彬20000词汇05
  15. 教你创建电脑、手机同步的markdown云笔记--力扣刷题力荐!
  16. Win7电脑右下角声音图标小喇叭出现红叉没有声音解决方案
  17. 使用conda时出现Solving environment: failed with initial frozen solve. Retrying with flexible solve错误
  18. 理解:L1正则先验分布是Laplace分布,L2正则先验分布是Gaussian分布——复习篇
  19. 637. Average of Levels in Binary Tree
  20. 决策树【机器学习笔记简摘】

热门文章

  1. 自动获取sim号码填入edittext
  2. 测试显示器蓝光软件,iPhone11光谱测试揭露屏幕真相 蓝光伤害爆表
  3. Java中增强for循环(传智播客毕老师视频讲解)
  4. 示坡线高程判断_【等高线地形图】等高线地形图的判读 等高线地图怎么看
  5. 龙腾万里,福至万家——“北京龙文化促进协会第九届龙抬头传承会”在京举办
  6. 1201:8003 撬锁者
  7. 海信电视全记录:葡萄牙不敌摩洛哥止步八强,C罗潸然泪下掩面离场
  8. 播音主持学习心得之发声时怎么控制气息
  9. 怎么在CAD中创建异形视口?CAD异形视口创建教程
  10. mysql 取最后一个数字_mysql最后一个内容orm