互联网时代你需要掌握的A/B Test技能

前言

在大数据的互联网时代,A/B Test 被越来越多的公司所使用,数据可以帮助公司作出更有效的决策。例如互联网的 APP 产品经常会进行改版,同时发布多个 APP 版本,分别让相似的多组相似的客户群体访问,收集各组群体的数据,最终决策出最佳版本。

来看一个具体的案例(摘自互联网):

2008 年,奥巴马在竞选中胜出,出任美国第 44 任总统,除了其个人影响力之外,也离不开他竞选宣传团队的作用,在总统竞选页面上,他的团队就用 AB 实验在 16 种方案(照片和按钮进行不同的组合)中找到了最佳方案,将最终的转化率提升 40.6%。

竞选页(摘自互联网)

相信大家都会在工作中遇到以下常见问题:

  1. 提出几种解决问题的方案,但是不知道哪个是有效的或者效果更好。
  2. 方案没有经过 A/B Test 验证,全部推上线后效果惨遭业务吐槽。
  3. ......

这些问题都可以通过 A/B Test 避免和优化,一切用数据说话。A/B Test 看起来作用是非常大的,但是设计一个好的 A/B Test 并不简单。一起学习下 A/B Test 的基本功吧,以备不时之需。

概念

A/B Test 也称为对照试验,它是一种检验方法,通过合理的随机实验,科学地建立事物间的因果关系。比如当前产品的版本为 A,你针对某些问题提出了产品的优化方案 B,但是并不能确定 B 的效果会好于 A,于是你在线上同时部署了版本 A 和 B,将 1% 的流量导入 B,剩余 99% 的流量导入 A,通过持续观察数据指标或者其他方式决策方案的优劣。

  • 如果 A 优于 B,重新修正方案 B 继续测试。
  • 如果 B 优于 A,尝试扩大流量比例,例如灰度 50% 的时候 B 是否也优于 A?如果最终确定 B 优于 A,再将流量推到 100%。

实验并不一定只有 A 和 B 两组方案,有可能是更多组方案之间进行比较。

A/B Test基本流程

A/B Test 是一个反复迭代和优化的过程,基本步骤如下:

  • 现状分析和建立优化改进的假设
  • 建立 A/B Test 的目标
  • 制定优化迭代方案,完成开发
  • 确定分配流量比例对不同版本进行测试
  • 采集实验数据进行有效性判断
  • 根据实验结果确定是否调整流量比例继续测试还是重新制定优化迭代方案
A/B Test基本流程

我们通过一个例子来看下 A/B Test 如何实施。

  1. 现状分析与优化方案:
    • 现状:某店铺为了提升营销额,目前采用的方案 A:单次消费满 500 享 9 折优惠。
    • 优化改进假设:很多人单次消费较难达到 500,采用新的方案尝试效果。方案 B:办理电子储值卡,充值500 送 100,1000 送 200。
  2. 建立目标:营销额提升20%。
  3. 完成技术实现(略)。
  4. 分流:50% 的用户看到方案 A,50% 用户看到方案 B。
  5. 采集数据:方案 A 的转化率为 25%,方案 B 的转化率为 10%。
  6. 方案调整:方案 B 效果较差,重新制定方案 B:热销商品满 2 件享 9 折,满 3 件享 8 折。重新迭代上线。
  7. 采集数据:方案 A 的转化率为 25%,方案 B 的转化率为 30%。经过一段时间观察,最终确定方案 B 优于 A,流量覆盖到所有用户。

A/B Test的有效性

上述例子中,最终方案 A 的转化率为 25%,方案 B 的转化率为 30%。这个结论一定是正确的吗?当方案 B 流量推到 100% 后,结论依然成立吗?

这里就引出一个问题,如何 A/B Test 的有效性?在不同的业务场景中结论都是见仁见智,这里只分析一些常见的问题。

  • 样本数量 & 流量大小

    样本数量不能太少,避免随机结果产生。上述例子中如果方案 A 中较多消费水平较高的用户,那么将影响该测试分组的结果。A/B Test 是基于假设检验的,通常都基于都基于 Z 检验,理论上样本数量越大,实验结果越接近理论值(数据基于正态分布)。

    同理测试分组的流量也不宜太小,不过一开始不宜追求过大的流量,否则增加线上的试错成本,影响销售额。对于改动较大的方案,通常从小流量开始实验,再逐步放大测试流量。

  • 样本质量 & 分流

    不同方案在不同的用户群体中的表现结果是不一致的,例如老人和年轻人、男人和女人等等,他们的特征完全不一样。所以设计合理的分流算法尤为重要。

    • 分层实验

      实验对象往往可以分为多层,例如网站可以分为 UI 层、算法策略层等,不同层之间没有相关性,流量经过每层都会再次随机打散。

    • 正交实验

      正交实验法是研究多因素多水平的一种设计方法,从全面试验中挑选出部分具有代表性的水平组合进行试验,通过挑选部分有代表性的水平组合进行试验并对结果进行分析找出最优的水平组合。(摘自百度百科)

      考虑进行一个包含 3 个因素,每个因素有 4 个水平选择的实验。如果做全面实验,有 3^4 = 81 种可能,我们不可能穷举所有的可能,确定实验因素和水平数以及选择合适的正交表,用部分实验代替全面实验,通过科学的组合,尽可能使各个因素在各个水平选择中均匀分布,通过数据分析找出最佳的水平组合。

推荐阅读:

Goolge 论文:《Overlapping Experiment Infrastructure: More, Better, Faster Experimentation》https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/36500.pdf
  • 结果可信度

    • 增加 AA 实验

      为了排除样本质量对测试结果的影响,增加 AA 实验是有效的方法,从旧版本中分离两组流量与新版本进行测试。例如方案 A 分流 70%、10%、10%,其中两组 10% 流量进行 AA 测试,剩余 10% 流量分配给方案 B。可以通过分析方案 A 中两组 10% 的流量是否有显著差异,从而判断结果的有效性。

    • 实验反转

      在得出实验结论后,将对照组变成实验组,实验组变成对照组。该方法在前端样式对比中常用,例如按钮、文字的大小和布局。

A/B Test的误区

  • 当出现明显优势的结果时,停止测试。
  • 使用重复的流量进行不同目标的测试。测试对象可能经过流量测试后特征已经变化。
  • 一次性改变较多因素,无法确定结果由哪个因素变化导致。学会使用控制变量法才是最有效的。
  • 灰度发布的验证结果可以替代 A/B Test。虽然灰度发布是在工作中最常使用的方式,但是它并不能实现精确分流,不能代替 A/B Test。
  • 没有得到优势方案的实验是失败的,有测试结果的实验都是有价值的。
  • A/B Test 是银弹,适用于所有场景。

总结

A/B Test 是优化方案迭代的有效方法之一,但是它并不是银弹。

A/B Test 并不简单,决定 A/B Test 是否成功的关键因素:

  • 合理的可衡量目标
  • 分流规则
  • 实验结果的准确性

A/B Test 的实施成本并不低,需要考虑实际收益决定是否使用。虽然大部分情况下并不能使用上 A/B Test,但是了解 A/B Test 的思维方法会大有益处。

转载请注明出处,欢迎关注我的公众号:亚普的技术轮子

亚普的技术轮子