为什么要在离线A/B测试中使用贝叶斯方法
当涉及到假设检验时,贝叶斯方法可以取代经典的统计方法。这里将使用web分析的具体案例来演示我们的演示。
贝叶斯方法在经典统计中的重要性在此链接。
https://towardsdatascience.com/from-frequentism-to-bayesianism-hypothesis-testing-a-simple-illustration-11213232e551
假设检验是统计学中的一个中心话题,它的应用范围很广,超出了数学的范围,即使不是全部科学领域,也可以扩展到大多数科学领域。
我们将高度重视常规统计频率的方法的局限性,并提出一个相关的贝叶斯框架,以解决数据科学家在零售或营销工作中可能遇到的最常见的情况之一:A/B测试。
问题陈述
A/B测试(也称为分桶测试)为一种随机测试,将两个不同的东西(即A和B)进行假设比较。该测试运用统计学上的假设检定和双母体假设检定。 A/B测试可以用来测试某一个变量两个不同版本的差异,一般是让A和B只有该变量不同,再测试其他人对于A和B的反应差异,再判断A和B的方式何者较佳(维基百科)
也许我们想为我们的网站测试一个新的设计,新的功能,甚至是针对我们的客户的新策略,以衡量哪一个会导致最高的投资回报率。为了清晰起见,我们将考虑广告使用A和B两种创意的情况下试图提高转化率:每个交互广告的用户可以被看作是有两个可能的结果的伯努利试验:“转换”和“不转换”,根据用户购买我们产品后显示广告。
可以考虑两种设计来运行这个实验:
- 离线:可以理解为已缓存的本地数据集中进行实验
- 在线:在实验中进行分析和决策。
由于离线A/B测试问题需要截然不同的解决方案,因此本文只讨论离线情况。
频率方法:p值法和roc曲线法
每个用户被展示为创意A或B的概率为0.5,并直接以未知的概率p_A=0.04或p_B=0.05进行转换。
import scipy.stats as stats
#真实概率
p_A = 0.05
p_B = 0.04
#用户流量
n_users = 13500
n_A = stats.binom.rvs(n=n_users, p=0.5, size=1)[0]
n_B = n_users - n_A
#转换策略
conversions_A = stats.bernoulli.rvs(p_A, size=n_A)
conversions_B = stats.bernoulli.rvs(p_B, size=n_B)
print("creative A was observed {} times and led to {} conversions".format(n_A, sum(conversions_A)))
print("creative B was observed {} times and led to {} conversions".format(n_B, sum(conversions_B)))
第一个困难很快出现:为了确定一个广告素材是否比另一个更好,我们应该使用哪种测试?下表总结了常见的测试,由我们来选择最适合我们的问题的测试。
在我们的例子中,Fisher’s exact test和 Barnard’s test似乎是最相关的,因为我们关注从二项式分布获得的转化率
我们将使用Fisher检验,它具有属于精确检验类别的特点,之所以这样称呼它,是因为它的p值可以精确计算
- H0:广告素材的效果相当(p_A = p_B)
- H1:一个广告素材的效果要好于另一个
优良作法要求我们确定测试的统计能力。可以根据给定环境设计的仿真结果进行计算。我们的目标是0.8,我们使用的观测量将被校准,以达到这个阈值。为了方便起见,我们仅考虑替代假设H1-“替代假设p_A = 0.04或p_B = 0.05”,这将使我们能够轻松地计算检验的效果。
通常,α= 0.05是p值(即误报率)的拒绝区域接受的极限。对于此阈值,将至少需要13500次观测。
解释测试结果
我们会问一个问题。从我们的测试结果和p值中我们可以得出什么结论?
- 我们是否可以估算广告素材A优于广告素材B的可能性?
- 如果是的话,我们可以估计他们之间的进步吗?
两个问题的答案都是否定的。我们已经了解到,在假设(H0)下,p值仅仅是观察结果的可能性至少是极端的。但这也凸显了p值最重要的局限性:
p值不是效果大小的度量!即使获得了积极的结果,它也没有提供关于A的效果优于B的信息。
为了提取有关效果大小的知识,可以使用另一个更强大的工具:置信区间。
置信区间(CI)
置信区间表示与真实参数在建议范围内的置信度相关的未知参数的合理值范围。
这给了我们更多的理解和丰富的见解,为我们提供了关于我们估计的概率和不确定性的知识。然而,它们也有自己的缺点:
- 我们需要选择不同的方法来定义这些区间,这取决于一些假设:二项分布的置信区间。
- p_A和p_B值的置信区间不会直接转换为p_A和p_B之间的差值的置信区间!幸运的是,存在直接计算差值的置信区间的方法,但是我们仍然需要从几十种方法中选择一种。
例如,我们可以使用“最简单的”,即不需要连续性校正的Wald方法:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p6rBmV1M-1583200856883)(http://qiniu.aihubs.net/1_YEFyl7YnZ7ztwawQHhQ_BQ.png)]
用
为什么要在离线A/B测试中使用贝叶斯方法的更多相关文章
- 【测试方法】Web测试中bug定位基本方法
知识总结:Web测试中bug定位基本方法 涉及知识点:测试方法 在web测试过程中,经常会遇到页面中内容或数据显示错误,甚至不显示,第一反应就是BUG,没错,确实是BUG.进一步了解这个BUG的问题出 ...
- 第十三次作业——回归模型与房价预测&第十一次作业——sklearn中朴素贝叶斯模型及其应用&第七次作业——numpy统计分布显示
第十三次作业——回归模型与房价预测 1. 导入boston房价数据集 2. 一元线性回归模型,建立一个变量与房价之间的预测模型,并图形化显示. 3. 多元线性回归模型,建立13个变量与房价之间的预测模 ...
- NeurIPS 2018 中的贝叶斯研究
NeurIPS 2018 中的贝叶斯研究 WBLUE 2018年12月21日 雷锋网 AI 科技评论按:神经信息处理系统大会(NeurIPS)是人工智能领域最知名的学术会议之一,NeurIPS 2 ...
- CTR预估中的贝叶斯平滑方法(二)参数估计和代码实现
1. 前言 前面博客介绍了CTR预估中的贝叶斯平滑方法的原理http://www.cnblogs.com/bentuwuying/p/6389222.html. 这篇博客主要是介绍如何对贝叶斯平滑的参 ...
- CTR预估中的贝叶斯平滑方法及其代码实现
1. 背景介绍 广告形式: 互联网广告可以分为以下三种: 1)展示广告(display ad) 2)搜索广告(sponsored search ad) 3)上下文广告(contextual ad) ...
- CTR预估中的贝叶斯平滑方法(一)原理及实验介绍
1. 背景介绍 广告形式: 互联网广告可以分为以下三种: 1)展示广告(display ad) 2)搜索广告(sponsored search ad) 3)上下文广告(contextual ad) ...
- Web测试中定位bug的方法
在web测试过程中,经常会遇到页面中内容或数据显示错误,甚至不显示,第一反应就是BUG,没错,确实是BUG.进一步了解这个BUG的问题出在那里,是测试人员需要掌握的,可以简单的使用浏览器自带开发者工具 ...
- Android测试中monkey的使用方法
1.直接使用adb命令 adb shell monkey -p 包名 <event-count> 例: 1)adb shell monkey -p 包名-s 500 --throttle ...
- 使用 LaTeX 绘制 PGM(Probabilistic Graphical Models)中的贝叶斯网络(bayesian networks)
Software for drawing bayesian networks (graphical models) 这里需要调用 latex 中的绘图库:TikZ and PGF. 注意,下述 tex ...
随机推荐
- iOS Swift 开发语言之初接触,纯代码创建UIView,UITableView,UICollectionView
1. 初始化Label设置AttributeString override func viewDidLoad() { let label = UILabel(frame:CGRect(x:,y:,wi ...
- C# InputStream获取后乱码处理
Post推送过来的数据流获取后部分中文出现乱码,晚上找了好多办法,不如朋友鼎力相助,哈哈哈~不说废话了上代码把 旧代码基本是网上普遍写法,字段不长用起来不会有乱码情况,但是传送字段一旦过长,超过byt ...
- 前端每日实战:131# 视频演示如何用纯 CSS 创作一把剪刀
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/GXyGpZ 可交互视频 此视频是可 ...
- post请求与get请求的差别
幂等的概念 在理解这两者的区别前需要先了解的概念: 幂等性在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同.简单的说就是,浏览器发起一次请求和多次请求,不会改变目标资源的状 ...
- centos7搭建ceph集群
一.服务器规划 主机名 主机IP 磁盘配比 角色 node1 public-ip:10.0.0.130cluster-ip:192.168.2.130 sda,sdb,sdcsda是系统盘,另外两块数 ...
- C# 视频监控系统(提供源码分享)
去过工厂或者仓库的都知道,在工厂或仓库里面,会有很多不同的流水线,大部分的工厂或仓库,都会在不同流水线的不同工位旁边安装一台电脑,一方面便于工位上的师傅把产品的重要信息录入系统,便于公司系统数据采集分 ...
- IDEA Messages Build总是自动弹出提示错误
IDEA,总是在代码未完成时,在进行切换页面回来后会跳出Messages Build,我相信大家在写java web项目的时候,经常会遇到这个问题,接下来我就和大家说一下问题所在. 主要原因是因为我们 ...
- mysql从5.5升级到5.7遇到的坑
在安装mysql5.7时很顺利安装完成,但在启动项目时报错: [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clau ...
- vue+webpack怎么分环境进行打包
这里说下,webpack打包里面涉及到的东西,不止webpack,还有node的知识, node的全局变量process,process.env用于返回用户环境信息对象,因为是node的全局变量,所以 ...
- XCTF---easyjava的WriteUp
一.题目来源 题目来源:XCTF题库安卓区easyjava 题目下载链接:下载地址 二.解题过程 1.将该apk安装进夜神模拟器中,发现有一个输入框和一个按钮,随便输入信息,点 ...