Netflix 是如何做决策的? | 3. A/B 测试结果之假阳性和统计显著性

简介: Netflix 是如何做决策的? | 3. A/B 测试结果之假阳性和统计显著性

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


1. Netflix的决策制定

2. 什么是A/B测试?

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


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


第二部分:什么是A/B测试中,我们谈到了测试 Netflix 上的 Top 10 列表,以及测试的主要决策指标是如何衡量用户对 Netflix 的满意度。如果这样的测试显示主要决策指标在统计上有显著的改善,那么该功能就很有可能向我们所有会员推广。但是,考虑到测试的结果,我们如何知道是否做出了正确的决定?重要的是要承认,没有一种决策方法可以完全消除不确定性和犯错的可能。使用基于假设生成、A/B 测试和统计分析的框架,我们可以仔细量化不确定性,并理解犯不同类型错误的概率。


根据测试结果行事时,我们可能会犯两类错误。假阳性(false positive,也称为第一类错误)发生在测试数据表明控制组和测试组之间具有有意义的差异,但实际上并没有差异。这种情况就像当你身体健康时,体检结果却呈阳性一样。我们在决定测试结果时可能犯的另一个错误是假阴性(false negative,也称为第二类错误),当数据没有表明测试组和对照组之间存在有意义的差异时,就会发生这种错误,但实际上是有差异的。这种情况就像医学测试结果为阴性,但实际上你确实患有检测的疾病。


作为建立直觉的另一种方式,考虑一下互联网和机器学习存在的真正原因:如果图片显示的是猫,就给它贴上“猫”的标签。对于给定的图像,有两个可能的决定(应用“猫”或“不是猫”的标签),同样也有两个可能的事实(图像要么有猫,要么没有猫)。这将导致总共四种可能的结果,如图 1 所示。同样的道理也适用于 A/B 测试:我们基于数据做出了两个可能的决定(“足够的证据得出结论,Top 10 使会员满意”或“证据不足”),有两个我们完全不确定的可能的事实(“Top 10 真正使会员满意”或者“Top 10 没有使会员满意”)。


image.png

图 1:标记图像是否为“猫”的四种可能结果


关于假阳性和假阴性,令人不安的事实是,我们无法让它们同时消失。事实上,这是一种权衡。将实验设计成假阳性率极低必然会增加假阴性率,反之亦然。在实践中,我们的目标是量化、理解和控制这两个误差来源。


接下来,我们将使用简单的例子来建立关于假阳性和相关统计概念的直观感觉,在本系列的下一篇文章中,我们将对假阴性做同样的处理。


假阳性和显著性统计(False positives and statistical significance


有了良好的假设和对主要决策指标的清晰理解,是时候转向设计 A/B 测试的统计方面了。这个过程通常从确定可接受的假阳性率开始。按照惯例,这种假阳性率通常设置为 5%:对于测试组和对照组之间没有显著差异的测试,我们会错误的得出 5%的“统计显著”差异,在 5%的假阳性率下进行的测试被称为在 5%的显著性水平下进行。


使用 5%的显著性水平惯例会让人感觉不舒服。通过遵循这一惯例,我们接受了这样一个事实,即当测试组和控制组的数据对我们的成员来说并没有明显的不同时,我们犯错误的几率为 5%。也就是说,我们有 5%的可能把不是猫的照片标记为猫。


假阳性率与观察到的测试组和对照组之间度量值差异的“统计意义”密切相关,我们使用 p 值[2]来衡量。p 值是我们 A/B 测试出现极端结果的概率,判断是否测试组和对照组的真的没有区别。一个多世纪以来,统计学专业的学生对统计学的重要性和 p 值一直感到困惑,而理解这一点的一种直观方式就是通过简单的概率游戏,我们可以计算并可视化所有相关的概率。


image.png

图 2:思考简单的机会游戏,比如像这张展示凯撒大帝的硬币,这是建立统计直觉的好方法


假设我们想知道一枚硬币是否均匀,也就是说判断正面的概率是不是 0.5(或 50%)。这可能听起来像一个简单的场景,但其实和许多业务场景直接相关(包括 Netflix),我们的目标是理解一个新的产品体验对用户活动产生影响的概率,这些活动可能是点击某个 UI 特性或者保留 Netflix 服务一个月。所以我们可以通过简单的硬币游戏直接理解 A/B 测试。


为了判断硬币是否均匀,我们运行以下实验:将硬币抛 100 次,并计算结果为正面的比例。由于随机性或“噪音”,即使硬币是完全均匀的,我们也不会期望 50 次正面和 50 次反面——但与 50 次正面和 50 次反面的偏差有多大呢?什么时候我们有足够的证据来确定硬币实际上是均匀的这一基本论断?如果 100 次抛掷中有 60 次是正面,你愿意得出硬币不均匀的结论吗?70 次呢?我们需要一种方法来调整决策框架并理解相关的误报率。


为了建立直观感受,我们来做一个思维练习。首先,我们假设硬币是均匀的——这就是我们的“零假设(null hypothesis)”,它总是表示现状或平等。然后,我们从数据中寻找反对这一零假设的有力证据。为了决定什么是令人信服的证据,我们计算了每一个可能结果的概率,并假设零假设是正确的。对于抛硬币的例子,这是 100 次抛硬币得到 0 个正面,1 个正面,2 个正面,等等,直到 100 个正面的概率(假设硬币是均匀的)。跳过数学,图 3 中的每一种可能结果及其相关概率都用黑色和蓝色条表示(暂时忽略颜色)。


然后我们可以在硬币是均匀的这个假设前提下计算结果的概率分布,与我们收集的数据进行比较。假设我们观察到 100 次抛掷中 55%是正面(图 3 中红色实线)。为了量化这一观察是否足以证明硬币是不均匀的,我们计算了每一个比我们观察到的可能性小的结果的概率。在这里,因为我们没有假设正面或反面更有可能,因此我们把超过 55%为正面的概率累加起来(靠近右边的红线),把超过 55%为负面的概率也累加起来(靠近左边的红线)。


这是虚构的 p 值:在零假设成立的情况下,看到和我们观察到的结果一样极端的概率。在我们的例子中,零假设是硬币是均匀的,100 次投掷中观察到 55%是正面,p 值约为 0.32。解释如下:我们重复很多次抛一枚硬币 100 次的实验,并且计算正面的比例,如果硬币是均匀的(零假设是真的),有 32%的试验结果将包括至少 55%的正面或至少 55%的反面(结果至少不像我们实际观察的那样)。


image.png

图 3:投掷一枚均匀硬币 100 次,每个结果的概率表示为正面的分数


我们如何使用 p 值来决定是否有统计上显著的证据表明硬币是不均匀的?或者说我们的新产品的体验对现状有所改进?回到我们一开始同意接受的 5%的假阳性率:我们得出的结论是,如果 p 值小于 0.05,就会有统计上显著的影响。这就形成了一种直观感受,即如果我们的结果在一枚均匀硬币的假设下大概率不会发生,我们就应该拒绝零假设,即硬币是均匀的。在观察 100 次硬币投掷 55 次正面的例子中,我们计算出 p 值为 0.32。因为 p 值大于 0.05 的显著性水平,我们得出结论,没有统计上显著的证据表明硬币是不均匀的。


我们可以从实验或 A/B 测试中得出两个结论:要么得出有效的结论(“硬币是不均匀的”,“Top 10 增加了会员的满意度”)或者得出这样的结论:没有足够证据可以得出有效的结论(“不能得出硬币是不均匀的,”“不能得出 Top 10 增加了会员满意度的结论”)。这很像陪审团审判,有两种可能的结果:“有罪”或“无罪”——“无罪”与“无辜”有很大的不同。同样地,这种 A/B 测试(概率主义[3])的方法也不能让我们得出没有影响的结论——我们从来不会得出硬币是均匀的,或者新产品的特性对我们的会员没有影响的结论。我们只是得出结论说,我们没有收集到足够的证据来拒绝没有差异的零假设。在上面的硬币例子中,我们观察到 100 次投掷中有 55%的正面,并得出结论,我们没有足够的证据证明这枚硬币是不均匀的。关键是,我们并没有得出结论说硬币是均匀的——毕竟,如果我们收集到更多的证据,比如将同一枚硬币投掷 1000 次,我们可能会找到足够令人信服的证据来拒绝均匀的零假设。


拒绝区域和置信区间(Rejection Regions and Confidence Intervals)


在 A/B 测试中还有两个与 p 值密切相关的概念:测试的拒绝区域和观察的置信区间。我们将在本节中以上面的硬币例子为基础介绍这两个概念。


拒绝区域。另一种为测试建立决策规则的方法是根据所谓的“拒绝区域”——我们可以得出硬币是不均匀的结论的一组值。为了计算拒绝区域,我们再次假设零假设是正确的(硬币是均匀的),然后将拒绝区域定义为概率之和不大于 0.05 的最不可能的结果集合。拒绝区域由最极端的结果组成,前提是零假设是正确的——也就是反对零假设的证据最强的结果。如果一个观察结果落在拒绝区域,我们就会得出结论,有统计上显著的证据表明这个硬币是不均匀的,并“拒绝”这个零假设。在简单硬币实验的情况下,拒绝区域对应观察到少于 40%或超过 60%的正面(如图 3 中的蓝色阴影条所示)。我们称拒绝区域的边界(这里的 40%和 60%的正面)为测试的临界值。


拒绝区域与 p 值等价,两者可以导出相同的判断:当且仅当观察值位于拒绝区域时,p 值小于 0.05。


置信区间。到目前为止,我们已经通过从零假设开始构建决策规则,零假设总是没有变化或等价的陈述(“硬币是公平的”或“产品创新不影响成员满意度”)。然后,我们在这个零假设下定义可能的结果,并将我们的观察结果与该分布进行比较。要理解置信区间,它有助于把问题转到观察上。然后,我们进行一个思考练习:根据观察结果,假设我们指定 5%的假阳性率,什么样的值将导致零假设不被拒绝?在我们抛硬币的例子中,如果观察到 100 次抛硬币有 55%正面,我们就不会拒绝对于硬币均匀的零假设。如果正面的概率是 47.5%、50%或者 60%,零假设也不会被拒绝。我们不拒绝零假设的概率范围是从 45%到 65%(图 4)。


这个值的范围就是置信区间:在零假设下的,来自测试的一组给定的数据,这组值不会导致拒绝。因为我们使用 5%显著性水平的测试绘制了区间,所以我们创建了一个 95%的置信区间。或者再解释一下,意思是在重复实验下,置信区间会覆盖 95%的真实值(这里是硬币为正面的实际概率)。


在置信区间和 p 值之间是等价的,两者可以导出相同的判断:当且仅当 p 值小于 0.05 时,95%置信区间不覆盖空值,在这两种情况下,我们拒绝无影响的零假设。

image.png

网络异常,图片无法展示
|

a图 4:通过映射出一组值来构建置信区间,当用于定义一个空假设时,该值不会导致对给定观察结果的拒绝


总结


通过一系列基于抛硬币的思维练习,我们已经建立了关于假阳性、统计显著性和 p 值、拒绝区域、置信区间以及我们可以根据测试数据做出的两个决定的直观感受。这些核心概念和直观感受直接映射到比较 A/B 测试中的测试组和控制组数据中。我们定义了一个没有差异的“零假设”:“B”体验不会改变影响会员满意度。然后我们进行相同的思考实验:假设会员满意度没有差异,测试组和对照组之间度量值差异的可能结果和相关概率是什么?然后,我们可以将实验的观察结果与这个分布进行比较,就像硬币的例子一样,计算一个 p 值,并得出关于测试的结论,我们可以定义拒绝区域并计算置信区间。


但假阳性只是我们根据测试结果可能犯的两个错误之一。在本系列的下一篇文章中,我们将讨论另一种类型的错误,假阴性,以及与统计功效密切相关的概念。



References:

[1] Interpreting A/B test results: false positives and statistical significance: https://netflixtechblog.com/interpreting-a-b-test-results-false-positives-and-statistical-significance-c1522d0db27a

[2] The ASA Statement on p-Values: Context, Process,and Purpose: https://www.tandfonline.com/doi/pdf/10.1080/00031305.2016.1154108?needAccess=true

[3] Frequentist Inference: https://en.wikipedia.org/wiki/Frequentist_inference


目录
相关文章
|
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)。 移动到下一个设备。 否则,移动到下一个设备而不执行任何测试。 返回一个整数,表示按顺序执行测试操作
48 0
|
测试技术 BI
测试思想-测试总结 缺陷分析与统计浅析
测试思想-测试总结 缺陷分析与统计浅析
144 0
|
测试技术 BI
测试思想-测试总结 测试报告-关于关缺陷统计
测试思想-测试总结 测试报告-关于关缺陷统计
105 0
|
1天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
22 3