2019-11-29 20:51:46

作者:Romain AYRES

编译:ronghuaiyang

导读

这篇博客文章的目的不是告诉你在运行A/B测试时应该做什么,而是告诉你不应该做什么

“没有数据,你只是一个有观点的人。”

这个著名的W. Edwards Deming引用说明了A/B测试对于做出好的商业决策至关重要。在ManoMano,我们向数百万用户展示数以百万计的DIY和园艺产品,并每天运行几十个A/B测试,以改善我们网站上的客户体验。

产品排名算法A/B测试示例,garden sheds页面

运行A/B测试和解释结果可能非常困难,如果方法错误,可能会导致错误的结论。这篇博客文章的目的不是告诉你在运行A/B测试时应该做什么,而是告诉你不应该做什么。下面是在A/B测试结果时都会犯的10个常见错误。

1 — 当只有一个局部受到影响时,观察的是整个分布

例如:你想要测试搜索引擎的相关性,但是在分析A/B测试结果时,你查看了整个人群,而不是只使用搜索引擎的客户。虽然这在科学上没有错,但达到统计显著性需要更长的时间,因为你在分析数据中添加了一些噪声:

要点1:为了更快地达到统计显著性,只观察与测试功能交互过的用户的结果(这里是搜索引擎)。

2 — 在没有任何业务直觉的情况下跑测试

这个错误的一种情况时跑具有太多变量(A/B/C/…/n)的测试。这是一个关于多重比较问题的例子。因此,商业直觉对于决定进行哪种AB测试至关重要。

要点2:使用你的直觉(或者更好地做用户研究)来决定启动哪个A/B测试。

3 — 对分布进行分割以达到统计学显著性

这是多重比较问题的另一个例子:“我的A/B测试不重要,所以我将在设备上按国家分割数据,以获得显著性结果”。在做测试后的分割时,你必须非常小心。的确,你比较的segments越多,得到假阳性结果的可能性就越大。

对于在设备上按国家分割示例,我们在ManoMano有n=15个细分市场(5个国家×3个设备:法国/移动、法国/台式机、西班牙/平板电脑等)。让我们计算一下在这些分割中至少有一个显著结果的概率:

我们有超过50%的机会在我们的细分人群中得到至少一个显著的结果,完全是由于偶然。因此,从测试后的分割中得出结论并采取行动是非常危险的。尽管存在一些技术来缓解这个问题,比如Bonferroni correction。

要点3:不要为了达到统计意义而分割你的人群。

4 — 查看好几个指标以达到统计上显著性

关于多重比较问题的另一个例子是:“*我的A/B测试没有显示在转化率、平均购物篮和弹跳率上有显著的结果。但这对每个篮子里的产品数量来说意义重大!”如果你查看足够多的度量标准,你最终会发现一个显示为显著的度量标准,但这是由于偶然:

A/B测试结果显示

要点4: 坚持以测试目的为标注的度量方式。

5 — 达到统计学显著性时停止测试

统计显著性不能告诉你什么时候应该停止测试。在停止测试前,你需要等待计算出的样本量达到。你还可以模拟一个A/A测试,以查看在测试早期达到统计显著性的频率是相当高的,即使测试最后并没有达到显著性:

根据样本数量,观察A/A测试实验的显著性

要点5: 即使你的测试在具有统计显著性,也要保持测试的有效性,直到测试完成为止。

6 — 在达到统计显著性之前,保持测试有效

再次强调,统计显著性不能告诉你何时可以停止测试或继续测试。你不应该等待一个测试具有显著性,因为它可能永远不会发生,特别是如果你已经达到所需的样本量,这意味着你的测试有了一个足够的统计能力的结论。

要点6: 一旦达到所需的样本量,就停止测试。

7 — 把(1 - p值)当成B优于A的概率

这是一个很常见的错误。P-value为2%并不意味着B有98%的几率比a好,这一假设在数学上是错误的,因为它还依赖于基本比率,这是测试执行上有积极的效果的比例(只有上帝知道这个数!)。这个数字反映了你的商业直觉水平。

假设我们是上帝,我们知道ManoMano的基本比率是20%,这意味着20%的测试结果是positive的:

80% 阳性检验(灰色),拒绝原假设(统计幂):

5% 阴性检验(白色),拒绝原假设(显著性阈值):

结论:给定80%的统计能力、5%的显著性阈值和20%的基准率,当一个测试被认为是阳性时(p值< 0.05),我们只有16 /(16+4)= 80%的机会它实际上是阳性的,而不是95%。

在这种配置中(统计能力=80%,显著性阈值=5%),并且知道你的A/B测试结果是显著的,下面是你的测试实际上是阳性的一些概率,具体取决于基本比率:

要点7:(1 - p-value)不是测试结果为positive的概率。

8 — 认为观测到的增量是特征带来的增量

测试中观察到的增量允许你计算统计显著性,但是将观察到的增量视为特征带来的实际增量是错误的,因为这通常需要更多的用户或会话。

如果仅仅说明B比A好是不够的,需要选择使用置信区间而不是原始增量。为了说明这一点,我们举一个A/B测试的例子:

p值为0.014,在显著性水平为95%的情况下,A/B检验为阳性,说明变异组显著优于对照组。观测到的转化率相对增量很容易计算:

但是,将这个观察到的增量看作特征带来的实际增量是不正确的。你应该使用标准误差计算每组的置信区间:

p是观察到的是这个组的转化率,n采样池样本量,Zα相对应的z值置信水平α(在我们的例子中95%)。

利用该公式,最终可以计算出两组95%置信区间(CI)的转化率:

也可以计算相对增量(PctDiff)的置信区间,但它更复杂。

要点8:当你的测试结果显著性为阳性时,请使用置信区间,而不是原始增量。

9 — 当A/B测试结果与你的直觉相反时,忽略它

如果你还没有准备好使用获胜的版本更新你的产品,那么启动A/B测试是没有意义的,而只是提供你的确认偏差。在选择测试内容时,直觉是至关重要的,但它不应该与A/B测试的无偏结果相抵触。

要点9: 在测试前与涉众确定阈值和相关操作。

10 — 忘记检查你的A/B测试系统是否可靠

为了保证你的A/B测试结果的可靠性,你的A/B测试系统必须经过校准并正常工作。确保这种可靠性的一种方法是持续进行A/A测试,并检查两组人群之间是否存在显著差异:

ManoMano的连续A/A测试允许我们快速检测8月期间遇到的缓存错误,该错误使我们在8月20日到8月22日之间运行的所有测试无效。

要点10: 持续进行A/A测试以发现可靠性问题。

总结

正如你所看到的,在分析A/B测试结果时出错的风险非常高,而在测试之后做出的决策对你的公司非常重要。这就是为什么你应该对传达给你的A/B测试结果持非常怀疑的态度,特别是当这些测试结果来自于对获得积极结果有个人兴趣的人(例如,想要向你推销一些东西的人)。

英文原文:https://medium.com/manomano-tech/a-b-testing-10-common-mistakes-we-all-make-97a5030f1d44

A/B测试中我们都会犯的十个常见错误相关推荐

  1. html mebed高度问题,高中英语中最易犯的100个错误,看看你有多少?

    原标题:高中英语中最易犯的100个错误,看看你有多少? 同学们在考试的过程当中经常暴露一些弱点.犯一些错误.今天老师对大家英语考试中的常见错误按语法类别进行归纳,并举以实例,希望同学们能够由此发现自己 ...

  2. 数据挖掘中最容易犯的几个错误,你知道吗?

    按照Elder博士的总结,这10大易犯错误包括: 0. 缺乏数据(Lack Data) 1. 太关注训练(Focus on Training) 2. 只依赖一项技术(Rely on One Techn ...

  3. 每个python初学者都会犯的变量命名错误

    关于python的命名规范,我后续会专门写一篇文章,本文只讨论初学者都会犯的一个变量命名错误,避免这个错误,就可以避免很多稀奇古怪的问题 1.变量命名要避开python内置函数名称 初学python, ...

  4. 安全维护上最不应该犯的十个基本错误

    下面就是我曾经看到过的十个安全错误的列表.他们不仅常见,而且是最最基本的,只要有一点点的安全常识,就应该知道不应该犯这么初级的错误. 1. 在没有加密的电子邮件中发送敏感信息:绝对不要在没有加密的电子 ...

  5. 盘点:大多数电商运营都会犯的5大错误

    如果说成功有一个「性格特质」排行榜的话,勤奋.好学肯定榜上有名.而在电商行业,这两个优点几乎对所有卖家适用. 电商行业的人,频繁来往于各种论坛.讲座.培训.社群,真的可谓非常「好学」,至于「勤奋」,有 ...

  6. SearchHit转成java对象_Java开发中最常犯的10个错误,你中招了吗?

    http://www.programcreek.com/2014/05/top-10-mistakes-java-developers-make/ 阅读目录 Array转ArrayList 判断一个数 ...

  7. Java开发中最常犯的10个错误,你中招了吗?

    http://www.programcreek.com/2014/05/top-10-mistakes-java-developers-make/ 阅读目录 Array转ArrayList 判断一个数 ...

  8. 编程面试中的十个常见错误

    身为程序员,你肯定知道和其他技术工作面试比起来,编程工作的面试流程略有不同. 这篇文章会就你在编程面试中应当避免的10个问题展开讨论. 1.从未在纸上或白板上写过代码 这是求职者最容易犯的大错之一.绝 ...

  9. linux中源码编译安装mysql常见错误

    一) #./configure --prefix=/usr/local/mysql-5.1.54 (mysql指定路径安装报错:) 如下: checking for termcap functions ...

最新文章

  1. 初窥runtime的作用
  2. 欲取代CNN的Capsule Network究竟是什么来头?它能为AI界带来革命性转折么?
  3. 喜讯不断,BCH又迎来两个代币发行方案
  4. jq 控制td只显示一行_9月22日现货黄金、白银TD、黄金TD、纸黄金、纸白银价格走势分析...
  5. VTK:选择可见点用法实战
  6. [转]gcc生成动态库静态库
  7. c语言赋值运算符 amp amp 怎么读,重载赋值运算符 amp;amp; 对象
  8. 另类网页设计:30个复古怀旧风格的网站作品
  9. 解决log4j:WARN No appenders could be found for logger
  10. git实现ssh免密上传远程gitlab仓库
  11. python语言程序设计实践教程陈东_20193323实验三《Python程序设计》实验报告
  12. php十六进制转为ascii,16进制转换成ascii_16进制转ascii码转换工具_16进制转ascii
  13. 2020蚂蚁集团招股说明书.pdf
  14. LoadRunner-登陆web tours订票网站,预订一张机票后退出-1
  15. 38掌握分布式存储系统 GlusterFS 的基本用法,包括卷管理、数据复制
  16. 达观数据:Selenium使用技巧与机器人流程自动化实战
  17. Android如何避免抓包
  18. CentOS集群上安装Ganglia-3.6.1监控
  19. Python错误之 SyntaxError: invalid syntax的解决方法总结
  20. Spring Boot 2.3.5.RELEASE正式升级,SpringBoot新版本发布

热门文章

  1. GBDT Xgboost LightGBM区别与联系
  2. CV绿色的上限和下限
  3. c语言奇偶判断程序,求助 奇偶校验的C语言编程
  4. 图灵2010.07书讯
  5. 《写给大家看的Web设计书(第3版)》即将上市
  6. 通过卫星图像预测区域内降雨范围和降雨量
  7. 神经风格迁移模型综述
  8. 年终收藏!一文看尽2020年度最出圈AI论文合集
  9. 独家 | 人工智能先锋人物杰夫·辛顿说:“深度学习将无所不能”
  10. 研究学者、医师与产业投资者齐聚一堂,将碰撞出何种火花?