认识ABTest

1、认识ABtest

ABTest是互联网企业中应用于Web开发的一种科学的对比分析功能;是统计抽样与统计实验在互联网企业中的一种常见应用模式。

2、ABTest的必要性

2.1 风险控制

互联网的产品迭代,风险普遍偏高。一方面来源于高额的开发成本,一方面来源于巨量用户。

2.2 科学择优

如何说明一个产品改进方案有效?效果如何?
通过多种参数的调整,可以利用ABTest证明不同的改进方案的改进效果。

3、ABTest适用场景

3.1适用场景

(1)产品迭代可以使用AB测试;
(2)算法优化可以使用AB测试;
(3)市场营销的部分场景可以使用AB测试。容的筛选,时间的筛选,人群的筛选,我们也可以使用AB测试来实验验证效果。

3.2不适用场景

(1)变量不可控
比如我们业务有两个APP,我们想做一个策略,验证是否能够提高用户使用了A产品,再去使用B产品的概率。这种是不支持AB测试的,因为用户关闭一个APP后,非常多的不可控因素。
(2)样本量较小也不支持AB测试
从统计学上说,要验证一个数据的有效性,需要一定的样本量。
(3)全量投放
比如我们开了一个发布会,换了一个logo,这种全量投放,怎么做AB测试?你可以让用户不来参与发布会还是让用户不看到新logo?!

企业ABTest业务流程

实际遇到的需要ABTest的业务:

1、实际业务的ABTest流程


项目流程

2、ABTest实验步骤

2.1选取指标

一般通过具体的指标属性来找寻相应的检验方法

2.1.1指标分类

指标可以分为两种类别:
(1)绝对值类指标(均值/方差)
平常直接计算就能得到的,比如DAU,点击次数等。一般都是统计该指标在一段时间内的均值或者汇总值,不存在两个值之间还要相互计算。
(2)相对值类指标(比例)
与绝对值类指标相反,我们不能直接计算得到。比如某页面的CTR要计算点击数和展现数,两者相除才能得到该指标。类似的,还有XX转化率,XX点击率,XX购买率一类的。我们做的AB实验,大部分情况下都想提高这类指标

根据指标我们可以知道,该如何计算最小样本量,以及实验周期,以及对应的检验方法。

2.2建立假设

建立了原假设和备选假设,原假设一般是没有效果,备选假设是有效果。

2.3选取实验单位(面试坑点)

实验单位一般有3种:
(1)用户粒度
最推荐的,即以一个用户的唯一标识来作为实验样本。好处是符合AB测试的分桶单位唯一性,不会造成一个实验单位处于两个分桶,造成的数据不置信。
(2)设备粒度
以一个设备标识为实验单位。如果一个用户有两个手机,那么也可能出现一个用户在两个分桶中的情况,所以也会造成数据不置信的情况。
(3)行为粒度
以一次行为为实验单位,也就是用户某一次使用该功能,是实验桶,下一次使用可能就被切换为基线桶。会造成大量的用户处于不同的分桶。强烈不推荐这种方式。

2.4计算样本量

中心极限定理:只要样本量足够大,无论是什么指标,无论对应的指标分布是怎样的,样本的均值分布都会趋于正态分布。


案例1-相对值指标:
某产品点击率1.5%,波动范围[1.0%,2.0%],优化了该功能后,需要AB测试计算样本量
P:1.5%,p:2.0%(由于波动范围是[1.0%,2.0%],所以至少是2.0%
总样本量 = 16 * (1.5%(1-1.5%)+2.0%(1-2.0%))/ (2.0%-1.5%)^2=22000
案例2-绝对值指标:
某产品购买金额标准差是25,优化了该功能后,预估至少有5元的绝对提升,需要AB测试计算样本量
σ=25,Δ=5
总样本量 = 16 * 25252/5*5=800
总样本量,是指我们的实验单位,必须满足这个数量,实验结果中的数据检验才可信。也就是说,我们的实验桶和基线桶之和必须达到这个流量(实验桶和基线桶的比例是1:1),才能收集数据及检验指标。

2.5流量分割

流量切割有两种方式:分流和分层
分流:对整体流量分割,实验之间互斥。适用于发送优惠券等交叉会互相影响的情况。
分层:对整体流量分层/分流。同一用户属于多个实验,切互不影响。

2.6实验周期计算

已知最小样本量,切分流量后知道实验桶一天大概能有多少样本量,就可根据 最小样本量 / 实验桶天均流量=相应的实验周期。

2.7线上验证

验证实验策略是否真的触发;验证同一个用户只能在同一个桶中,要是同时出现在两个桶中,后期数据也会不置信。

2.8数据检验


具体检验常用两种方式:
(1)算P值
(2)算置信区间
算两组指标的差异值,如果我们算出的差异值置信区间不含0,我们就拒绝原假设,认为两组指标不同;但是如果包含0,我们则要接受原假设,认为两组指标相同。

3、从假设检验到ABTest


假设检验的逻辑:
if A then probably β NOT B;
有逆反命题:
B then probably NOT A;

一组完全对立的假设:
假设检验逻辑中,A成立一般会被我们选为原假设 H0;而A不成立,一般会被我们选择为备择假设 H1。
通过证明B在A条件的前提下是一个小概率事件,只要出现了事件B,就能证明事
件A不成立,选择拒绝原假设。

显著性水平0.05

计算A成立时的分布和样本统计量分布:
例如实验做一组100次抛硬币,一组10次投币的实验。

那扩大到实验做k次,每次实验投硬币100次,这时候,我们直接带入n和p用原来的算式来计算概率分布。
这时总体期望为:π = 0.5;总体方差为:π (1 - π) = 0.25
利用中心极限定理:从均值为μ、方差为σ^2的任意一个总体中抽取样本量为n的样本,当n充分大时,样本均值 xbar 的抽样分布近似服从均值为μ、方差为σ^2/n的正态分布。

样本比例的分布同样可以适用于中心极限定理,其样本比例的期望π可以直接套用其公式中的均值μ,套用公式可得:

对比B发生时的统计量位置,计算更极端事件的发生概率 P值。

P值计算公式:

使用excel的函数计算P值:

对比P值和显著性水平的大小,证明A事件发生的条件下,B事件是小概率事件。

使用显著性水平计算一个统计量的阈值。
使用Excel的函数NORM.INV(),可以求出显著性水平对应的阈值:


通过计算小概率阈值来进行检验,那么检验假设的逻辑就变为:

如何判断一个样本统计量符合什么分布?
(1)判断样本是不是大样本
(2)能否通过正态检验
(3)能否增加样本量

统计分布(Z分布,T分布,卡方分布)
单个总体问题:

T分布与标准正态分布(Z分布)都是以0为对称的分布,T分布的方差大所以分布形态更扁平些;
卡方分布是大于0的右偏分布,随着自由度的增加会趋近于正态分布(注意不是标准正态分布)。

多个总体问题:

不同分布的拒绝域
(1)对称型(Z分布、t分布):


(2)非对称型(卡方分布、F分布):

拒绝域:
(卡方分布在左侧的拒绝域特别小,所以拒绝的区间的值也比较少),所以卡方检验的拒绝域一般
放在右侧。F分布同理

企业的ABTest的关键流程

1 、整体实验设计与分析流程

2、实验设计

2.1确定业务目标:

(1)要提升的业务指标
(2)要改进的产品/策略

2.2选择检验指标

2.2.1选择一类指标

一类指标:不能容忍变差的指标;
二类指标:目标提升的指标。
如何确定一类指标?

给一类指标设定阈值
人货场角度进行分析

2.2.2选择统计量

2.3确定原假设与备择假设

2.4两类统计错误的防范


1、 α+β不一定等于1。
2、在样本容量确定的情况下,α与β不能同时增加或减少。
3、统计检验效力(1-β)当H0为假时,得出拒绝H0的正确结论的概率,被称做检验的效力
如何避免统计错误?
(1)I类错误防范 :
a.小概率α设置小些( 避免小概率的触发);
b.增加样本量(使异常数据的影响降低)。
(2)II类错误防范:
a.调大α(增加小概率的触发) 但是接受I类错误的代价远比II类错误的代价要大,所以不予使用;
b.II类错误概率只能在实验结束后才能计算发生二类错误的概率,这是一个事后值。所以在事前设计我们一般不考虑这个问题。默认二类错误的概率为20%。

2.5样本量计算

根据统计量抽样分布和边际误差确定样本量
样本量计算工具:http://powerandsamplesize.com/Calculators/Compare-2-Means/2-Sample-Equality


2.6检验策略选择、设计分组策略

2.7当企业没有AB测试的条件的时候,如何解决问题?

没有系统:没有灰度发布系统
用户量不够:如果是比例的,可以提高测试周期。(针对小众用户的)
时间成本高:时间跨度过长;类似于转化周期长

3、实验结论分析

3.1决策统计检验

(1)做实验决策可以通过统计量 及 统计量的P值来实现。
(2)也可以通过样本量分布和显著性水平来确定拒绝域和接受域,从而拒绝或者接受结果。见假设检验部分。

3.2决策业务问题

ABTest 公式求解注意事项

1、 不同统计量对应不同的样本量计算公式

1.1 统计量是均值差


这里假设A为实验组,B为对照组;反过来也同样可以。
各个值的求法:
k:如果知道计划AB两组的差异,那我们按照计划AB两组的差异来取值,比如我们就要取A组5万人,B组1万人,那么k=5;如果没有计划差异,则一律假设为AB两组个数相同,也就是k=1;
σ:求出原有群体总体的标准差即可;
z1-alpha : stats.norm.ppf(1-alpha)
z1-beta : stats.norm.ppf(1-beta)
μA-μB:就是我们的H1;
假如我们H1为实验组比对照组显著大a。也就是:μA -μB > a。那么 μA - μB 在这里就可以假设 =a;
假设我们H1为实验组比对照组显著大。也就是:μA - μB > 0,那我们需要给 μA - μB 一个比较小的值,比如0.01或者0.1,因为"实验组比对照组大0"相当于实验组和对照组一样大,所以我们至少要给他一个值,比如0.01或者0.1。那么这里 μA - μB 就可以假设 = 0.01或者0.1;
然后我们就可以把我们求出来的内容带入公式,即可得出最小样本量。

1.2 统计量是比例差时:


这里假设A为实验组,B为对照组;反过来也同样可以。
我们需要求:
k:如果知道计划AB两组的差异,那我们按照计划AB两组的差异来取值,比如我们就要取A组5万人,B组1万人,那么k=5;如果没有计划差异,则一律假设为AB两组个数相同,也就是k=1;
z1-alpha : stats.norm.ppf(1-alpha)
z1-beta : stats.norm.ppf(1-beta)
πA和πB:
首先我们先求出原来总体的比例P1,将对照组πB带入,也就是πB = P1之后我们按照H1来求实验组πA。
假如我们H1为实验组比对照组显著大a。也就是:πA - πB > a。那么 πA 在这里就可以假设 =
πB + a;
假设我们H1为实验组比对照组显著大。也就是:πA - πB > 0,那我们需要给 πA - πB 一个比
较小的值,比如0.001 或者 0.01(因为是比例差,所以需要比均值差要小),因为"实验组比对照组大0"相当于实验组和对照组一样大,所以我们至少要给他一个值,比如0.001 或者0.01。那么这里 πA 就可以假设 = πB + 0.001 或者 0.01;

2 不同统计量对应不同的P值计算公式:

2.1 右侧检验

H1: μA - μB > a 或者 πA - πB > a
这时候,检验为右侧检验,拒绝域为右侧。
均值差使用

在这里我们,需要求的:
xbar_A : 抽取的实验组的均值
xbar_B : 抽取的对照组的均值
μA - μB:H1: μA - μB > a,即a
S_A^2:抽取的实验组的方差
S_B^2:抽取的对照组的方差
比例差使用

在这里我们,需要求的:
p_A : 抽取的实验组的比例
p_B : 抽取的对照组的比例
πA - πB:H1: πA - πB > a,即a
n_A :抽取的实验组的样本量
n_B :抽取的对照组的样本量

2.2 左侧检验

H1: μA - μB < a 或者 πA - πB < a
这时候,检验为左侧检验,拒绝域为左侧。
均值差使用

比例差使用

ABTest注意事项

1、网络效应

通常出现在社交网络,以及共享经济场景(如滴滴)。比如改动某一个功能,这个功能让实验组用户更加活跃。而实验组的用户的好友没有分配到实验组,而是对照组。那相应的,对照组用户也受到了实验组用户的影响。本质上,对照组用户也就收到了新的功能的影响,那么AB实验就不再能很好的检测出相应的效果。
解决办法:从地理上区隔用户,只要两个城市样本量相近即可。或者从用户上直接区隔,比如我们刚刚举的例子,我们按照用户的亲密关系区分为不同的分层,按照用户分层来做实验即可。但是这种方案比较复杂,建议能够从地理上区隔。

2、学习效应

例如产品做了一个醒目的改版,用户刚刚看到,会有个新奇心里,去点击该按钮,导致按钮点击率在一段时间内上涨,但是长时间来看,点击率可能又会恢复到原有水平。
解决办法:一个是拉长周期来看,在一段时间后再去观察指标。另一种办法是只看新用户,因为新用户不会有学习效应这个问题,毕竟新用户并不知道老版本是什么样子的。

3、多重检验问题

多次检验同一实验导致第一类错误概率上涨;同时检验多个分组导致第一类错误概率上涨。

常见的ABTest测试流程设计
网络效应
试验周期应该跨越一个活跃周期
多重检验问题

参考:https://blog.csdn.net/junhongzhang/article/details/122076335

学习笔记三:ABtest相关推荐

  1. J2EE学习笔记三:EJB基础概念和知识 收藏

    J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...

  2. tensorflow学习笔记(三十二):conv2d_transpose (解卷积)

    tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...

  3. Ethernet/IP 学习笔记三

    Ethernet/IP 学习笔记三 原文为硕士论文: 工业以太网Ethernet/IP扫描器的研发 知网网址: http://kns.cnki.net/KCMS/detail/detail.aspx? ...

  4. iView学习笔记(三):表格搜索,过滤及隐藏列操作

    iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...

  5. 吴恩达《机器学习》学习笔记三——多变量线性回归

    吴恩达<机器学习>学习笔记三--多变量线性回归 一. 多元线性回归问题介绍 1.一些定义 2.假设函数 二. 多元梯度下降法 1. 梯度下降法实用技巧:特征缩放 2. 梯度下降法的学习率 ...

  6. Python基础学习笔记三

    Python基础学习笔记三 print和import print可以用,分割变量来输出 import copy import copy as co from copy import deepcopy ...

  7. Mr.J-- jQuery学习笔记(三十二)--jQuery属性操作源码封装

    扫码看专栏 jQuery的优点 jquery是JavaScript库,能够极大地简化JavaScript编程,能够更方便的处理DOM操作和进行Ajax交互 1.轻量级 JQuery非常轻巧 2.强大的 ...

  8. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  9. ROS学习笔记三:创建ROS软件包

    ,# ROS学习笔记三:创建ROS软件包 catkin软件包的组成 一个软件包必须满足如下条件才能被称之为catkin软件包: 这个软件包必须包含一个catkin编译文件package.xml(man ...

  10. Python学习笔记三之编程练习:循环、迭代器与函数

    Python学习笔记三之编程练习 1. 编程第一步 # 求解斐波纳契数列 #/user/bin/python3#Fibonacci series:斐波那契数列 #两个元素的总和确定了下一个数 a,b= ...

最新文章

  1. mysql cronjob 备份_mysql 数据备份 crontab
  2. python分治算法_python算法实现-分治法
  3. PHP Extension Makefile 製作
  4. Servlet一次乱码排查后的总结
  5. python获取当前线程名称_python使用标准库根据进程名如何获取进程的pid详解
  6. 控制台当前行显示进度条,不换行
  7. base64格式的pdf预览
  8. JS搜索省份匹配出省份的所有城市
  9. android启动第三方浏览器问题
  10. 谷歌命名工具_Google地图正在重命名整个社区
  11. 服务器winsxs文件夹怎么清理工具,win7系统如何使用WinSxS工具安全删除WinSxS文件夹垃圾?...
  12. 微信支付接入-弹出支付框输入密码后一直在转圈,20s后提示:支付失败,请稍后再试
  13. [PyTorch]——DataLoader Num_workers
  14. Nhibernate+MVC开发小结
  15. c语言修炼内功,助你升级打怪!!
  16. 什么是百度竞价排名?
  17. Qt从入门到放弃——信号和槽机制(SigalSlot)
  18. Qt学习(12)——Qt5中的容器
  19. ShaderJoy —— 两种瘦脸+大眼特效【附完整参数】【GLSL】
  20. 移动C盘Users目录(我的文档)到其他盘

热门文章

  1. 计算机网络处理延时是什么原因,电脑网络延迟的解决方法是什么
  2. 剖析钉钉:B端产品的C端化运营策略
  3. Typora-PicGo-SMMS图床(Mac电脑和windows电脑)
  4. R 单样本wilcoxon test
  5. R语言威尔科克森(Wilcoxon)分布
  6. 套接字Socket编程
  7. 2020美容师(初级)考试题库及美容师(初级)模拟考试
  8. 【洛谷八连测R2】fateice-or
  9. 怎么上传云班课的计算机作业,云班课作业怎么提交_作业提交方法_咖绿茵手游站...
  10. MySQL权限系统(一).The MySQL Access Privilege System 概述