Netflix 是如何做决策的? | 2. 什么是 A/B 测试

简介: Netflix 是如何做决策的? | 2. 什么是 A/B 测试

这是 Netflix 关于实验和决策的系列文章,系统介绍了实验对于 Netflix 的重要性,实验的最主要工具--A/B 测试,数据科学和文化在实验与决策过程中的重要性等。整个系列共七篇文章,这是第二篇。原文:What is an A/B Test?[1]


1. Netflix的决策制定

  1. 什么是 A/B 测试?👈
  2. A/B测试结果之假阳性和显著性统计
  3. A/B测试结果之假阴性和统计功效
  4. 在做决定时建立信心
  5. 实验是数据科学的主要关注点
  6. 学习的文化


这是关于 Netflix 如何基于 A/B 测试来做出决策并不断创新产品的系列文章的第二篇。参见第1部分:Netflix的决策制定。随后的文章将详细介绍 A/B 测试的统计数据、Netflix 的实验、Netflix 如何投资基础设施来支持和扩大实验、以及 Netflix 实验文化的重要性。


A/B 测试是一个简单的控制实验。打个比方,假设我们正在考虑新的产品体验,想知道如果把所有的方框图片都颠倒过来显示在电视 UI 上,是不是对会员的体验更好一点。


image.png

图 1:如何判断产品体验 B(带有上下颠倒的方框图案)对我们的会员来说是否是更好的体验?


为了进行实验,我们选取一个成员的子集(通常是一个简单的随机样本[2]),然后随机分配[3]将样本平均分成两组。“A 组”,通常被称为“控制组”,继续获得基本的 Netflix 用户界面体验,而“B 组”,通常被称为“测试组”,根据一个关于改善用户体验的特定假设(下文将详细介绍这些假设),获得不同的体验。在这里,B 组收到了上下颠倒的方框图片。


等一段时间,然后比较 A 组和 B 组的各种度量值,有些度量值是特定于给定假设的。比如在 UI 实验中,我们着眼于新功能不同变体的用户粘性。而如果作为一项旨在在搜索体验中提供更多相关结果的实验,我们会衡量用户是否通过搜索发现了更多可观看的内容。在其他类型的实验中,我们可能会关注更多的技术指标,比如应用程序加载的时间,或者在不同网络条件下能够提供的视频质量。


image.png

图 2:简单的 A/B 测试。我们用随机分配的方法将 Netflix 成员随机分成两组,“A 组”接受目前的产品体验,而“B 组”接受一些我们认为是对 Netflix 体验的改进的改变。在这里,“B”组获得了“颠倒”的产品体验。然后我们比较两组之间的指标。重要的是,随机分配确保了两组之间的其他一切保持不变。


在许多实验中(包括颠倒方框图片的例子),我们需要仔细思考参数告诉了我们什么。假设我们着眼于点击率,即衡量每一次用户体验中点击某款游戏的用户比例。那么作为衡量新 UI 是否成功的指标,这本身可能是一个误导,因为会员可能只是为了更容易阅读产品体验而点击标题。在这种情况下,我们可能还想评估有多少成员随后没有继续浏览,而是选择了离开。


在所有情况下,我们也需要着眼于更一般的指标,旨在捕捉 Netflix 给我们的会员带来的快乐和满足。这些指标包括对 Netflix 用户参与度的衡量:我们正在测试的想法是否会帮助用户在某个夜晚选择 Netflix 作为他们放松娱乐的方式?


这也涉及到很多统计数据——多大的差异被认为是显著的?在一个测试中,我们需要多少成员来检测一个给定大小的效应?如何最有效的分析数据?我们将在以后的文章中讨论其中的一些细节,重点是要关注高层次的直觉。


保持其他条件不变


因为我们使用随机分配的方法创建了控制组(“A”)和测试组(“B”),所以可以确保两组中的个体平均而言在所有可能对测试有意义的维度上都是平衡的。例如,随机分配可以确保两组成员的平均会员时长没有显著差异,内容偏好、主要语言选择等也没有显著差异。两组间唯一的差异是我们正在测试的新体验,从而确保我们对新体验影响的估计不存在任何偏差。


为了理解这有多重要,让我们考虑另一种做出决定的方式:我们可以向所有 Netflix 成员推出新的上下颠倒的方框体验,看看我们的某个指标是否会有很大的变化。如果出现了积极的变化,或者没有任何有意义的变化的证据,我们将保留新的体验,如果有负面变化的证据,我们将回到之前的产品体验。


假设我们这样做了,并在某个月的 16 号打开了颠倒体验的开关。如果收集到以下数据,你会怎么做?


image.png

图 3:关于第 16 天上下颠倒方框产品体验发布的假设数据


数据看起来很不错,我们发布了一款新的产品体验,会员粘性也大大提高了!但如果你有了这些数据,再加上产品 B 把所有 UI 的框图都颠倒了,新产品的体验真的对会员有好处吗?你对此真的有多大信心呢?


我们是否真的知道新产品体验是导致用户粘性增加的原因?还有其他可能的解释吗?


如果你知道就在(假设的)上下颠倒产品体验推出的同一天,Netflix 发布了新的热门剧集,比如新一季的《怪奇物语》(Stranger Things)[4]或《行尸走肉》(Bridgerton)[5],或者《死亡军团》(Army of the Dead)[6]这样的热门电影,你会怎么想?现在我们对用户粘性的增加有了不止一种可能的解释:可能是新的产品体验,可能是社交媒体上的热门大片,也可能两者兼而有之,也可能是别的什么东西。关键是,我们不知道新产品体验是否导致了用户粘性的增加。


如果我们用上下颠倒产品体验进行 A/B 测试,让一组成员收到当前产品(“A”),另一组收到上下颠倒产品(“B”),并收集以下数据:

image.png

图 4:新产品体验的 A/B 测试的假设数据


在这种情况下,我们得出了一个不同的结论:上下颠倒产品的用户粘性普遍较低(这并不奇怪!),而这两组用户粘性都随着大片的发行而增加。


A/B 测试让我们能够做出因果陈述。我们将会员随机分配到 A 组和 B 组,两个组之间的其他一切都保持不变,只将上下颠倒的产品体验引入到 B 组,因此,我们很有可能得出这样的结论(更多细节将在下次讨论):颠倒产品导致了用户参与度的降低。


这是个极端假设的例子,但总的来说,总有一些事情是我们无法控制的。如果我们向所有人呈现一种体验,并只是在改变之前和之后测量一个指标,那么这两个时间段之间就会存在相关差异,从而阻止我们做出因果结论。也许是一部新剧集,也许是一个新的产品合作伙伴关系,让更多的用户可以享受 Netflix,总有一些我们不知道的事情。运行 A/B 测试,在可能的情况下,让我们能够证实因果关系,并自信的对产品进行更改,因为我们的会员已经通过他们的行动投了票。


一切都始于一个想法


A/B 测试开始于一个想法——一些 UI 的改变,帮助会员发现内容的个性化系统,新会员的注册流程,或任何其他想法,基于我们在 Netflix 的经验,我们认为这些想法有可能对成员产生积极的效果。我们测试的一些想法是渐进性的创新,比如改进出现在 Netflix 产品中的文本,有些则更有野心,比如 Netflix 现在在 UI 上显示的“Top 10”列表的测试。


就像 Netflix 在全球范围内推出的所有创新一样,Top10 最初只是一个想法,后来变成了一个可验证的假设。这里的核心理念是,在每个国家都很受欢迎的节目将从两方面让我们的会员受益。首先,通过呈现热门节目,可以帮助会员分享感受,并通过讨论热门节目与他人建立联系。其次,可以通过满足人们参与共享对话的内在欲望来帮助用户选择一些很棒的内容。


image.png

图 5:Web UI 上 Top 10 体验示例


接下来,我们将这个想法转化为一个可测试的假设,即“如果我们改变 X,它将以一种能够提高度量 Y 的方式改善会员体验。”对于 Top 10 的例子,假设是:“向用户展示 Top 10 的体验将帮助他们找到值得观看的内容,增加用户的乐趣和满意度。”这个测试(和许多其他测试)的主要决策指标是衡量用户对 Netflix 的参与度:我们正在测试的想法是否会帮助用户在某个特定的夜晚选择 Netflix 作为他们的娱乐方式?研究表明,从长远来看,这个指标(细节省略)与会员续订的概率是相关的。我们也在其他领域运行测试,如注册页面体验或服务器端基础设施,主要决策指标有所不同,但原理是一样的:在测试期间,我们需要衡量是否给长期会员提供了更多价值?


除了测试的主要决策指标,还需要考虑一些次要指标,以及它们将如何受到我们正在测试的产品特性的影响。这里的目标是阐明因果链,从用户行为将如何响应新产品体验到我们主要决策指标的变化。


明确产品变化和主要决策指标变化之间的因果链,并监控这条链上的次要指标,有助于我们建立信心,相信主要指标的任何变化都是我们假设的因果链的结果,而不是新功能带来的意外结果(或者是错误的结果——在后面的文章中会有更多讨论)。对于 Top 10 的测试,用户粘性是我们的主要决策指标——但我们也会关注出现在 Top 10 列表中的那些节目的观看率,通过这一列表产生的观看率与界面其他部分产生的观看率,等等。如果 Top 10 的体验真的对成员有好处,那么我们就会期待测试组能够增加出现在 Top 10 列表中的节目的观看量,并获得更强的粘性。


最后,因为并非所有我们所测试的想法都是正确的(有时候新功能也会有漏洞!),我们也会将指标视为“护栏”。我们的目标是限制任何不良后果,并确保新产品体验不会对会员体验产生意想不到的影响。例如,我们可以比较控制组和测试组的客服联系,以检查新功能是否增加了对客服的联系率,这可能表明会员的困惑或不满。


总结


这篇文章的重点是建立 A/B 测试的基础,了解为什么运行 A/B 测试比推出功能更重要,在做出改变之前和之后查看指标,以及如何将一个想法变成一个可测试的假设。接下来我们将讨论在比较测试组和控制组的指标时所使用的基本统计概念。



References:

[1] What is an A/B Test? https://netflixtechblog.com/what-is-an-a-b-test-b08cc1b57962

[2] Simple Random Sampling:  https://en.wikipedia.org/wiki/Sampling_(statistics)#Simple_random_sampling

[3] Random Assignment: https://en.wikipedia.org/wiki/Random_assignment

[4] Stranger Things: https://www.netflix.com/title/80057281

[5] Bridgerton: https://www.netflix.com/title/80232398

[6] Army of the Dead: https://www.netflix.com/title/81046394


目录
相关文章
|
26天前
|
机器学习/深度学习 人工智能 算法
自动化测试中AI驱动的决策框架
【5月更文挑战第28天】 本文探讨了在自动化软件测试过程中,如何利用人工智能(AI)技术来优化测试用例的选择和执行。通过引入一个基于机器学习算法的智能决策框架,我们可以提高测试的效率和有效性,同时减少冗余和不必要的测试活动。与传统的摘要不同,本摘要将直接深入到文章的核心议题,介绍AI在自动化测试中的作用,并指出其在未来的发展趋势。
|
29天前
|
机器学习/深度学习 人工智能 算法
探索自动化测试中AI驱动的决策框架
【5月更文挑战第25天】 在软件测试领域,自动化是提升效率与准确性的关键。随着人工智能(AI)技术的不断进步,其在自动化测试中的应用越来越广泛,特别是在测试决策过程中。本文将探讨一种基于AI的决策框架,它能够实时分析软件质量数据,预测潜在缺陷,并提出优化测试策略的建议。通过引入机器学习算法和数据分析技术,该框架旨在提高测试覆盖率,降低错误检出成本,并最终实现智能、自适应的测试流程。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试中AI驱动的决策框架设计与实现
【5月更文挑战第5天】 在软件测试领域,自动化测试已成为提升测试效率和质量的关键手段。然而,随着软件系统的复杂性增加,传统的自动化测试方法面临挑战,尤其在测试用例的生成、执行及结果分析等方面。本文提出一种基于人工智能(AI)的自动化测试决策框架,旨在通过智能化的算法优化测试过程,并提高异常检测的准确率。该框架结合机器学习和深度学习技术,能够自学习历史测试数据,预测高风险变更区域,自动生成针对性强的测试用例,并在测试执行过程中实时调整测试策略。此外,通过自然语言处理(NLP)技术,该框架还能对测试结果进行语义分析,进一步提供更深入的洞察。本研究不仅增强了自动化测试工具的智能性,也为软件质量保证提
|
机器学习/深度学习 监控 Devops
机器学习测试笔记(14)——决策树与随机森林(下)
机器学习测试笔记(14)——决策树与随机森林(下)
116 0
机器学习测试笔记(14)——决策树与随机森林(下)
|
机器学习/深度学习 算法 数据可视化
机器学习测试笔记(14)——决策树与随机森林(上)
机器学习测试笔记(14)——决策树与随机森林(上)
131 0
机器学习测试笔记(14)——决策树与随机森林(上)
|
机器学习/深度学习 监控 算法
机器学习测试笔记(13)——决策树与随机森林(下)
机器学习测试笔记(13)——决策树与随机森林(下)
127 0
机器学习测试笔记(13)——决策树与随机森林(下)
|
搜索推荐 测试技术 UED
Netflix 是如何做决策的? | 4. A/B 测试结果之假阴性和统计功效
Netflix 是如何做决策的? | 4. A/B 测试结果之假阴性和统计功效
111 0
Netflix 是如何做决策的? | 4. A/B 测试结果之假阴性和统计功效
|
4天前
|
JSON Java Maven
使用`MockMvc`来测试带有单个和多个请求参数的`GET`和`POST`接口
使用`MockMvc`来测试带有单个和多个请求参数的`GET`和`POST`接口
17 3
|
1月前
|
NoSQL 安全 测试技术
接口测试用例设计的关键步骤与技巧解析
该文介绍了接口测试的设计和实施,包括测试流程、质量目标和用例设计方法。接口测试在需求分析后进行,关注功能、性能、安全等六项质量目标。流程包括网络监听(如TcpDump, WireShark)和代理工具(Charles, BurpSuite, mitmproxy, Fiddler, AnyProxy)。设计用例时,需考虑基本功能流程、输入域测试(如边界值、特殊字符、参数类型、组合参数、幂等性)、线程安全(并发和分布式测试)以及故障注入。接口测试用例要素包括模块、标题、优先级、前置条件、请求方法等。文章强调了保证接口的幂等性和系统健壮性的测试重要性。
53 5
|
5天前
|
监控 前端开发 测试技术
postman接口测试工具详解
postman接口测试工具详解
32 7