网易首页 > 网易号 > 正文 申请入驻

6000字 AB-Test 基础指南!

0
分享至

最近工作中,频繁听到业务方和同事聊到AB Test,所以我研究了下AB Test的流程规范。不足之处,还望批评指正。

一、背景

实际业务场景中,为了优化产品体验,我们常会提出多种产品策略方案。比如,手机的温控策略,可能会有多种方案,但选择哪种方案能给用户带来更好的体验呢?除了通过实验室测试、招募试用用户体验和使用现有数据验证等方法之外,最直接的方法是AB Test。AB Test是一种测试方法,通过对比两种策略在研究主体上的反应,判断哪种策略更优

虽然AB Test定义简单,但使用不当,反而会产出错误的结论,本篇文章旨在帮助我们科学使用AB Test。

二、ABTest流程

我总结AB Test的主要流程如下:

1. 沟通测试需求

2. 讨论观测指标

3. 选择投放目标

4. 配置实验策略

5. 评估数据结果

1. 沟通测试需求

当业务方提出使用AB Test去测试策略效果,我们要先问一个问题:“我们真的需要AB Test吗?”。AB Test整个流程耗时,而且可能会影响用户,特别是一些用户感知强的功能策略。如果有其它策略评估手段,建议先考虑它们,真的有必要,再考虑使用AB Test。

2. 讨论观测指标

我们要测试不同策略,那么最后我们要观测什么指标呢?这个指标一定能很好地反映策略效果,例如更换网页广告展示策略,我们除了监控跳转率,也能加入转换率等指标。好的策略评估往往需要监控多个观测指标,同时,观测指标的制定需要与业务方讨论,避免单方输入。特别要注意,指标应考虑多个业务场景的影响,比如说推性能策略AB测试,不应该只关注性能指标,也要关注用户使用产品时的行为指标。

3. 选择投放目标

我们在测试前,需要圈取策略投放目标范围,这个投放目标涉及软硬件版本、用户群、平台等。不合理的投放会造成最后测试结果不具有参考价值,举些错误例子[1]:

  • 轮流在不同版本上线测试:在不同硬件/软件版本上,上线不同的策略,最后AB test引入版本差异可能不太明智。举例,在旧版本和新版本上分别上线温控策略A和B,但新版本补丁更新后,手机可能会带来温度改善,那这样就很难对比数据知道,手机温度的改善究竟是温控策略还是版本更新所致。类似地,轮流在不同时间上线测试也是不太可取的。

  • 选择存在明显特征差异的用户分发策略:在选取对照组和实验组时,没有考虑分发群体的特征差异。举例,我要分发温控策略,对照组是广东用户,实验组是黑龙江用户,不同省份的环境温度本身存在差异,导致两拨用户的手机发热情况也不一致,所以在策略效果上不具有可比性。

正确选择投放目标,主要关注两个方面:

(1) 投放量

(2) 投放人群

(1) 投放量

投放量很重要,如果少了,会担心观测指标会受偶然因素影响,投放过多,又担心测试风险变大,造成市场反响不好。现在网络上已存在很多AB Test样本量计算器,如图1所示:

图1: AB Test样本量计算器[2]

实际AB Test应用中,我们用的观测目标多是比例形式(例如: 转换率、留存率等)。在统计学中,有一个叫做两样本比例假设验证,该验证的最小样本量计算公式如下[3]:

参数解释:

  • : AB Test的最小样本量。

  • : 分位数(Z Score),某 值到均值的距离(可正可负)是多少个标准差,即 ,可查表获取。

  • : 基准比例 (Baseline Rate)。若历史大盘数据的广告转换率是20%,则 。

  • : 期望比例 (Expect Rate), = + 最小可检测影响 (Absolute Minimum Detectable Effect),如果我们希望转换率指标提高5%,且低于5%的差异对产品影响不大,则Minimum Detectable Effect设为5%。

  • : 第一类 (Type I error) 错误概率上限,也称Significance Level。

  • : 第二类 (Type II error) 错误概率上限,Statisical Power = 。


我们来深入了解下 和 ,假设我们要对比策略A和策略B的观测指标,我们会建立假设H0: A和B两组不存在本质差异,H1: A和B两组存在差异。针对假设,我们会有如下矩阵:

图2: AB Test假设的概率矩阵

由图2,我们可以知道:

  • Type I error ( ):真实AB没区别,但是我们却认为有区别。

  • Type II error ( ):真实AB有区别,但是我们却认为没有区别。

一般来说, =5%, =20%。现实应用中,如果出现Type II error,我们会选择持续优化实验方案,但往往Type I error是更困扰人的,因为AB没区别,我们还误认有区别,最后错误认为新策略有用就推广到全量用户,这是不好的,因此 常会设置小于 。[4]

说了那么多,我们举个实际案例:假设我们现在大盘用户采用广告策略A,广告转换率是20% ( ),而我们有个新策略B想测试,我们预估它能带来广告转换率提高5% (Minimum Detectable Effect) ,那我们最少需要多少样本量?样本量是1030个,请见图1,计算过程如下:

- = 20%

- = + Minimum Detectable Effect = 20% + 5% = 25%

- = 5%

- = 20%

- = = -1.959963985

- = = -0.841621234

(2) 投放人群

在AB Test中,投放人群=流量,选择投放人群有两种形式:

  • 随机:随机从大盘用户里抽样。例如userid单双尾号抽取、随机种子打乱数据再抽样等。

  • 定向: 针对特定用户群体下发策略。例如结合用户画像标签或自定义规则筛选用户。

以上两种形式均要保证策略AB下两组用户相似。

4. 配置实验策略

在企业真实环境中,会有很多AB Test实验,我们需要先判断不同实验之间关系:

(1)正交实验: 实验之间相互不影响。举例: AB Test1是测试不同按钮颜色的实验,AB Test2是测试不同广告算法的实验,Test1的按钮颜色不会影响Test2广告算法的效果,所以Test1和2之间是正交实验,

(2)互斥实验: 实验之间存在相互影响。举例: AB Test1是测试温控限频策略对温度的影响,AB Test2是测试温控降亮度对温度的影响,Test1和Test2都会影响温度,所以Test1和2之间互斥。

我们都知道,全局流量基本是固定的大小,不可能说划分的每个流量群体在同一时刻只开展一个实验,不然容易发生流量饥饿。为此,Google在2010年提出了多层重叠实验架构 (Overlapping Experiment Infrastructure) [5] :

图3: Google的多层重叠实验框架

该框架有三个组成成分:

  • 域 (Domain): 流量的一个划分,非重复域指的是不同AB Test共享测试在同一流量上,重复域则存在细分流量的可能。

  • 层 (Layer):系统参数的子集 (域包含层,层也能包含域)。

  • 实验 (Experiment): 可以看作一个AB Test实验。

当我们要做正交实验的时候,可以考虑设计重叠域,案例如下:

图4: 正交实验案例

比如我们在做网页的ABtest,我们先建立一个有一定流量规模的域,然后对流量划分为3份,用作测试按钮颜色,同样,我们也可以对流量划分2份,用于不同搜索算法的测试。按钮层和算法层互不影响,共享使用相同流量。

而当我们要做互斥实验时,则可以考虑在非重叠域或单层里实验,案例如下:

图5: 互斥实验案例

如果我们现有要测试不同的温控策略,分业务场景有以下方案:

  • 若已知或预计未来会有n个互斥实验策略,则可以考虑将对单层流量划分出多个buckets,然后分配给不同的温控策略实验,例如图5的温控策略CD层。

  • 若不确定未来的互斥实验计划,可以考虑先在非重叠域或单层上先实验当前测试,然后若有新的策略要测试时,对原有实验策略回退后再测试新实验,例如图5的非重叠域和温控策略AB层。


简单来说:正交用分层,互斥用分流

5. 评估数据结果

假设我们有了数据结果,策略A的转换率是10%,策略B的转换率是8%,那我们说策略A比策略B好,这样就可以了吗?不可以,因为可能是抽样误差引起的转换率差异,为了区分实验A和B的差异是由抽样误差引起的?还是本质差别引起的?我们需要做假设验证 (hypothesis testing)。统计学中有很多假设验证方法,例如:

  • T检验: 也称Student's t test,适用: 样本量较小(如n<30),总体标准差未知,正态/近似正态分布的样本。目的: 比较平均值之间差异是否显著。

  • Z检验: 也称U检验,适用: 大样本量(如n>30),总体标准差已知,正态/近似正态分布的样本。目的: 比较平均值之间差异是否显著。

  • F检验: 适用: 正态/近似正态分布的变量。目的: 检验两个正态分布变量的总体方差是否相等。

  • 卡方检验: 也称chi-square test或X2 test,适用: 类别型变量。目的: 检验两个变量之间有无关系,例如性别和是否购买数码产品之间的关系。

在ABTest中,我们一般都会用T/Z检验,它们的使用场景如下:

图6: T/Z检验的使用场景 [6]

我们做AB Test,“如果样本量足够大,那么Z检验和t检验将得出相同的结果。对于大样本,样本方差是对总体方差的较好估计,因此即使总体方差未知,我们也可以使用样本方差的Z检验”。[6],但正常来说,除非是长期的实验(0.5-1年),例如算法,会选择Z检验。正常的短期AB Test基本是实验1个月内甚至说1-2周,那么此时建议选择T检验。

假设检验步骤如下:

(1) 建立假设

(2) 设置决策标准

(3) 假设检验出结论

(1) 建立假设

假设检验的检验有两种:单边假设检验双边假设检验,前者判断AB是否显著优/劣于对方,后者判断AB是否存在显著差异。

图7: 单边和双边假设检验[6]

以双边检验为例,假设策略A 7天的转换率平均值为 ,策略B 7天内转换率平均值为 ,则建立假设:

  • 零假设(H0): , 即假定策略AB没显著差异。

  • 备择假设(H1): ,即策略AB有显著差异。

(2) 设置决策标准

假设检验的决策标准有两种:

  • p值: p值是用来判定假设检验结果的参数,如果p值很小,说明原假设情况发生的概率很小,我们就有理由拒绝原假设。我们一般会认为显著性水平值(图8的Significance Level )为0.05,即如果p值<0.05,则有超过95%的信心拒绝零假设

  • 检验统计值: 例如t值。当我们定了显著性水平后,可以透过查表,得到对应的t临界值,若t真实值(Test Statistic) > t临界值(Critical Value),我们会拒绝零假设。

注意:t值和p值的假设验证方法是相反的。

图8:假设检验决策逻辑

(3) 假设验证出结论

我们举个案例做假设验证吧,假设:

  • 策略A 7天的转换率: [64.2, 28.4, 85.3, 83.1, 13.4, 56.8, 44.2],平均值为53.629,标准差为26.886。

  • 策略B 7天的转换率: [45, 29.5, 32.3, 49.3, 18.3, 34.2, 43.9],平均值为36.071,标准差为10.745。

由于样本量为7个,所以选择T检验。而T检验在实际应用中有三种[8]:

  • 单样本T检验: 总体样本vs抽样样本。

  • 配对样本T检验: 同一对象接受两种不同的处理。

  • 双独立样本T检验: 两组独立样本。

正常情况下,我们AB Test用的是两组独立样本,控制变量进行对比实验,所以我们这里采用双独立样本T检验[9]:

和 是策略A和B的方差, 和 则是它们的平均值。

我可以调用python的scipy.stats.ttest_ind()计算出t值和对应的p值:

pythonfrom scipy.stats import ttest_indn1_samples = [64.2, 28.4, 85.3, 83.1, 13.4, 56.8, 44.2]n2_samples = [45, 29.5, 32.3, 49.3, 18.3, 34.2, 43.9]
# 独立双样本 t 检验的目的在于判断两组样本之间是否有显著差异:# 当我们使用scipy.stats.ttest_ind(x, y),我们建立的假设是在x.mean()-y.mean(),但常为了得到正值结果,我们常会要求x.mean()>y.mean()。# 即放置顺序是(n1_samples, n2_samples),而不是(n2_samples, n1_samples)t_val, p = ttest_ind(n1_samples, n2_samples)print('t值:',t_val," p值:", p)

代码结果返回: t值:1.6043475026567464 p值:0.13461684984333577。p>0.05,接受原假设,所以最终结论是: 策略A和B之间没有显著差异。

知识点扩展: 除了通过p值验证假设,还可以通过t值,例如我们定了p值为0.05,每组样本内有7天的转换率,则自由度(Degrees of Freedom, df)=size(n1_sample) + size(n2_sample)-2=12),然后查T表,可知t临界值为2.179,如图9。因为t真实值<2.179,所以我们接受原假设。

图9: T表[10]

上面讲的是双边检验,如果策略A是旧策略,B是新策略,我们想看是否新策略B比旧策略A好,那需要用到单边检验,此时假设建立为:

  • H0: A≥B

  • H1: A

单边检验只要把前面scipy.stats.ttest_ind()计算出p值除以2后,再与显著性水平对比即可,这里是p/2=0.1346/2=0.0673>0.05,接受原假设,即新策略B不会比旧策略A显著提升转换率。我们也能从t值着手判断: 由图8可得,单边检验下,t临界值为1.782,t=1.604<1.782,未掉入右侧的拒绝域,所以接受原假设。

参考资料

[1] ABTest - emmet7life, 博文链接: https://www.jianshu.com/p/a5dfa5e6c721

[2] A/B Test样本量计算器, 工具链接: https://www.evanmiller.org/ab-testing/sample-size.html#!20;80;5;5;0

[3] AB test sample size calculation by hand - user3315198, 问答链接: https://stats.stackexchange.com/questions/392979/ab-test-sample-size-calculation-by-hand

[4] AB测试里的统计功效(Power)是个啥?- Nemo, 文章链接: https://zhuanlan.zhihu.com/p/149941019?from_voters_page=true

[5] Tang, D., Agarwal, A., O'Brien, D., & Meyer, M. (2010, July). Overlapping experiment infrastructure: More, better, faster experimentation. In Proceedings of the 16th ACM SIGKDD international conference on Knowledge discovery and data mining (pp. 17-26).

[6] 假设检验、Z检验与T检验 - SUBHASH MEENA&VK, 文章链接: https://www.cnblogs.com/panchuangai/p/13215244.html

[7] P值 - 百度词条, 文章链接: https://baike.baidu.com/item/P值/7083622?fr=aladdin

[8] 假设检验-U检验、T检验、卡方检验、F检验 - J符离, 文章链接: https://blog.csdn.net/qq_22592457/article/details/92982170?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

[9] Student's t-test, 维基百科: https://en.wikipedia.org/wiki/Student's_t-test#Independent_two-sample_t-test

[10] T Table, 博文链接: https://www.tdistributiontable.com/

[11] How to perform two-sample one-tailed t-test with numpy/scipy - stackoverflow, 问答链接: https://stackoverflow.com/questions/15984221/how-to-perform-two-sample-one-tailed-t-test-with-numpy-scipy

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
已过补招时限,德国无法补招球员替代伤缺的施洛特贝克

已过补招时限,德国无法补招球员替代伤缺的施洛特贝克

懂球帝
2026-06-22 20:05:03
美财政部放宽对伊朗能源相关交易限制

美财政部放宽对伊朗能源相关交易限制

界面新闻
2026-06-22 21:47:42
成年球员围殴U15希望之星,中国足球已经下作成这样

成年球员围殴U15希望之星,中国足球已经下作成这样

晓看说
2026-06-22 23:06:01
一架专机直飞北京,开启5天行程 菲律宾这下是不明白也得明白了

一架专机直飞北京,开启5天行程 菲律宾这下是不明白也得明白了

绝对军评
2026-06-22 08:12:25
美共和党议员:若美伊谈判破裂,美国将武力夺取霍尔木兹海峡

美共和党议员:若美伊谈判破裂,美国将武力夺取霍尔木兹海峡

澎湃新闻
2026-06-22 17:07:09
马宁下场比赛定了?日本球迷提前担心,希望不要执法日本比赛

马宁下场比赛定了?日本球迷提前担心,希望不要执法日本比赛

十点体坛
2026-06-22 21:45:17
中共中央批准,开除尹建业党籍

中共中央批准,开除尹建业党籍

新京报
2026-06-22 11:38:16
都反了:又一位葡萄牙队友认为没有义务为C罗传球

都反了:又一位葡萄牙队友认为没有义务为C罗传球

本泽体育
2026-06-22 02:59:27
佛得角门将经纪人回应爆火:已收到中国多个商务邀请,我需要帮他开中国社媒

佛得角门将经纪人回应爆火:已收到中国多个商务邀请,我需要帮他开中国社媒

行舟问茶
2026-06-22 15:36:08
事态升级!娜然被曝辱华,霍启刚评论区沦陷,郭晶晶态度说明一切

事态升级!娜然被曝辱华,霍启刚评论区沦陷,郭晶晶态度说明一切

不写散文诗
2026-06-22 21:11:36
“米克拉”加强为强台风级,广东局部暴雨,广州高温过后迎雨水

“米克拉”加强为强台风级,广东局部暴雨,广州高温过后迎雨水

城事特搜
2026-06-22 22:40:53
医生:希望你的血脂报告里,永远不要出现这3项异常

医生:希望你的血脂报告里,永远不要出现这3项异常

垚垚分享健康
2026-06-22 17:05:21
全新本田奥德赛曝光,外观和内饰大变样,先来一睹为快

全新本田奥德赛曝光,外观和内饰大变样,先来一睹为快

红涛说車
2026-06-22 16:52:22
广德公安通报一起交通事故:1死2伤,肇事司机被刑拘

广德公安通报一起交通事故:1死2伤,肇事司机被刑拘

界面新闻
2026-06-22 20:07:29
日本爱媛耗时20年研发高端柑橘种苗疑似流入中国,日方痛心彻查!

日本爱媛耗时20年研发高端柑橘种苗疑似流入中国,日方痛心彻查!

颤抖的熊猫
2026-06-22 14:25:23
内塔尼亚胡强硬表态:以军不会撤出黎巴嫩

内塔尼亚胡强硬表态:以军不会撤出黎巴嫩

新华社
2026-06-22 14:35:09
阿根廷VS奥地利:也许,只是也许吧,奥地利有可能本场打平阿根廷

阿根廷VS奥地利:也许,只是也许吧,奥地利有可能本场打平阿根廷

生活新鲜市
2026-06-22 10:34:10
虎扑热帖标题引热议:珠圆玉润丰乳肥臀

虎扑热帖标题引热议:珠圆玉润丰乳肥臀

浅遇时光
2026-06-21 00:54:28
知名主播说出争议言论,直言梅西技术碾压C罗,引起双方粉丝骂战

知名主播说出争议言论,直言梅西技术碾压C罗,引起双方粉丝骂战

新游戏大妹子
2026-06-22 12:44:02
宾利新车官宣,6月20日,已正式上市

宾利新车官宣,6月20日,已正式上市

科技堡垒
2026-06-20 11:55:05
2026-06-23 02:12:49
数据不吹牛 incentive-icons
数据不吹牛
趣味+实用数据分析
415文章数 4499关注度
往期回顾 全部

科技要闻

马云与阿里巴巴众高管下田插秧

头条要闻

媒体:中国"两箭齐发"反制美国 不卖了也不买了

头条要闻

媒体:中国"两箭齐发"反制美国 不卖了也不买了

体育要闻

法国球星祝中国队下届世界杯取得好成绩

娱乐要闻

陪睡陪玩是皮毛,向佐揭内娱暗规则

财经要闻

前美联储主席格林斯潘去世 享年100岁

汽车要闻

华为智驾ADS限时优惠月底结束 7月1日前下订立省3000元

态度原创

手机
亲子
数码
公开课
军事航空

手机要闻

一加 16T曝光,6.3英寸超高刷小直屏

亲子要闻

不想买又不敢拒绝,幼儿园毕业照绑架了多少普通家庭

数码要闻

消息称三星显示已获苹果量产认证,将为折叠屏iPhone独供OLED面板

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

东风-17发射状态首次公开 多车齐射场面硬核

无障碍浏览 进入关怀版