开篇词|用好A/B测试,你得这么学

你好,我是博伟。欢迎和我一起学习A/B测试。

可能你对我还不是很熟悉,我先来做个自我介绍。我目前呢,在美国的互联网大厂FLAG工作,是一名资深数据科学家。在过去的7年多时间里,我一直在做A/B测试、机器学习建模、大数据分析的相关工作。

在从事A/B测试的经历中,我参与到从设计测试、实施测试到最后分析测试结果,给出业务指导的全过程,后来逐步在团队中主导A/B测试领域的相关工作,开发与A/B测试相关的数据产品,还和工程团队合作来改进提升内部的A/B测试平台,通过持续的A/B测试为公司的新业务带来上百万用户的增长。经过多年的经验积累,现在也为数据分析、营销和产品团队提供数十场A/B测试的讲座和上百次的咨询,给他们讲解A/B测试的最佳实践以及避坑经验。

在我多年的数据分析实践中,我越来越觉得,A/B测试是促进业务持续增长的最实用、最有效的方式。

不过我也发现,在这些不同的数据分析方法中,A/B测试也是最容易用错的方法。

究其原因,是因为A/B测试是一种实践性很强的方法,学校的教学中往往没有相关的课程。你可能会在统计课上学到过它的理论基础——假设检验,但是还是太过理论,不知道该怎么应用。A/B测试的难点就在于,如果你只有理论基础而没有实践经验,那么实践过程由于业务场景千变万化,可能就会有各种各样潜在的陷阱在等着你。只有兼顾了理论基础和实践经验,才能得出值得信赖的测试结果。

也因此,我非常希望能够系统地梳理和总结下自己在硅谷成熟科技公司学到的知识经验,并分享出来。在你即将学习的这门课程中,我会先带你建立起一个做A/B测试的框架,让你在应对不同业务场景时,都能通过框架来按图索骥,灵活运用。

不过在讲具体的学习方法之前,我想先和你聊一聊,A/B测试到底可以帮我们解决什么问题?

为什么想要获得持续的业务增长,就必须学习A/B测试?

在大数据时代,每个公司都在说数据驱动产品和业务的快速迭代,这当然没有错。但是,有很多人都认为,数据驱动就是做几次数据分析,产生一些报表,并没有把数据放在公司的业务决策流程中。

这是一个非常严重的误区。

多年的专业经验告诉我,看一个公司或者团队是不是真正做到了数据驱动,就要看它的决策流程中有没有A/B测试这一环节。

为什么这么说呢,我们先来了解下决策流程,也就是产品/业务迭代的流程。

你可以看到,产品/业务迭代的流程大概分为3步:

  1. 具体的业务问题催生出迭代的想法,比如出现业务问题后,团队会提出具体的迭代方案;
  2. 团队论证方案的可行性和效果;
  3. 论证完成后,具体实施迭代方案。

很明显,只要论证环节结束了,就要开始进行迭代了。所以,做好充分而正确的论证,就是至关重要的环节。

这也很容易理解,你想,如果刚刚有了迭代的想法,不去论证就直接实施,就很难达到预期,甚至会产生负面效果。

这就好比一个刚刚研制成功的药品,不经过临床实验就直接推入市场,去治疗病人,那承担的风险是非常高的。因为这样不仅可能无法治愈病人,甚至还可能会产生严重的副作用。这么一想,你是不是就体会到论证的重要性了?

而A/B测试,就是保证这个关键环节不出现问题的最佳方案。因为它不仅可以让我们清楚地知道产品/迭代方案到底有没有效果,能产生多大效果,还可以在结果不如预期时,快刀斩乱麻,有理有据地放弃这个想法。

这样既能大大节省公司的成本,又能加快想法迭代的速度。如果在花费了大量时间和资源实施想法后,还收不到预期的效果,那就得不偿失了。

所以,只有在决策流程中加入A/B测试这个环节,根据值得信赖的测试结果,而不是所谓的经验来做业务和产品决策时,才是真正的数据驱动决策。

这其实也是所有公司都会面临一个问题:业务增长从来都不是一步到位的,那么如何保持业务的持续增长呢?A/B测试在提升业务和产品迭代上真的很管用,能持续带来营收和用户的增长。

无论是美国硅谷的FLAG,还是中国的BAT,每年都会进行成千上万次的线上A/B测试,参与测试的用户超百万(事实上,大部分用户是在不知情的情况下被参与的)。即使是一些初创公司,或者是像沃尔玛、美国航空这样的传统企业,也会通过小规模的A/B测试来优化提升业务。

以必应(Bing)搜索为例,A/B测试每个月都能帮助他们发掘数十个提升收益的方法,每个搜索的收益一年可以提升10%~25%,这些AB测试带来的改进和其他提升用户满意度的努力,是必应搜索的盈利提升,以及其美国市场份额从2009年刚成立时的8%上升到2017年的23%的主要原因。

讲到这里,你可能会比较好奇,这些公司用A/B测试来解决什么具体的业务问题呢?你看下面我给你总结的表格就了解啦。

正因为发现了A/B测试在产品迭代、算法优化、市场营销等领域的巨大作用,越来越多的公司开始使用A/B测试,这方面的人才的需求量也越来越大。无论是偏技术的数据科学家、数据分析师,还是偏业务和产品的市场营销分析师、产品经理以及增长黑客,都需要在工作中掌握和应用A/B测试。而且从我多年做面试官的经验来看,A/B测试也是这些职位面试中必考的一块内容,重要程度可想而知。

看到这里,你可能已经非常想要学习A/B测试了,先别着急。我发现,很多人对A/B测试是既熟悉又陌生。

说熟悉,是因为A/B测试的基本概念很好理解,它就是指科学中的控制变量实验。说陌生,是因为A/B测试涉及到千变万化的业务场景、不同的数据,以及在实施过程中的多种琐碎环节,也存在着太多的误区。

理解A/B测试的原理很简单,想用好却很难

为什么这么说呢?我们直接看几个真实的案例吧。

我经常和营销、产品团队一起合作A/B测试,他们一般会提出一些A/B测试的想法,比如想要提升某款App的推送效果,希望能通过改变推送中的不同因素来提升推送的点击率。

刚开始,他们的很多想法完全不适合A/B测试。比如说,实验组和对照组相比,他们会想到同时改变推送的标题和内容,或者同时改变推送的内容和时间,等等,这就违反了控制变量实验中实验组和对照组只能有一个因素不同的原则。因为当我们同时变化多个因素时,即使最后得到了显著的测试结果,也没有办法确定到底是哪个因素造成的。

这就是基础不扎实导致的。这是一个非常严重的问题,因为不清楚原理,就很容易在设计实验和分析实验结果中采取错误的方法。

你可能会问,那我掌握好理论基础,是不是做A/B测试就没问题啦?

当然不是。A/B测试是一种实践性很强的方法。你可能会在统计课上学到过它的理论基础——假设检验,但是,怎么在实际业务场景中应用呢?这就是学习A/B测试的难点。

理论上的东西是死的,但A/B测试的应用场景和相关的数据却是千变万化的,在实施A/B测试中会遇到各种各样的数据问题或者工程Bug,要是一不小心哪怕忽视了很小的一个点,就会有各种各样的陷阱在等着你,实验结果就会变得不准确,之前的所有功夫就白费了。

我再跟你分享一个小例子。

某个专门测试App推送的平台,有一类流程是比较发推送有没有效果。对照组不发推送,实验组发推送。

在正式发送前,该平台还会做一个过滤,过滤掉那些不符合推送的用户,比如用户是未成年人,或者用户手机设备太旧不支持推送,等等。但是由于只有实验组会发推送,对照组并不会发推送,所以平台只在实验组实施了过滤机制:

但是,仔细想想,这个流程会使实验组和对照组有两个不同:有无推送和有无过滤。第一个不同是在实验设计中,但是第二个不同就纯粹是流程中加进来的,是偏差,会造成实验结果的不准确。

正确的流程如下图。对照组即使最后不发推送,也要经过和实验组同样的过滤,这样才能保证实验的准确性:

你看,这么一个细小的问题,就可能会导致整个A/B测试失败。

这门课程是如何设计的?

所以,为了让你快速且扎实地掌握A/B测试这门手艺,我结合我的从业经验,从统计原理、基本流程和进阶实战三个层面,为你梳理出了一条学习A/B测试的最佳路径。

第一模块是“统计篇”。

想要做好A/B测试,统计原理的学习肯定是不能漏掉的。统计学知识纷繁复杂,但做A/B测试,其实不需要掌握全部。所以我精选了与A/B测试密切相关的统计理论,主要讲解A/B测试的理论基础-假设检验,以及A/B测试指标的统计属性这两块知识,让你有针对性地学习理论知识,真正打好做A/B测试的理论基础。

即使你没有很好的统计学基础,也可以在这个模块快速掌握A/B测试的统计学基础,完全不用担心。

第二模块是“基础篇”。

在这个模块,我梳理了做A/B测试的几个关键步骤,包括确定目标和假设、确定指标、选取实验单位、计算所需样本大小,以及分析测试结果。我会在讲解流程的同时,也告诉你背后的原理,帮助你在实际应用时能举一反三。

第三模块是“进阶篇”。

想要让做A/B测试的技能更上一层楼,掌握了关键流程还不够。你还需要能够识别那些在实际业务场景中潜在的坑,并且要有相应的解决方法。

除此之外,你应该知道A/B测试并不是万能的,所以我会专门拿出一节课来给你讲解A/B测试的适用范围及替代方法。

如果你是想面试A/B测试相关职位呢,也不用担心,我会花两节课带你掌握面试中的常见考点及应对方法。

最后,我还会通过实战,带你亲自制作一个实用的样本量计算器,来解决网上工具参差不齐、适用范围有限等问题。

A/B测试其实并不难,因为它并不需要你掌握非常高深的计算机算法或者高等数学,所以说理解基本的统计知识就足够了。不过想要把A/B测试做好,肯定是有难度的。它的难度就在于,如果不遵循科学化的流程,那么在实践过程中就可能会出现各种状况和问题。

所以我也希望你能在学习这门课程的时候,边学边实践,在实践中学习、总结前人的经验,把A/B测试慢慢变成你在工作中的一项核心竞争力。

最后,今天是开篇,你可以在评论区写下你对这门课的期待,或者你的学习计划,让我们一起见证彼此的成长吧!

精选留言

  • chen

    2021-05-19 22:04:19

    老师,请问那个过滤的例子里面为什么不先过滤再随机分组呢
    作者回复

    你好,我在这里举的这里例子是我工作中的一个具体案例,当时在工程实施方面决定最后在过滤是因为有些过滤条件是会随着时间变化而变化的,如果提前过滤的话(意味着过滤距离实际发送的时间会更长)有可能会出现过滤掉一些本可以发送的用户。

    2021-08-30 14:06:38

  • 雷大锤抡不动大锤

    2021-01-12 12:20:42

    老师,一次只改变一个变量,那想要得出一个好的策略,是不是花费的时间周期太长了?还是说ab test其实可以衍生为abc甚至abcde test?
    作者回复

    你好,可以有A/B/n Test, 就是有一个对照组和多个实验组,每个实验组改变一个变量,具体可以参考下第9节课的内容。

    2021-01-16 08:00:16

  • 缱绻星空

    2020-12-03 22:39:10

    体系、全面、系统的讲解了AB测试。

    听过老师讲解之后,发现以前了解的才都是皮毛,做的测试也是误打误撞的的得到了相对正确的结果。

    期待老师的后续课程。
    作者回复

    相信博伟老师这门课程可以成为你工作的好帮手!

    2020-12-04 10:29:07

  • 好困啊

    2021-09-14 17:29:32

    虽然统计学专业科班出身,但我我对ab试验的理解也仅仅停留在假设检验,很肤浅,希望跟着老师能够深入进入,可以在工作中熟练应用到
  • 阿瑞斯

    2021-07-31 12:59:12

    有A/B测试方面的书籍推荐吗 老师
    作者回复

    这里推荐两本:
    https://www.amazon.com/Statistical-Methods-Online-Testing-commerce/dp/1694079724

    https://www.amazon.com/Trustworthy-Online-Controlled-Experiments-Practical/dp/1108724264

    2021-08-31 06:06:16

  • 天亮了

    2020-12-13 13:45:44

    对这门课还是非常期待的,也希望老师多多分享如下内容:
    1. 大部分的 A/B 测试案例都是 TO C 场景,不知道老师能否分享 TO B 相关案例,比如像 AWS,Azure 或者其他 TO B 场景的应用;
    2. 可操作的落地实践,可操作性包括较低的维护成本。比如基础统计知识大家都明白,但是在实践中也要考虑其它因素,比如程序员因为对代码的侵入性和破坏性、实现复杂度、变更的成本等等因素,导致最后「明知故犯」的情况,比如为了省事,为了减少发布频次,降低比对成本,还是会违背实验组和对照组只能有一个因素不同的原则,同时改变多个因素。但这不是理论不扎实,而是缺乏低成本的实现方案的无奈之举。所以期待有工业化实践分享。
    作者回复

    你好,本专栏中的例子大部分都是To C端的,不过其实A/B测试的原理都是通用的,你也可以拿来借鉴到To B的场景,至于你说的实践中如何在低成本和少流量的情况下进行A/B测试,我在进阶篇中会讲会讲解如何增加测试的Power以及A/B测试的替代方法,你到时候可以参考下。

    2020-12-17 11:13:39

  • 小匚

    2020-12-10 23:28:36

    最近做的项目是推荐产品,每个客户通过最小二乘计算出评分(用购买次数累计)。面临推荐模型的评价问题,rmse是不存在一个阈值的。目前只是知道A/B测试是常见的在线评测推荐模型的方法。所以来看看具体实施起来怎么去展开,有什么需要注意的等等。
    作者回复

    你好,你要首先明确要测试的目标和假设是什么,然后根据目标选择出相应的指标(推荐系统在A/B测试中常用的指标有点击率,转化率等),然后表征你的指标,选取实验对象,计算样本量,合理性检验,以及最后分析结果,这些都会在课程中学到的。

    2020-12-11 11:11:57

  • Geek_e06b49

    2020-12-08 18:37:31

    想问下老师平台推送那个例子。
    1.第一个例子错误的原因是因为不是严格的ab?假设过滤阶段没有其他影响,是不是对结果的影响也很小,甚至没有影响呢?
    2.或者说我改一下想要得到的结论,如果是要比较‘符合推送条件的人是否推送’进行ab测试,那文中第一个例子是不是就是正确的了?
    作者回复

    你好,推送平台的例子错在不是严格的A/B,因为存在实验设计之外的第二个变量(过滤),并且这个变量对两组的影响不同,现实中过滤的影响还是挺大的,所以会对结果产生比较大的影响,至于你的第二个问题,比较‘符合推送条件的人是否推送’进行ab测试,这个其实也得在两组都得过滤才行,因为要通过过滤机制在两组鉴别‘符合推送条件的人’。

    2020-12-10 16:07:21

  • 石大文

    2020-12-03 08:54:24

    有没有搭建AB测试的应用介绍
    作者回复

    你好,你是指的A/B测试的平台么?

    2020-12-03 14:08:27

  • 金龟

    2020-12-02 22:26:14

    感觉课程全都是偏理论,是否会讲述。abtest是如何设计实现并嵌入到工程中的
    作者回复

    可以看一下目录哦,就前两节课是理论,因为学习A/B测试肯定要学一些理论的。基础篇就会讲如何设计实现啦~

    2020-12-03 10:45:35

  • 上上

    2020-12-02 19:15:31

    声音好听,内容干货,音频部分要是可以选择倍速就更完美了。
    作者回复

    哈哈这个给极客时间的PM提了一个好建议!

    2020-12-06 17:21:07

  • Geek_658d7f

    2024-06-18 02:40:56

    老师用很简单的例子和概念讲清楚了,这一章的内容对于初学者可能比较抽象,如果自己不太理解的还可以用chatgpt在深化,列举更多的例子,很好的课程内容,顶!
  • 憨豆桑

    2024-01-14 21:51:09

    请问两个月速成测试工程师路线应该怎么规划?
  • WS

    2024-01-06 16:58:50

    请问怎么把正文中其他人的笔记痕迹(点线)隐藏?沉浸阅读也会显示
  • 莱布尼茨

    2023-12-21 14:28:48

    请问老师,我们实验平台想给使用方一组数据,描述分流后两组的业务指标差异是在什么精度水平。用AA实验来验证,两组对业务指标影响的精度,可以用P值来描述吗?比如P值70%,那么分流对业务指标影响有70%概率是均匀的。
  • null

    2023-03-21 11:59:16

    老师,数学基础很差,学习这个会不会因为这方面的原因导致学的很累而且也没有成效
  • 2022-09-16 18:12:54

    老师举的例子,不发推送的那一组为什么还要走一下过滤逻辑呢? 过不过滤都不发推送呀
  • 展鸿

    2022-04-15 14:53:55

    老师的插图好好看,请问是用什么工作制作的呢?
    作者回复

    keynote!

    2022-04-15 15:15:42

  • AA

    2021-11-09 22:16:23

    老师国内有什么推荐的ab测试平台呢
  • 胡二筒

    2021-09-22 17:51:30

    老师,有推荐的A/B测试第三方工具吗