写点什么

细节决定 A/B 测试的成败:有底线的样本量

  • 2020-04-05
  • 本文字数:2531 字

    阅读完需:约 8 分钟

细节决定A/B测试的成败:有底线的样本量

在 Testin A/B 测试的运作中,我们曾经遇到过这种情况(这是一道案例分析题):


某位不愿透露姓名的客户 A 先生为他的产品迭代准备了为期半个月的 A/B 测试。他希望新的版本能比原版多带来 5 个百分点的转化率。经过半个月的等待,有 1000 名用户进入测试,并使得新版转化率成功达到了目标。但是令他疑惑的是,对于这个实验结果的 p-value 和 power 检验均不达标。也就是说,这个结果并不可信。



两大检测指标


A 先生深感困惑。他不知道该怎么办:是因为效果看似达到了于是停止实验?还是因为检验不达标而做其他的补救措施?


针对 A 先生的问题,我们进行了一系列分析,最后确定了症结所在:样本量不足。A 先生的实验实际上需要至少 1500 人,但是目前只有 1000 人进入实验,也就是说样本量的缺口达到了 500。若想解决这个问题,只要继续让流量进入实验,达到最低需要的样本量,即可。


看了这个案例,你可能会产生这些疑惑:


  • 会出现这些情况居然是因为 样本量给的不足?这与实验有什么联系?

  • 如果是的话,做一个测试,要给出 多少样本量 才是足够的?

  • 而且,为什么不能让所用用户参与到测试中来,那样一定能保证有足够的数据可以收集不是吗?


——出现这种困惑的客户并不少见,我也是在进一步接触 A/B 测试以后才明白这其中的关键所在:样本量大小。

有底线的样本量

在上一篇推送《细节决定A/B测试的成败:不可忽视的抽样》中,我们搞明白了 A/B 测试和抽样之间的关系,引用一下上一篇中对于抽样的叙述:


“在 A/B 测试中,我们无法知道所有用户的行为(如点击率)的真正均值……必须通过抽样,抽取 一部分具有代表性的用户 来测试不同版本的效果(例如均值),从而基于抽样数据进行统计分析。……”


那么,这“ 一部分具有代表性的用户 ”具体数量应该是多少呢?是不是随便划拉一下数据条,拉个多少多少人来测试就行了呢?


并不。因为,如果 样本的容量太小,会导致参数估计值的大小和符号违反经济理论和实际经验,使结果不可信


举个栗子,陆仁甲的头儿要确定全国十几亿人喜欢吃啥主食,然后陆仁甲划拉了几百号人来一问,哦这些人大部分喜欢吃米饭,然后陆仁甲就说全国人民偏好吃大米——???一想就知道不对是吧。


所以说 确定你的实验对于样本量大小的需求 是很重要的。然鹅,我在网上那些 A/B 测试入门教程里少有看到对于样本量估算的介绍,大量的 A/B 测试科普文章仍旧停留在介绍 A/B 测试怎么怎么厉害怎么怎么牛逼,要怎么怎么做怎么怎么注意(是的没错之前我们公众号也是这样的 233),


但就是不告诉你到底应该划拉多少人来做。


别慌。这就告诉你怎么搞这个样本量。

给样本量“秀下限”

为了搞清楚这个样本量的估算是怎么弄起来的,我跑去找我们 Testin 技术部的大佬寻求了一下技术支援:


大佬:“哦就这事儿,其实吧!要确定样本量这事儿老简单了!”


“喏,给你我们搞 A/B 测试的时候用的方法:


“我们用 UV 来计算实验需要样本量和剩余时间。由于 t 分布需要一个自由度的参数,而自由度的计算需要样本量 n。这里样本量需要计算,所以不能用 t 分布,而用 z 分布。如果将自由度设置成无穷大,那么累计概率与 z 分布一样,此处用正态分布进行实验。


“在原假设为真的条件下,假设原始版本和版本一的流量之比为 1:k,则样本量之比为 n:m=1:k


“设 x 是指 最小提升率,比如你原来的转化率是 50%,你定一个最小提升是 10%,那么你最后的得到的转化率就是 55%;另外这个 原始版本转化率 也要设置好


“然后整体实验样本量为 n+m=(1+k)*n,这时候我们再带入这条公式


(说着大佬拿出了一条长长的写满根号 xyzγδαβ的公式……)



——不不打住打住啊我不是来上高等数学的啊别一言不合就建模啊饶了我吧


技术部的大佬太牛逼了高数学渣表示实在不懂啊……


不过这并没有关系。你想啊,假设有一个黑箱,我们只要知道怎么搞进去一些数字,然后黑箱给我们搞出来一些答案就行了对吧!只要会用就行了对吧!(才不是因为学渣看不懂在找借口呢哼)


所以技术部的大佬们早就准备好了一款样本量计算器,专门为我们 Testin 的客户估计每次实验的样本量:



(其实这种计算器并不少见,你也可以直接在网上搜索并使用样本量计算器来估算,只是由于学术界对于样本量估计的争论也是各有各的说法,所以其他计算器使用的公式与我们的可能存在些许差别)


重点是,当你进行 A/B 测试的时候,要先估算好这个样本量的数值,然后再 拉取不少于这个数量的用户 来进行测试就行了。

没上限的样本量……?

经过上面两大块的叙述,想必你也意识到了:样本量越大,实验结果的可靠性就越有把握。


但是这就意味着样本量越大越好吗?


(就像现在的手机,屏幕真是越来越大了,但是大就好吗?那你咋不端着个平板电脑打电话呢……)


诚然,样本容量太小,会使抽样误差太大,使调查结果与实际情况相差很大,影响调查的效果,因此做实验的时候,都建议加大流量投入,也因此不建议月活用户数量太少的客户做 A/B 测试。但 样本容量太大,势必会造成人力、物力和财力的很大浪费。这点大家都懂,成本嘛。


但是可能你又有疑问了,我做 A/B 测试的时候只是在线上收集数据罢了,又不用承担太大的成本,那我加大测试流量有什么好担心的呢?


我们再举个夸张的栗子:陆仁乙有款产品,月活用户几百万。他要进行产品迭代,搞了个 A/B 测试,A 版是原版,B 版是新版 1,C 是新版 2(是的没错谁告诉你 A/B 测试只能有 AB 两版的啦,同时测试几个版本是可以的哦)为了追求更精确的结果,他给每个版本都分配了 25 万用户。经过了一周的测试,陆仁乙开心地发现 C 版拥有超过原版数个百分点的转化能力,同时喜闻乐见地发现 B 版的 25 万用户因为 B 版本体验非常不好,有数万用户删除了应用……


——看到这里你或许明白我要说什么了:不要忘了我们搞测试的初衷是什么:找到最好的版本,规避可能带来的损失。让如此多的用户参与,本就可能带来不可估量的损失了。


毕竟,改革,是有失败的风险的,当你为了追求结果的准确性而 盲目提高样本量 的时候,你所要承担的 风险成本(指由于风险的存在和风险事故发生后人们所必须支出的费用和减少的预期经济利益)已经在不知不觉间上升了。


现实社会不是象牙塔中的理论世界,很多东西是要考虑实际的。因此,如何选择合适的样本容量,才能既满足模型估计的需要,又减轻收集数据的成本,是一个重要的 实际问题


2020-04-05 16:54757

评论

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

8家券商综合评级上升,4月券商App终端业务体验评测报告发布

博睿数据

微服务下认证授权框架的探讨

不在线第一只蜗牛

架构 微服务 框架

探索Solana链上DApp开发:高性能区块链生态的新机遇

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发

基于 Prometheus 的超算弹性计算场景下主机监控最佳实践

阿里巴巴云原生

阿里云 云原生 Prometheus

腾讯面试:如何提升Kafka吞吐量?

王磊

Java静态变量在静态方法内部无法改变值

EquatorCoco

Java Python 开发语言

加速短剧出海,阿里云视频云获优秀出海产品技术服务金帆奖

阿里云CloudImagine

云计算 视频云 出海 微短剧 短剧

2023全球DDoS攻击态势分析,与众多行业专家共议DDoS破局之道

百度安全

全面掌握甲骨文云 OCI MySQL 服务:从自动运维到高效管理

Geek_2d6073

预约直播丨ETLCloud训练营:ETL中多流数据合并与运算专题

RestCloud

直播 ETL

哈银消费金融七载风雨兼程,创新引领稳健前行

Geek_2d6073

AI日报|腾讯,科大讯飞加入百模价格战,黄仁勋预言AGI或五年内出现,DeepL获3亿融资...

可信AI进展

人工智能

邀您参会丨飞天技术沙龙 AI 原生应用架构专场·北京站

阿里巴巴云原生

阿里云 AI 云原生

高效简单办赛的秘诀:自定义判题器

华为云PaaS服务小智

云计算 华为云 大赛 赛事

面向对象变成VS函数式编程

FunTester

自动生成流程图的软件!这3款值得推荐!

彭宏豪95

人工智能 流程图 在线白板 AIGC 效率软件

客户案例|博睿数据助力中泰证券App用户体验全面升级

博睿数据

常态化运营,让数据安全工作落地生根!

极盾科技

数据安全

14个Flink SQL性能优化实践分享

快乐非自愿限量之名

数据库 sql 大数据 flink

上海站丨飞天技术沙龙 Serverless + AI 专场开启报名!

阿里巴巴云原生

阿里云 Serverless 云原生

面了一个程序员,因为6休1拒绝了我

伤感汤姆布利柏

Spring Boot中的 6 种API请求参数读取方式

快乐非自愿限量之名

Java Spring Boot 后端 API

LinkedIn最新研究:图+向量数据库,客服解答时间缩短64%

Fabarta

优化数据查询性能:StarRocks 与 Apache Iceberg 的强强联合

StarRocks

高效查询秘诀,解码YashanDB优化器分组查询优化手段

YashanDB

数据库 优化器 分组查询 yashandb 崖山数据库

卓越开发管理之道

凌晞

团队管理 项目管理 技术管理 开发管理

荒野之境:XMAGE的抵达与眺望

脑极体

影像

数据互通新纪元,企业如何实现系统无缝对接?

聚道云软件连接器

案例分享

SDK实战指南:从配置到管理,一步步创建阿里云ECS实例

Geek_2d6073

为你的程序精选的7个最佳天气API

幂简集成

API 天气api

最后一天,职场火焰杯测试开发大赛报名马上结束

霍格沃兹测试开发学社

细节决定A/B测试的成败:有底线的样本量_文化 & 方法_云测数据_InfoQ精选文章