Netflix 是如何做决策的? | 4. A/B 测试结果之假阴性和统计功效

简介: Netflix 是如何做决策的? | 4. A/B 测试结果之假阴性和统计功效

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


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


这是关于 Netflix 如何基于 A/B 测试来做出决策并不断创新产品的系列文章的第四篇。想看前面的文章?参见第一部分(Netflix的决策制定)第二部分(什么是A/B测试?)第三部分(假阳性和统计显著性)。接下来的文章将详细介绍 Netflix 的实验,Netflix 是如何投资基础设施来支持和扩大实验的,以及 Netflix 的实验文化的重要性。

第3部分:假阳性和统计显著性中,我们定义了在解释测试结果时可能发生的两种类型的错误:假阳性和假阴性。然后,基于投硬币的简单思维练习,围绕假阳性和相关概念(如统计显著性、p 值和置信区间)建立直观感受。在这篇文章中,我们将对假阴性和统计功率的相关概念做同样的处理。


image.png

图 1:和第 3 部分一样,我们将基于抛硬币的思维练习,以建立关于核心统计概念的直观感受


假阴性和功效(False negatives and power)


当数据显示测试组和对照组之间没有显著差异时,但事实上两者确实存在差异,就会出现假阴性。继续第三部分的例子,假阴性对应的是把猫的照片标记为“不是猫”。假阴性与统计功效[2]的概念密切相关,给出了在给定实验设计和特定规模的真实效应的情况下,真阳性的概率。事实上,功效就是 1 减去假阴性的概率。


功效涉及到在给定实际状态的特定假设下考虑可能的结果——类似于在第三部分中,我们如何通过首先做出零假设为真来定义显著性。为了建立关于功效的直觉,我们回到第 3 部分中相同的硬币例子,在这个例子中,目标是通过计算 100 次投掷中正面的比例的实验来判断硬币是否均匀。在零假设(即硬币是均匀的)下,结果的分布如图 2 中黑色所示。为了使图表更容易解释,我们对直方图的顶部进行了平滑处理。


在这个实验中,如果硬币不均匀会发生什么?为了让这个思维练习更具体,看看当我们有一枚硬币,正面出现的概率平均为 64%时,会发生什么(后面会解释为什么选择这个特殊数字)。因为实验中存在不确定性或噪声,不可能在 100 次投掷中正好出现 64 次正面。但和零假设一样,硬币是均匀的,可以计算出所有可能的结果(如果这个备择假设是真的的话)。这种分布如图 2 中的红色曲线所示。


image.png


图 2:用抛硬币 100 次并计算正面的比例的例子来说明功效。黑色虚线和红色虚线分别表示假设出现正面概率为 50%(零假设)和 64%(备择假设的特定值)的结果分布。在这里,对抗这个选择的功效是 80%(红色阴影)。


从视觉上看,功效是这个可选分布(红色)超出零假设下的临界值(蓝线和黑曲线,请参阅第3部分)。在这里,80%的替代分布(红色)落在更高的蓝线的右边,这条蓝线划定了上拒绝区域的临界值。假设硬币正面的概率是 64%,那么这个测试的功效是 80%。完整地说,还有一小部分可忽略的替代分布(红色)位于较低的拒绝区域(在短蓝线的左边)。


测试的功效对应于一个特定的、假设的效应大小。在我们的例子中,如果那枚非均匀硬币的正面概率是 64%,这个测试有 80%的能力来检测一枚硬币是不是非均匀的。解释如下:如果正面硬币的概率等于 64%,我们反复做 100 次实验,并且在 5%的显著性水平上做出决定,然后每 5 次实验中有 4 次我们都可以正确的拒绝硬币是均匀的这一零假设。20%的重复实验结果是假阴性,意思就是即使硬币是非均匀的,我们也不会拒绝零假设(硬币是均匀的)。


增加功效的方法(Ways to increase power)


在设计 A/B 测试时,我们首先确定显著性水平(惯例是 5%:如果测试组和对照组之间没有差异,将有 5%的概率发生假阳性),然后设计控制假阴性的实验。可以通过三个主要的杠杆来增加功效,降低假阴性的概率:


  1. 影响大小(Effect size)。简单地说,效应越大(即 A 组和 B 组之间度量值的差异越大),我们能够正确检测到差异的概率就越高。为了建立直观感受,假设进行实验来收集硬币 100 次投掷中正面的比例,来确定硬币是否均匀。考虑两种情况,在第一种情况中,正面的真实概率是 55%,而在第二种情况中,正面的真实概率是 75%。从直观上(以及数学上!),我们的实验更有可能在第二种情况下认定硬币是不均匀的。正面出现的真实概率离零值 50%远得多,所以实验产生的结果更有可能落在拒绝区域。在产品开发环境中,我们可以通过大胆的对比所测试的假设来增加度量变化的预期幅度。另一种增加效果的策略是在产品的新领域进行测试,在那里可能有更大的空间来提高会员满意度。也就是说,通过实验学习的乐趣之一就是惊喜元素:有时候,看似很小的变化可能会对顶级指标产生重大影响。


  1. 样本大小(Sample size)。实验单元(样本、数据)越多,功效越大,越容易正确识别较小的影响。为了建立直观感受,再考虑一下进行一个实验来确定一枚硬币是否为非均匀硬币,我们收集的数据是在固定次数的投掷中正面的比例,而正面的真实概率是 64%。考虑两种情况:第一种情况,抛硬币 20 次,第二种情况,抛硬币 100 次。从直观上(以及数学上!),实验更有可能在第二种情况下认定硬币是不均匀的。随着数据增加,实验结果将更接近真实的 64%正面的概率,而均匀硬币假设下的结果集中在 0.50 左右,导致拒绝区域覆盖了 50%的值。这些效应结合在一起,随着数据的增加,非均匀硬币的实验结果落在拒绝区域的概率就更大,从而产生真正的阳性。在产品开发的背景下,我们可以增加或者减少测试组(或者其他单位)的数量从而影响功效,在测试样本的数量以及可并行进行的非重复测试数量之间需要做出一定的权衡。


  1. 在潜在人群中度量的可变性(The variability of the metric in the underlying population)。我们所测试的人群的度量标准越一致,就越容易正确识别出真正的影响。这个直观感受有点复杂,没办法用简单的硬币例子了。假设在 Netflix,我们运行了一个旨在减少延迟(例如会员按下播放键和视频播放开始之间的延迟)的测试,考虑到人们用来访问 Netflix 的各种设备和互联网连接,我们的用户在这个指标上有很多自然的变化。因此,如果测试处理导致了延迟度量的小幅降低,则很难成功识别,有可能来自成员间可变性的“噪音”淹没了小信号。相比之下,如果我们对一组使用类似设备、网络连接相似的成员进行测试,那么小信号更容易识别,因为可能淹没信号的噪音更少。我们花了很多时间在 Netflix 上建立统计分析模型,从而可以利用这种直觉,并通过有效降低可变性来增强功能[3]


为合理和有意义的效果提供功效(Powering for reasonable and meaningful effects)


功效和假阴性率是一个假设效应大小的函数。就像 5%的误报率是一个被广泛接受的惯例一样,功效的经验法则是,为了一个合理有意义的效应大小,目标是 80%的功效(我们将在下面逐一讨论)。也就是说,我们假设一个效应大小,然后设计实验,主要是通过设置样本量,这样,如果测试真正会影响我们的假设,正确识别出影响的概率是 80%。在 20%的情况下,测试的结果会是假阴性:事实上有效果,但从测试中观察到的结果并不在拒绝区域,我们无法得出结论。这就是为什么上面的例子中正面的概率是 64%:投掷 100 次的实验有 80%的功效。


由于测试结果可能会让人很吃惊,因此很难说什么才是合理的效应大小。但是,领域知识和常识的结合通常可以提供可靠的估计。在测试一个持续时间很长的领域(比如优化推荐系统),帮助 Netflix 成员选择对他们有利的内容,我们对测试产生的效果应该有一个可靠的想法(无论是积极的还是消极的)。在了解了过去的效应大小以及分析策略后,可以设置样本大小,以确保测试对于合理的度量具有 80%的功效。


在实验的设计阶段以及决定往哪里投入精力时,第二个需要考虑的问题是,确定哪些因素对用来决定测试的主要指标构成有意义的影响。什么有意义将取决于实验的影响范围(成员满意度、回放延迟、后端系统的技术性能等),以及与新产品体验相关的潜在效果或成本。假设,对于效果小于主要度量指标 0.1%的变化,支持新产品特性的成本要大于收益。在这种情况下,推动测试去检测指标中 0.01%的变化就没有什么意义了,因为成功识别出这种规模的影响并不会导致决策发生有意义的变化。同样,如果在一个特定的创新领域的测试中所看到的效果大小对用户体验或业务始终是无关紧要的,这表明实验资源可以部署在其他更有效的地方。


总结


本系列的第 3 部分和第 4 部分着重于定义和构建用于分析测试结果的核心概念的直观感受:假阳性和假阴性、统计显著性、p 值和功效。


关于实验的一个令人不安的事实是,我们不能同时最小化假阳性和假阴性。事实上,必须在假阳性和假阴性之间做出权衡。如果我们使用更严格的假阳性率,比如 0.01%,会减少假阳性的可能性,但也降低了测试的功效,从而增加了这些测试的假阴性率。使用 5%的假阳性率和 80%的功效目标是在限制假阳性和实现真正发现之间取得平衡的公认惯例。然而,在假阳性(或假阴性)带来更大风险的情况下,研究人员可能会偏离这些经验法则,从而最小化某一种类型的不确定性。


我们的目标不是消除不确定性,而是理解和量化不确定性,以便做出合理的决策。在许多情况下,A/B 测试的结果需要细致的解释,事实上,测试结果本身只是业务决策的一个输入。在下一篇文章中,我们将讨论如何使用测试结果建立决策的信心。


References:

[1] Interpreting A/B test results: false negatives and power: https://netflixtechblog.com/interpreting-a-b-test-results-false-negatives-and-power-6943995cf3a8

[2] Power of a test: https://en.wikipedia.org/wiki/Power_of_a_test

[3] Efficient Computation of Linear Model Treatment Effects in an Experimentation Platform: https://arxiv.org/pdf/1910.01305.pdf


目录
相关文章
|
6月前
|
机器学习/深度学习 人工智能 算法
自动化测试中AI驱动的决策框架
【5月更文挑战第28天】 本文探讨了在自动化软件测试过程中,如何利用人工智能(AI)技术来优化测试用例的选择和执行。通过引入一个基于机器学习算法的智能决策框架,我们可以提高测试的效率和有效性,同时减少冗余和不必要的测试活动。与传统的摘要不同,本摘要将直接深入到文章的核心议题,介绍AI在自动化测试中的作用,并指出其在未来的发展趋势。
|
6月前
|
机器学习/深度学习 人工智能 算法
探索自动化测试中AI驱动的决策框架
【5月更文挑战第25天】 在软件测试领域,自动化是提升效率与准确性的关键。随着人工智能(AI)技术的不断进步,其在自动化测试中的应用越来越广泛,特别是在测试决策过程中。本文将探讨一种基于AI的决策框架,它能够实时分析软件质量数据,预测潜在缺陷,并提出优化测试策略的建议。通过引入机器学习算法和数据分析技术,该框架旨在提高测试覆盖率,降低错误检出成本,并最终实现智能、自适应的测试流程。
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试中AI驱动的决策框架设计与实现
【5月更文挑战第5天】 在软件测试领域,自动化测试已成为提升测试效率和质量的关键手段。然而,随着软件系统的复杂性增加,传统的自动化测试方法面临挑战,尤其在测试用例的生成、执行及结果分析等方面。本文提出一种基于人工智能(AI)的自动化测试决策框架,旨在通过智能化的算法优化测试过程,并提高异常检测的准确率。该框架结合机器学习和深度学习技术,能够自学习历史测试数据,预测高风险变更区域,自动生成针对性强的测试用例,并在测试执行过程中实时调整测试策略。此外,通过自然语言处理(NLP)技术,该框架还能对测试结果进行语义分析,进一步提供更深入的洞察。本研究不仅增强了自动化测试工具的智能性,也为软件质量保证提
|
6月前
|
存储 测试技术
统计测试结果的代码实现接昨天
统计测试结果的代码实现接昨天
|
6月前
|
存储 算法 异构计算
基于FPGA的图像直方图统计实现,包括tb测试文件和MATLAB辅助验证
基于FPGA的图像直方图统计实现,包括tb测试文件和MATLAB辅助验证
|
6月前
|
Java
100143. 统计已测试设备 --力扣 --JAVA
给你一个长度为 n 、下标从 0 开始的整数数组 batteryPercentages ,表示 n 个设备的电池百分比。 你的任务是按照顺序测试每个设备 i,执行以下测试操作: 如果 batteryPercentages[i] 大于 0: 增加 已测试设备的计数。 将下标在 [i + 1, n - 1] 的所有设备的电池百分比减少 1,确保它们的电池百分比 不会低于 0 ,即 batteryPercentages[j] = max(0, batteryPercentages[j] - 1)。 移动到下一个设备。 否则,移动到下一个设备而不执行任何测试。 返回一个整数,表示按顺序执行测试操作
49 0
|
测试技术 BI
测试思想-测试总结 缺陷分析与统计浅析
测试思想-测试总结 缺陷分析与统计浅析
147 0
|
测试技术 BI
测试思想-测试总结 测试报告-关于关缺陷统计
测试思想-测试总结 测试报告-关于关缺陷统计
105 0
|
6天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
34 3

热门文章

最新文章