DataTester 是火山引擎数智平台旗下产品,能基于先进的底层算法,提供科学分流能力和智能的统计引擎,支持多种复杂的 A/B 实验类型。DataTester 深度耦合推荐、广告、搜索、UI、产品功能等多种业务场景需求,为业务增长、转化、产品迭代、策略优化、运营提效等各个环节提供科学的决策依据,让业务真正做到数据驱动。

DataTester 经过抖音、今日头条等字节业务多年验证,截至 2022 年 8 月,已在字节跳动内部累计完成 150 万次 A/B 实验。此外也已经服务了美的、得到、凯叔讲故事等在内多家标杆客户,将成熟的“数据驱动增长”经验赋能给各行业。

点击跳转 火山引擎DataTester官网 了解更多

运行 A/B 测试的过程可能非常困难,如果做得不对,就会得到错误的结论。在 A/B 实验过程中,以下是常见的 8 个错误:

1.发生 AA 置信否定分流服务/统计

  • 利用 AA 实验来验证分流服务是否运转正常,但若发生 AA 置信,则确定是分流服务/数据统计出了问题么?

  • 检验假设的过程中,我们会犯第一类错误--我的策略实际没有用,但实验结果显示有用。在 95%的显著性水平下这类错误出现的概率是 5%,即开 100 次 AA 实验观测某个指标,可能会有 5 次得到显著的结果。这是由于不可避免的抽样误差所导致的。

  • 假设检验正是利用「抽样误差」来帮助我们量化犯错的概率,并将其控制在 5%以内的(95%显著性水平下)。

2.忽略过度曝光

  • 过度曝光:在开设实验时,大量并没有体验到实验版本功能的用户被计入到了实验指标的分母中,导致指标值被稀释(实验中涉及的功能可能“入口较深”,用户打开应用后其实并没有进入到这一功能,但仍然被算作了进组用户参与了指标计算)。

3.每次实验必开多重比较

  • 以 ABCD 实验为例:假设策略 A、B、C、D 间没有明显差异,我们对 ABCD 两两对比,共计有 6 种组合,需要进行 6 次对比。6 次对比中只要有一次犯错,我们的结论就算犯错,因此每个统计指标的犯错概率就变为了 1-(1-5%)^6=26.5%,远大于 5%。

  • ·假设检验在「多组择优」场景下,没法告诉你谁更好,犯错风险也更大。

4.为了显著而显著

  • 关注过多无关紧要的指标,只要一个指标显著,即认为策略有效。如果我们在实验中观测过多指标,众多无关紧要的指标中,碰巧出现显著是很正常的情况。实验者很可能被这种显著误导。

  • 对核心指标进行多维度下钻,指标在某一维度上呈现显著,即认为策略有效。

5.实验显著就立刻停止实验

实验没有显著差异的实验,在实验初期进行观测,指标也很有可能出现显著,这种情况被称为假阳性。

6.实验不显著就不停止实验

  • A/B 实验中,无论 A 策略与 B 策略多么相像,他们终归是不一样的。理论上来说,只要样本足够多(比如无穷多时),实验组和对照组策略的任何一点差异都会致使实验结果形成统计显著。

  • 我们在实验中,应该遵从实验设计,如果实验已经在预期运行周期内达到所需的样本量,但目标指标变化仍然不显著,那这个实验没有必要继续运行了,停止实验换个方向继续尝试。

7.以为策略上线后提升值应与实验相同

  • 假设我现在开了一个实验来优化商品页面的用户购买率,其中采用了新策略 B 的实验组,购买率提升了为 3%,且结论置信,这是不是代表我的策略 B 上线之后,该商品页面的购买率就一定能提升 3%呢?显然不是。如果你想知道新策略上线后,指标可能发生的变化情况可以参考置信区间

8.完全地为数据至上

  • 倡导用数据说话,不主观臆断,在评估实验时不仅要看指标的提升量,还要结合置信度来判断数据的可靠程度。

  • 部分情况下,数据仅能传达给我们片面的信息,还需要我们基于数据背后的事实进行因果推断,以保证数据论据与要证明的论点之间是具有合理的因果关系的,这样数据才是我们论证观点的有效利器。

  • 在实验中,我们需要根据自身的业务判断,合理设计实验,明确预期:当 A/B 实验结果违背我们的业务直觉时,应当保持怀疑。

对不起,你做的 A/B 实验都是错的——火山引擎 DataTester 科普的更多相关文章

  1. 火山引擎 DataTester:让企业“无代码”也能用起来的 A/B 实验平台

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 当数字化变革方兴未艾,无代码正受到前所未有的关注.Salesforce 的数据显示,52%的 IT 部门表示,公司 ...

  2. ubuntu下做柯老师lab19-lab20实验问题总结

    前两篇文章告诉了大家如何将无线封包传输遗失模型和myevalvid添加到ns2.35中,已经成功验证了,这个没有问题.但是本人在做lab19和lab20实验时又发现了一些关于myevalvid工具集的 ...

  3. 注意,你所做的 A/B 实验,可能是错的!

    对于 A/B 实验原理认知的缺失,致使许多企业在业务增长的道路上始终在操作一批"错误的 A/B 实验".这些实验并不能指导产品的优化和迭代,甚至有可能与我们的初衷背道而驰,导致&q ...

  4. 想做长期的 AB 实验?快来看看这些坑你踩了没

    作者:江颢 1.什么是长期的 AB 实验 大部分情况下,我们做的 AB 实验都是短期的,一到两周或者一个月之内的,通过分析这段时期内测得的实验效应得出实验结论,并最终进行推广. 长期实验即运行时间达数 ...

  5. 如何又快又好实现 Catalog 系统搜索能力?火山引擎 DataLeap 这样做

      摘要 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品,帮助用户快速完成数据集成.开发.运维.治理.资产.安全等全套数据中台建设,降低工作成本和数据维护成本.挖掘数据价 ...

  6. GET和POST有什么区别?及为什么网上的多数答案都是错的

    如果有人问你,GET和POST,有什么区别?你会如何回答? 最普遍的答案 回来之后寻思了很久,他到底是想问我什么?我一直就觉得GET和POST没有什么除了语义之外的区别,自打我开始学习Web编程开始就 ...

  7. 号外,号外 -几乎所有的binary search和mergesort都有错

    号外,号外 -几乎所有的binary search和mergesort都有错 这是Joshua Bloch(Effective Java的作者)在google blog上发的帖子.在说这个帖子之前,不 ...

  8. Idea破解办法+idea免费生成注册码+jsp属性选择器+注解什么的都报错

    Idea破解办法: http://blog.csdn.net/bitcarmanlee/article/details/54951589 idea免费生成注册码: http://idea.iteblo ...

  9. 【EWM系列】SAP EWM模块-修改任何内容都报错

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[EWM系列]SAP EWM模块-修改任何内容都 ...

  10. SAP 对HU做转库操作,系统报错 - 系统状态HUAS是活动的 - 分析

    SAP 对HU做转库操作,系统报错 - 系统状态HUAS是活动的 - 分析 近日收到业务团队报的问题,说是对某个HU做转库时候,系统报错.如下图示: HU里有是三个序列号, 1191111034011 ...

随机推荐

  1. js正则表达式把页面中的p标签全部换成div

    documentdocument.body.innerHTML = document.body.innerHTML.replace(/<[\/]?(p)(:?\s+(:?class|style) ...

  2. js朗读实现

    js 利用window实现朗读功能 ` 发音

  3. 线性表应用:魔术师发牌与拉丁(Latin)方阵(循环链表)

    题目描述: 有黑桃1到13,13张牌,成某种顺序,魔术师可以从1开始数 ,数1,背面朝上的13张牌第一张就是1,然后放到桌面上,然后从1开始数,把第一张放在所有牌下面,数到2,翻开,就是2,再放到桌子 ...

  4. .NET中有多少种定时器

    .NET中至少有6种定时器,每一种定时器都有它的用途和特点.根据定时器的应用场景,可以分为UI相关的定时器和UI无关的定时器.本文将简单介绍这6种定时器的基本用法和特点. UI定时器 .NET中的UI ...

  5. 【外包杯】【报错】微信小程序 “[app.json 文件内容错误]app.json:未找到[“pages”][0]对应 pages/xx/xx.wxml(或其他)文件” 报错 的简单解决方案(已解决)

    问题的解决方案 删除components目录下的uni-link文件夹

  6. SpringCore 完整学习教程1,入门级别

    1. SpringApplication SpringApplication类提供了一种方便的方式来引导从main()方法启动的Spring应用程序.在很多情况下,你可以委托给静态的SpringApp ...

  7. C++ Qt开发:PushButton按钮组件

    Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QPushBu ...

  8. 如何编写一个 Pulsar Broker Interceptor 插件

    背景 之前写过一篇文章 VictoriaLogs:一款超低占用的 ElasticSearch 替代方案讲到了我们使用 Victorialogs 来存储 Pulsar 消息队列的消息 trace 信息. ...

  9. [USACO2022OPEN S] Subset Equality S

    [USACO22OPEN] 题目描述 奶牛们正在尝试一种相互交换编码信息的新方法,她们在相关的字母中混入不相关的字母,使信息难以解码. 奶牛们传输两个字符串 \(s\) 和 \(t\),每个字符串的长 ...

  10. 【论文阅读】HTTP 流量和恶意 URL 的异常检测

    Part 1关于论文 基本信息 题目:HTTP 流量和恶意 URL 的异常检测 源码:sec2vec源代码 摘要 在本文中,我们将展示如何利用自然语言处理(NLP)中已知 的方法来检测 HTTP 请求 ...