AB测试实战案例讲解及踩坑事项
Hey,我是小z
今天我们来结合流程,讲讲具体的AB测试案例,以及AB测试中需要注意的问题,还有面试中可能会踩的坑。
AB测试案例串讲
大体背景如下:
某社交APP增加了“看一看”功能,即用户之间可以查阅到对方所填写的一些基础信息。现在要分析该功能,是否有效果。
我们得到这个问题,需要脑子里想到AB测试的整体流程图(如下)。
从流程图中,我们需要想到几个问题:
1、实验前:如何选指标,如何做假设,如何选实验单位,根据实验指标和单位,如何计算最小样本量,以及实验的周期
2、实验中:需要验证是否所有用户仅处于同一个桶,还需要验证线上实验桶策略是否符合预期
3、实验后:需要回收数据,通过计算P值或者置信区间Diff的方法,校验该功能是否有效
从该功能来说,我们需要考虑的主要指标是用户之间建立联系的率值是否有提升。因为社交是为了让用户之间建立联系,增加这种查阅资料的功能,是为了让用户通过资料查阅,与感兴趣的用户建立联系。
所以该功能,我们的指标选择为加好友率。这时候,零假设就是该功能无效果,即两个桶的加好友率无明显差异。备选假设则相反。实验单位我们为了避免数据的不置信,我们选择以用户为实验单位。
假设我们的原有添加好友率如下 ,那么我们计算整体样本量如下:
P:45%,p:47%(由于波动范围是[44%,46%],所以至少是2.0%)总样本量 = 16*(45%*(1-45%)+47%*(1-47%)/(47%-45%)^2 = 19864
由于实验桶和基线桶的比例是1:1,所以我们分配为实验桶1w样本,基线桶1w样本量。但是由于我们不能一上来就全量试验,所以我们开20%的流量为实验桶(假设DAU的20%是2000/天,即实验桶的DAU为2000/天),那么,我们预计要实验5天(1w/2000)。
但是通过计算,用户的一次活跃周期是7天,所以我们为了让实验效果可信度更高,计划实验7天。
实验上线后,我们对线上数据进行了验证,确认了以下两个问题:
1、实验策略在实验桶已生效,在基线桶未生效。即相关的看一看功能在实验桶已上线,基线桶保持原样;
2、同一个用户仅处在同一分桶中,未出现一个用户处于两个桶的情况。
实验到期后,我们对线上数据进行了回收。由于我们这个是相对值指标,所以我们使用Z检验。
检验方法有以下两种:
1、算P值,P值小于5%,拒绝原假设,即产品功能有效果。这个场景中(假设)P=0.002,即我们判断产品有效果。
2、算执行区间的差值,如果不含0,则拒绝零假设。同样,我们这里假设算出来期间不含0,我们认为该产品有效果。
以上,就是一个整体的AB实验案例。我们从筛选指标,到设计实验(选取实验单位,计算最小样本量,计算实验周期),到实验上线,再到后面的效果验证。
但是不知道大家注意没有,这个实验有些地方设计的并不合理。因为社交用户之间会有网络效应,即一个用户会影响另一个用户,所以我们实验分桶这么设计并不合理。
AB测试注意事项
下面,我们就来讲讲AB实验的注意事项。
1、网络效应:
这种情况通常出现在社交网络,以及共享经济场景(如滴滴)。
举个例子:如果微信改动了某一个功能,这个功能让实验组用户更加活跃。但是相应的,实验组的用户的好友没有分配到实验组,而是对照组。但是,实验组用户更活跃(比如更频繁的发朋友圈),作为对照组的我们也就会经常去刷朋友圈,那相应的,对照组用户也受到了实验组用户的影响。本质上,对照组用户也就收到了新的功能的影响,那么AB实验就不再能很好的检测出相应的效果。
解决办法:从地理上区隔用户,这种情况适合滴滴这种能够从地理上区隔的产品,比如北京是实验组,上海是对照组,只要两个城市样本量相近即可。或者从用户上直接区隔,比如我们刚刚举的例子,我们按照用户的亲密关系区分为不同的分层,按照用户分层来做实验即可。但是这种方案比较复杂,建议能够从地理上区隔,就从地理上区隔。
2、学习效应:
这种情况就类似,产品做了一个醒目的改版,比如将某个按钮颜色从暗色调成亮色。那相应的,很多用户刚刚看到,会有个新奇心里,去点击该按钮,导致按钮点击率在一段时间内上涨,但是长时间来看,点击率可能又会恢复到原有水平。反之,如果我们将亮色调成暗色,也有可能短时间内点击率下降,长时间内又恢复到原有水平。这就是学习效应。
解决办法:一个是拉长周期来看,我们不要一开始就去观察该指标,而是在一段时间后再去观察指标。通过刚刚的描述大家也知道,新奇效应会随着时间推移而消失。另一种办法是只看新用户,因为新用户不会有学习效应这个问题,毕竟新用户并不知道老版本是什么样子的。
3、多重检验问题:
这个很好理解,就是如果我们在实验中,不断的检验指标是否有差异,会造成我们的结果不可信。也就是说,多次检验同一实验导致第一类错误概率上涨;同时检验多个分组导致第一类错误概率上涨。
举个例子:
出现第一类错误概率:P(A)=5%
检验了20遍:P(至少出现一次第一类错误)
=1-P(20次完全没有第一类错误)
=1- (1−5%) ^20
=64%
也就是说,当我们不断的去检验实验效果时,第一类错误的概率会直线上涨。所以我们在实验结束前,不要多次去观察指标,更不要观察指标有差异后,直接停止实验并下结论说该实验有效。
AB测试面试踩坑
针对这些问题,有很多时候,面试官在问问题时,会设下一些坑,我们来举两个例子。
例1:滴滴准备升级司机端的一个功能,该如何校验功能效果?
考点1:常见的AB测试流程设计
考点2:网络效应
解法:
针对考点1:AB测试的流程是 确定目标 --> 确定实验单位 --> 确定最小样本量 --> 确认流量分割方案 --> 实验上线 --> 规则校验 --> 数据收集 --> 效果检验
针对考点2:实验分桶,以两个量级相近城市分割,避免网络效应的相互影响
例2:某app,用户活跃周期是14天,这时,上线了一个实验,计划跑20天在看效果,结果有位新同学,在10天时做了统计推断,发现数据已经有了显著差异,认为可以停止实验,这样做对吗?
考点1:实验周期应该跨越一个活跃周期
考点2:多重检验问题
解法:
由于AB测试的实验周期尽量跨越一个用户活跃周期,且在实验结束时再做统计推断,所以该做法不对,建议跑慢20天再看数据效果。
踩坑知识点总结
以上,我们就讲完了整体的AB测试案例,以及AB测试中需要注意的问题。
我们来总结下知识点:
1、由于用户之间的相互影响,可能产生网络效应,导致AB测试用户分隔达不到预期,所以我们要尽量从地理上去区隔用户进行实验;
2、由于用户的学习效应,我们的一些改动会引起老用户的好奇或不满,这时候,我们可以拉长实验周期,或者仅用新用户进行实验。
3、由于多重检验问题的存在,我们不要频繁的在实验中检验数据,更不要未到实验结束就下结论说实验有效。
以上,这三个问题,以及上篇文章中的AB测试具体流程,都是大家在工作中需要掌握的知识。在面试过程中很多面试官也会设陷让我们往里跳。大家需要注意一下。
●图解最常用的10大机器学习算法!
●12000+字超详细 SQL 语法速成!
后台回复“入群”即可加入小z干货交流群
AB测试实战案例讲解及踩坑事项相关推荐
- 多场景业务实战-AB测试实战(数据分析干货!!!!!)
AB测试实战 学习目标 掌握如何设计AB测试 AB测试效果如何解读 掌握如何进行实验设计与效果计算 1.AB测试介绍 很多网站/APP的首页都会挂一张头图(Banner),用来展示重要信息,头图是否吸 ...
- 数据分析AB测试实战项目
本文是<数据蛙三个月强化课>的第四篇总结教程,如果想要了解数据蛙社群,可以阅读给DataFrog社群同学的学习建议.温馨提示:如果您已经熟悉数据分析指标,大可不必再看这篇文章,或是只挑选部 ...
- Linux如何打开cp2k,cp2k实战案例讲解讲座 带你入门cp2k
为了帮助大家了解各类计算软件,材料人自10月起陆续推出各类计算软件入门讲座.视频.本次邀请兰博士为大家带来cp2k的入门级讲座.有兴趣的同学请根据下文的方式参与. 嘉宾简介 兰晶岗,本科毕业于华东理工 ...
- 实战dll注入(原理, 踩坑及排雷)
摘要 使用vs2019编写注入器程序, 在生成的注入器可用前, 踩了不少坑, 因此记录一下. 本文涉及三种恶意代码注入方法: 直接dll注入, 反射式dll注入, 镂空注入. 之所以选这三种注入方法, ...
- Mysql数据唯一约束与唯一索引案例总结及踩坑记(含NULL值与唯一约束唯一索引的搭配使用)
Mysql数据唯一索引与唯一约束案例总结 唯一约束的说明 唯一约束是约束(CONSTRAINT)里的一种,常见的还有主键.外检.默认值.是否为空.检查等.唯一约束即限制某个或某些字段具有唯一性(不能重 ...
- onnx 测试_pytorch onnx onnxruntime tensorrt踩坑 各种问题
做了一个小测试,发现pytorch onnx tensorrt三个库的版本存在微妙的联系,在我之前的错误实验中,PyTorch==1.3.0/1.4.0:Onnx==1.6.0:tensorrt=7. ...
- 实战案例讲解:用户画像如何应用?
用户画像到底如何使用? 在抛出这个疑问之前,我研究过许多文章,这些文章的研究方向更热衷于如何给用户360度画像,用常见的人物形象卡来描述平台某部分用户的特征,比如: 年龄:28岁,性别:女 职位:都市 ...
- Python单线程爬取QQ空间说说存入MySQL并生成词云(超详细讲解,踩坑经历)
利用python爬取好友说说并分析 看了网上的许多博客,基本上都是一个样,基本的知识也没详细解释,我这次也想跟大家仔细分析一下,自己还是要有一定爬虫基础,本人技术有限,如果本文哪有错误或不够准确的地方 ...
- linux运维脚本编写,最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本...
最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本 大家可以通过参考下面的课程学习目录,就会发现单单只从目录上来分析就知道这是一部非常系统的Shell自动化脚本运 ...
最新文章
- java 读取excel_Java12POI操作Excel
- centos7 nginx配置php7,centos7安装并配置nginx+php,centos7nginx
- 红米路由器ac2100怎样设置ipv6_红米(Redmi)路由器AC2100手机怎么设置?
- 编译时MSIL注入--实践Mono Cecil(1)
- Java基本数据类型及String类
- 【期望DP】概率充电器(luogu 4284)
- android 调试好事工具类,Android 工具类之总结 Hua
- bluestacks手机模拟器安装qq或微信时,鼠标左键点聊天编辑框后会自动输入 c 字母
- apollo local 模式_Apollo开发者说丨使用GDB调试Apollo项目
- 【优化调度】基于matlab蚁群算法求解无等待流水线调度优化问题【含Matlab源码 1516期】
- 安卓adb与fastboot工具的使用
- 微服务,软件应用开发的新纪元
- 电脑重装系统后usbcleaner怎么格式化u盘
- 面对众多客户/用户需求,每个都紧急,怎么排期?
- android 模拟器后缀名,apk是什么文件?apk文件模拟器是什么?
- HTML5中定位网页元素重点总结
- Java.util.ArrayList详解
- 2D 动画调整 position 产生的位移问题
- A. Equalize Prices Again(水题) Codeforces Round #590 (Div. 3)
- Windows 下 Let's Encrypt申请证书及使用
热门文章
- 第三天:js中的事件提高篇(事件流,事件对象,事件委托深层次理解)
- CNN实现摄像头中人物的识别
- 什么是CPU密集型、IO密集型?3分钟了解清楚
- Excel操作基础(二)
- CS224W-图神经网络 笔记3.2:Motifs and Structural Roles in Networks - 网络的结构(Structural Roles)
- 自注册DM(六)中国电信自注册 CT Register 介绍和常见问题
- php 单选默认,html单选按钮默认选中怎么做?input标签的单选按钮用法实例
- NVDLA compiler
- 理解SVM的三层境界
- 腾讯安全发布《2021年全球DDoS威胁报告》:DDoS威胁成犯罪团伙首选勒索手段