写点什么

获得更好用户体验的必杀器——A/B 实验统计学秘籍(上)

2019 年 9 月 12 日

获得更好用户体验的必杀器——A/B实验统计学秘籍(上)

持续快速有效的 A/B 实验是实现业务从十到百增长、获得更好的用户体验的必杀器,而其背后的黑科技来源于统计。本文将介绍使用 Apollo 进行 A/B 实验所涉及的重要统计学知识,以帮助大家更好的设计实验并解读实验结果,做出科学有效的数据驱动决策。文章知识点较多,将分上下两篇进行讲解,本文为介绍的上篇。


为什么统计对于 A/B 实验如此重要呢?因为 A/B 实验从本质上来说是一个基于统计的假设检验过程,它首先对实验组和对照组的关系提出了某种假设,然后计算这两组数据、确定这两组数据差异是否存在统计上的显著性,最后根据上述结果对原假设做出判断。但是事实上,我们关心的重点并不是实验组和对照组这一小部分用户,而是我们的新方案最终全量曝光给所有用户会带来多大的影响。如果这是一个不太成功的方案,直接全量上线,等到真正造成大量用户损失就无法挽回了。而统计的价值在于其先验性,能帮助我们在事情尚未发生时通过手头有限的信息来预测和估计我们不了解的结果,且具有一定的准确度。


因为统计能根据有限信息一定程度上准确推测全量信息,所以它满足了我们同时验证多个 idea 的需求。使得平台可以同时并行跑大量实验,大大提高测试效率。而测试效率与业务增长速度呈高度正相关,即使 100 个实验里有 80 个与预想的转化率提升无关,也帮助验证了 100 个 idea,挡住了 80 个无效的尝试,这就是为什么统计对于 A/B 实验来说如此有高价值的原因。


这看起来很简单,但其实也不简单。如果我们想知道两个机器学习模型哪个用户体验更优,我们可以随机选取 10000 个用户做实验,对 5000 个用户采用第一个模型,另外 5000 个用户采用第二个模型,经过一周的的观察,得到第一个组转化率为 40%,第二个组转化率为 41%。那么能否认为第二个模型的用户体验更好呢?如果简单粗暴来看,41% 明显高于 40%,我们可以认为对于这 10000 个用户来说,第二组的方案确实用户体验更好。但需要注意的是,这 10000 个用户仅是这个实验中的样本,样本永远不可能是总体的完美代表,用样本估计总体是有偏的,那么这次估计可不可信,多大程度可信,这是统计需要解决的问题。


接下来,让我们来快速定义一些术语:



总体 (Population): 我们最终关注的全部对象。例如,如果我们的实验对象是 10%的用户,那么它与剩下 90%用户组成的全部用户是总体。


样本 (Sample): 总体中的小部分用户,这是我们的实验对象。例如,如果我们的实验对象是 10%的用户,那么样本就是这 10%的用户。


样本量 (Sample Size): 样本的总个数。


样本统计量 (Sample Statistics): 它本身是个很宽泛的概念,可以是样本均值,可以是比率, 可以是方差。但是在 A/B 实验中,由于我们目标是了解实验组和对照组方案的好坏,样本统计量特指这两组的差异, 如实验组和对照组的转化率之差,用 p2-p1 表示。


抽样 (Sampling): 采用某种特定的方法,从总体中选取一部分有代表性样本的方法,比如随机抽样。


分布 (Distribution): 你可以把分布想象成一个横轴为观测值,纵轴为出现频率的图,比如扔骰子只可能出现 1-6 这 6 种可能,重复扔 50 次骰子,它的分布也许如下:



正态分布 (Normal Distribution): 又叫高斯分布。它的分布图是一个两头少/中间多的对称的钟形曲线。自然界的许多随机事件都服从这种分布, 如人的身高,体重。对于正态分布的数据,有 68.2%个落在距离总体均值 1 个标准差 (σ) 的范围内,95.4%个落在距离总体均值 2 个标准差 (σ) 的范围内,99.7%个落在距离总体均值 3 个标准差 (σ) 的范围内(中心极限定理和正态分布的运用),有 95%个落在距离总体均值 1.96 倍个标准差 (σ) 的范围内。



伯努利分布 (Binomial Distribution): 只有 0 和 1 两种取值。都可以表达为是或否的问题。例如,抛一次硬币是正面向上吗?新出生的小孩是女孩吗?转化率就满足这种分布。


中心极限定理 (Central Limit Theorem): 随着抽样次数增多,样本均值的抽样分布趋向于服从正态分布。这里需要注意的是,抽样次数并不是样本量,一次实验只是一次抽样,只能得到一个样本均值。而 n 次抽样会得到 n 个值,这些值的分布才是正态分布。举个例子,在下图中当抽样次数达到 30 次时,样本均值的分布逐渐呈一个对称的钟形曲线。中心极限定理是概率论的重要定理,它是接下来谈到的显著性检验的基础。 如果一组数据属于正态分布,我们可以根据正态分布的概率密度函数推算出置信区间或 p-value,当一组数据不属正态分布时,我们仍然可以依据中心极限定理和正态分布的函数推导出置信区间和 p-value。


关于置信区间和 p-value 在下文重点谈到。



(Source: Dawson B, Trapp R G: Basic & Clinical Biostatistics, 4th Edition)


有了以上背景知识铺垫,我们接下来继续说 A/B 实验。理想状态中,样本能够完美的代表总体。例如:总体有 100,000 个用户,有 10,000 个用户成功转化,那么转化率为 10%。理想状态中,抽取 100 个用户做实验,那么一定有 10 个用户转化。在这个例子中,样本的转化率 10%是严格等于总体转化率 10%的。但是现实没有这么完美。现实情况下,在这 100 个样本中,也许只有 2 个人转化,也许有 20 个人转化。这就是样本之间的波动。由于样本的随机性,样本的观测值(如转化率)和总体的真实参数(如总体转化率)存在差距。这种差距能用抽样误差衡量。 抽样误差越大,用样本估计总体的结果就越不准确。正因为抽样误差的存在,我们用样本观测值直接作为总体参数的估计值是不可取的。因此,直接比较实验组和对照组转化率的大小还不足以支撑一个有力的决策。我们需要更多的信息来描述这次抽样用样本估计总体的准确程度。置信区间和 p-value 正起到了这个作用。


如何理解置信区间和抽样误差?


问题重述


为比较实验组和对照组的转化率差异,我们需要首先收集实验组和对照组的转化率数据,经过 7 天的观察,对照组的转化率为 40%, 实验组为 41%,是否实验组转化率优于对照组?


你也许会说因为实验组转化率比对照组高了 1%, 所以实验组能实现更高的转化率。但是由于抽样误差的存在,这样的描述也许并不准确。更 smart 的表述可能是这样的:


我认为实验组转化率相比对照组转化率高 0.8-1.2%(1% ± 0.2 %), 置信度为 95%。


在这句话中,1%是实验组和对照组的绝对差异(即 41%-40%), ± 0.2 % 是抽样误差,绝对差异±抽样误差给出了置信区间的范围为 0.8%-1.2%。


置信度 95%说的是我们 95%确信实验组转化率相比对照组转化率高 0.8-1.2%。从概率论的角度解释,就是在其他参数不变的情况下,如果我们重复做同样的实验 100 次,那么有 95 次得出的实验组和对照组的转化率差异都在 0.8%-1.2%这个区间内。因此置信区间是一个区间使得重复实验 n 次具有一定概率(这个概率就是置信度)的结果都落在此区间内。而置信度是人为给定的,我们需要在实验开始前选定一个置信度(工业届常用 95%),它会影响这个实验所需的样本量大小和显著性检验的结果。


用图说话:



如果我们想知道在这个世界上有多少人喜欢吃橘子,我们不可能去调查世界上所有人的喜好,只能通过抽样的方法用样本来推断总体。假设在这个世界上有 50%的人真正喜欢吃橘子(p=0.5),但是否真的是 50%我们是不确定的。于是我们试图通过随机抽样来验证这个值到底对不对,于是我们每次随机抽取 100 个样本,并且重复抽样 n 次。如果用 p̂ 来表示每次抽样喜欢吃橘子的人的比例,那么重复抽样 n 次会得到 n 个 p̂ 。根据正态分布的概率密度函数,不管 p̂ 落在距离总体均值 μ 多么远的地方, 总有 68.2%个落在距离总体均值 1 个标准差 (σ) 的范围内,95.4%个落在距离总体均值 2 个标准差 (σ) 的范围内,99.7%个落在距离总体均值 3 个标准差 (σ) 的范围内(中心极限定理和正态分布的运用)。特别的,有 95%个落在距离总体均值 1.96 倍个标准差 (σ) 的范围内。


反过来思考,以一次抽样的观测值 p̂ 为中心,往前和往后推大约 1.96 σ 的区间,就有可能抓住那个真实的的 p 。如果重复抽样无数次,构成无数个这样的区间,有 95%个区间会包含真实的 p , 只有 5%个区间不包含。在这个例子里,如果一次随机抽样的结果是 80%的人喜欢吃橘子,标准差为 0.20.8=0.16 (伯努利分布),那么可以说我们 95%肯定这个世界上爱吃橘子的人的比率在 [80%±1.960.16] 这个区间内。通过上面的例子,我们知道置信区间的上界是样本均值+抽样误差,下界是样本均值-抽样误差,95%置信度下的抽样误差是 1.96*样本标准差。


当得到了一个置信区间后,我们需要通过统计上的假设检验来判断这次抽样的结果是否具有统计上的显著性。在这个例子中,由于 [80%±1.96*0.16] 这个区间不包含我们事先假设的 0.5,并且我们已经 95%肯定这个区间包含真实值,那么先前假设的 0.5 是非常值得怀疑的,是我们应该拒绝的。


事实上,刚才我们已经完成了一个假设检验。关于什么是假设检验,和 A/B 测试常常说到的显著性、p-value、统计功效是什么,我们会在下篇中详细介绍。


本文转载自公众号滴滴技术(ID:didi_tech)。


原文链接:


https://mp.weixin.qq.com/s/YZSN_6J-7ua-KbJC7BU-SQ


2019 年 9 月 12 日 17:49511

评论

发布
暂无评论
发现更多内容

如何通过DDD构建一辆汽车

Winfield

领域驱动设计 DDD

毕业三年了,我开始明白为什么说三年是一个坎

鄙人薛某

程序员 程序人生 程序员成长 职场回顾

Newbe.Claptrap 框架入门,第一步 —— 创建项目,实现简易购物车

newbe36524

Docker Reactive ASP.NET Core

golang内存对齐

PONPON

go golang go内存对齐

架构师训练营-作业5

紫极

typora设置图片自动上传,实现快速发文章

诸葛小猿

Typora PicGo gitee 上传图片

聊聊Spring的IOC以及JVM的类加载

小隐乐乐

重学 Java 设计模式:实战访问者模式「模拟家长与校长,对学生和老师的不同视角信息的访问场景」

小傅哥

设计模式 小傅哥 重构 代码优化 访问者模式

鲲鹏说:高考之路你们走,高考阅卷我来守

脑极体

JVM中栈的frames详解

程序那些事

JVM 堆栈 性能调优 JIT GC

依旧乐观的李彦宏,十年寻光的百度AI

脑极体

开发者必备——API设计问题

Noneplus

如何学习Visual Studio Code

博文视点Broadview

学习 读书笔记 vscode 能力提升 编辑器

啃碎并发(七):深入分析Synchronized原理

猿灯塔

Java

数据分析师成长体系漫谈-数仓模型设计

analysis-lion

学习 数据仓库 数据分析 随笔杂谈

阿里四面你都知道吗?

java金融

Java 程序员 互联网 阿里 简历

技术选型课程小结

行下一首歌

极客大学架构师训练营

统一物品编码破解追溯“断链”困局

CECBC区块链专委会

Scala中如何优雅地实现break操作

吴慧民

scala

工厂方法模式

Leetao

Python 设计模式 工厂方法模式

华为云FusionInsight MRS通过信通院大数据能力评估 单集群突破2万+规模

FI洞见

大数据 FusionInsight MRS 华为云

这样的二维码,你见过吗?

诸葛小猿

Java Python 后端开发 二维码 myqr

redis系列之——分布式锁

诸葛小猿

Java redis 分布式 分布式锁

数据库分片

Arthur

浅析 VO、DTO、DO、PO 的概念、区别和用处!

Java小咖秀

学习 设计模式 模型 经验分享

Linux 进程必知必会

cxuan

Linux 操作系统

信创舆情一线--5省发布区块链发展计划

统小信uos

区块链 舆情

ArrayList源码阅读

慌张而黑糖

ArrayList 源码阅读

分布式缓存与消息队列

紫极

架构师训练营第六周总结

Melo

极客大学架构师训练营

kubernetes集群安装(二进制)

小小文

Kubernetes 容器 容器技术

NLP领域的2020年大事记及2021展望

NLP领域的2020年大事记及2021展望

获得更好用户体验的必杀器——A/B实验统计学秘籍(上)-InfoQ