写点什么

社交巨头 Twitter 是如何进行 A/B 测试的?

  • 2020 年 4 月 05 日
  • 本文字数:2564 字

    阅读完需:约 8 分钟

社交巨头Twitter是如何进行A/B测试的?

A /B 测试曾在多个领域产生深远的影响,其中包括医药、农业、制造业和广告。 在软件开发中, A/B 测试实验提供了一个有价值的方式来评估新特性对客户行为的影响。本文将基于 Twitter 的 A/B 测试现状为大家介绍为什么进行 A/B 测试和如何避免其中的陷阱。



实验是 Twitter 产品开发周期的核心。这种实验文化可能是因为 Twitter 对工具、研究和培训进行了大量的投资,以确保特性团队能够对他们的想法进行无缝、严格的测试和验证。


Twitter 实验的规模无论数量还是种类都是庞大的——从细微的 UI/UX 变更,到新特性,到机器学习模型的改进。我们喜欢将实验看作是是一个无尽的学习环。



  1. 建立假设:提出新特性想法或者为现有特性提出改进建议。

  2. 定义成功指标:评估“机会大小”——受该变更影响的用户数量。正式定义实验成功和失败的指标;考虑可接受的折衷方案。

  3. 检验假设:实现拟定的变更,”检测“相应的日志,并执行合理性检查以确保实验正确配置。

  4. 学习:检查实验中收集的数据,吸取其中的经验教训,并与其他 Twitter 团队共享。

  5. 发布:收集完数据后,判断实验是否验证了假设,并决定发布或者不发布。

  6. 建立另一个假设:结合实验中的新想法,为更多的改进建立更多的假设。


A/B 测试、决策制定和创新

Twitter 的产品检测和实验团队对实验哲学进行了大量的思考。A/B 测试可以带来很多好处,但是它也有很多众所周知的、容易陷入的陷阱。它的结果往往是出人意料、违反直觉的。我们如何避免这种陷阱?什么时候我们应该建议进行 A/B 测试,从而试验特性或者拟定的变更?在决策制定过程中我们如何保持敏捷,且在承受重大风险的时候仍能保持严谨?


测试的好处以及增量测试

大部分实验只能带来个位数百分比的改进,或者甚至是分数百分比。因此,有些观点认为,这有什么意义呢?为什么不从事一些更有影响力、更有革命性的事情呢?


实际上。如果存在实验能够提升指标,那么到目前为止,大多数实验都在以最低限度的方式提升着指标。如果某个实验能够为大部分用户将某个核心指标提升数个百分点就被视为一种非凡的成功。


这与 A/B 测试的基本原理无关。这是因为一个成熟的产品很难通过大幅度改进指标的方式改变。很多人认为的好想法根本没有带来一点点的改进:人类原来极其不善于预测什么可行。大多数时候,不理想的 A/B 测试结果让我们能够及早发现:看上去不错的想法其实可能不怎么样。因此我们更愿意尽可能快的获得坏消息,重新回到绘图板;这就是我们实验的原因。



A/B 测试是一种可以确保好想法不会夭折的方法,使好的想法有机会全面充分开发。当我们真正的信任某个想法,而初步实验结果不能满足我们的期望的时候,我们可以对产品做进一步改进,持续改进直到符合期望可以发布给数百万的人使用。


在我们从事各种各样原型开发的时候,快速迭代和衡量拟定的变更带来的影响让我们团队能够及早将隐式用户反馈吸收进产品中。


第一种情况,我们可以发布一个变更,研究哪些能够产生改进,哪些不能,接着为能够进一步改进产品的变更建立假设,然后发布变更,周而复始直到拥有能够推送给更广泛用户的变更。


有些人可能认为这种增量变更效率太低。当然,发布“大创意”听起来远比小改进好太多了。然而仔细想一下,将许多小变更叠加起来就能产生复合效果。回避增量变更的产品改进方法很大程度上不是一个好方针。一个好的金融投资组合要能够平衡——尽管回报不那么高但没有风险赌注和高风险、高收益赌注。在这方面产品组合管理没有什么不同。


第二种情况,另一类变更:主要的新特性在内部构建过程中通过用户研究进行测试,但是考虑市场战略原因,在特定时刻整合成新版 B 发布给所有的用户。作为一个组织,我们在自认为对产品和用户都有利的时候做出这个决定。我们相信尽管增量变更可能带来更好的初始版本 A,使更多用户尝试和使用,但是我们能够从新版 B 中获得更多收益。这是产品负责人需要权衡取舍的。那么当这么一个新版 B 发布后,我们要对其增量变更进行 A/B 测试吗?当然啦!随着想法的成熟,我们使用完善的科学原理指导它们的演化——并且实验是该过程的关键部分。


实验的可靠性

既然我们已经对运行实验进行了案例说明,接着让我们来讨论怎么做可以避免陷阱。实验的配置和分析是复杂的。即使是正常的人类行为也很容易引起对结果的偏差和误解。这里有几种实践方法,可以降低风险。


需求假设

通常实验工具能够揭示大量数据,常常允许实验者设计自定义的指标来衡量变更的影响。但这可能触发 A/B 测试中最隐匿的陷阱之一:“cherry-picking”——从许多数据点中选择仅仅支持你的假设的指标,或者看到数据后调整假设,从而让它匹配实验结果。在 Twitter,一个实验收集上百个指标是很常见的,这些指标可以分解成大量的维度(用户属性、设备类型、国家等等),生成数以千计的观测值——如果你希望拟合使其适应任何故事,就需要从中挑选。


我们指导实验者远离 cherry-picking 的一个方法是,要求他们 在配置阶段明确指定希望改进的指标。实验者愿意跟踪多少指标都可以,但是只有少数指标可以用这种方式明确标记。然后工具在结果页面突出显示这些指标。实验者可以自由探索所有其它已经被收集的数据,建立新的假设,但是最初的假设应该是固定的,并且要容易检查。


实验过程

无论工具有多好,一套配置不完善的实验仍然会交付不理想的结果。在 Twitter,我们已经对创建实验过程进行了投资,从而提高实验成功、正确运行的概率。在这个过程中大多数步骤是可选的——但是我们发现,使其可用和详细记录能够大大降低重新运行实验的时间损失从而收集更多数据,并降低等待 App Store 发布周期的时间损失,等等。


所有的实验者都被要求记录他们的实验。你在改变什么?你期望的结果是什么?期望的“受众规模”(将要看到这一特性的用户比例)?收集这些数据不仅保证了实验者考虑过这些问题,而且让我们能够建立一个制度性学习的资料库——一份已经实验的正式记录和实验结果,包括负面结果。我们可以用此提醒后面的实验。


实验培训

确保实验者提防陷阱最有效的方法之一就是培训他们。Twitter 数据科学家会开设多门实验和统计直觉课程,其中统计直觉是所有新工程师加入公司后的前几周都要参加的课程。目标是使工程师、PM、EM 和其它一些角色熟悉实验过程、警告、陷阱和最佳实践。增强实验品质和陷阱的意识有助于我们避免在可避免的错误和误解上浪费时间,让人们更快洞察和改进节奏和质量。


2020 年 4 月 05 日 16:54348

评论

发布
暂无评论
发现更多内容

2021 年要了解的 34 种 JavaScript 简写优化技术

LeanCloud

JavaScript 面试 大前端

拍乐云推出“实时标注”,助力少儿编程、在线金融等行业场景实现高效互动

拍乐云Pano

音视频 在线教育 互动白板 实时标注 在线金融

打卡学习 VBA 和 PYTHON week01-02

小怪兽

3月日更 【IT蜗壳教学】 【自我错误点总结】

白话讲解,拜占庭将军问题

架构精进之路

分布式 算法 3月日更

安全高可用通信背后的 MySQL 优化实践

融云 RongCloud

高质量、高并发的实时通信架构设计与探索

融云 RongCloud

炸了,炸了!阿里P9纯手打Java面试小抄(21版)在GitHub上已获80万star

Java架构之路

Java 程序员 架构 面试 编程语言

xshell不能输入命令字符了?

Geek_6370d5

xshell 错误集锦

【得物技术】TDengine在得物的落地应用

得物技术

数据库 tdengine 数据 sentinel 得物技术

2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)

比伯

Java 编程 架构 面试 程序人生

【前端面试题】关于一些js的一些面试题(金融行业),我和面试官扯了三个小时

孙叫兽

JavaScript 大前端 金融 笔试题

看了上百份面经,发现每次面试的问题都逃不过这几方面

yes

面试

我看 JAVA 之 引用类型(Reference)

awen

Java ThreadLocal Reference

2021金三银四春招来袭,掌握这份成长宝典,offer岂不是随便拿?

Java架构之路

Java 程序员 架构 面试 编程语言

EGG Network公链技术创新,EFTalk打造高效全能公链

币圈那点事

区块链

寻找被遗忘的勇气(十九)

Changing Lin

3月日更

FFmpeg入门篇

Changing Lin

ffmpeg media

冰河公开了其总结的一项重要的编程技能!

冰河

Java 正则表达式 程序员

冲击大厂!阿里P9纯手打Java面试小抄(21版)在GitHub上已获80万star

Java 程序员 面试

GO训练营第11周——DNS&CDN&多活架构

Glowry

产品调研报告

Ashley.

如何批量下载YouTube视频到本地

科技猫

软件 音视频 经验分享 资源分享 工具分享

GO训练营第12、13周—— runtime

Glowry

电子门锁没电的解决办法

孙叫兽

生活 程序人生 电子锁

全票通过!微众开源项目EventMesh进入Apache孵化器

微众开源

Apache 开源 Event 事件网格 eventmesh

堪称完美!中国Java之父纯手打,阿里首发:多线程与高并发

Java架构之路

Java 程序员 架构 面试 编程语言

标准引领 浪潮工业互联网助力澳门质量品牌国际认证联盟成立

浪潮云

工业互联网

如何在 Spring 生态中玩转 RocketMQ?

阿里巴巴云原生

Java Serverless 微服务 云原生 中间件

微信小程序开发:如何快速实现添加一条分割线的项目需求

三掌柜

微信小程序 3月日更

社交巨头Twitter是如何进行A/B测试的?_文化 & 方法_云测数据_InfoQ精选文章