编者按:决策是行动的指南。不管是个人还是企业,每天都要面临着无数的决策。决策的好坏会对结果产生巨大影响,如何做好决策是每个人都要上的一门必修课。在Netflix这里,他们采用了一种以实验为导向的决策流程,先小范围地对不同方案进行测试,根据对比效果调整,从而摸索出普遍适用的决策。他们为此还在官方技术博客推出了关于Netflix如何用A/B测试做出决策的系列文章。本文来自编译,是系列文章的第六篇。后续文章还将介绍Netflix对基础设施的投资是如何为实验提供支撑和扩展,以及 Netflix内部实验文化的重要性。
Netflix 是如何做决策的?(一):介绍
Netflix是如何做决策的?(二):什么是 A/B 测试?
Netflix是如何做决策的?(三):误报与统计显著性
Netflix是如何做决策的?(四):漏报与功效
Netflix是如何做决策的?(五):树立对决策的信心
实验和因果推理是 Netflix 数据科学与工程组织关注的主要焦点领域之一。为了给全公司的重大决策提供直接支持,Netflix 有许多的数据科学团队会直接跟产品经理、工程团队以及其他业务部门合作,去设计实验、进行实验并从实验中学习。为了实现规模化,我们已经建立了一个内部实验平台(简称 XP),而且还会继续投资。我们有意识地鼓励中心化的实验平台跟那些数据科学团队之间的协作,后者也将跟Netflix的业务部门直接开展合作。
Netflix的数据科学家直接跟公司的业务部门合作,进行实验与因果推理,他们对自己所工作的业务领域有着深入的领域理解与直觉。担任这些角色的数据科学家运用科学方法改善Netflix当前以及未来会员的体验,并参与实验的整个生命周期:包括数据探索与构思;设计并执行测试;分析测试结果,为决策提供支撑;综合来自众多测试(与其他来源)的知识,从而了解会员的行为,并确定创新的机会领域。这是一个科学严谨的良性循环,测试基于一般原则(演绎)做出的,有关会员行为与偏好的特定假设,并概括从实验中学到的东西,从而建立起我们对会员的概念理解(归纳)。这个循环让我们建议对 Netflix 服务的各个方面进行快速创新,对我们正在为会员带来更多快乐树立起信心,因为我们的决定是有经验证据的支持的。
这些角色的成功需要具备渊博的技术技能、主动的态度,以及对本领域空间具有强烈的好奇心。 Netflix 的数据科学家不懈地向数据追求知识,并不断探索更远的距离,总是提出下一个问题。 “我们还能从这次测试中学到什么,好用于下一次测试?” “去年的测试我能够综合出哪些信息,好了解明年的学习路线图的机会有多大?” “这个问题还可以得出哪些数据和直觉?” “根据我在 Netflix 的经验,在哪些地方还有机会可以测试和改进当前的体验?”我们期待我们的数据科学家能够突破实验设计与分析的界限:根据产品特定部分的学习议程,还有哪些新方案或方法可以产生有价值的洞察?业务合作伙伴也将这些数据科学家视为值得信赖的思想伙伴,因为他们在会员与 Netflix 体验方面已经积累了深厚的领域专业知识。
以下就是 Netflix 对部分实验领域,以及每个领域的部分创新工作的简要总结。所列内容并未详尽,我们关注的焦点是那些机会不太明显的领域。这里所说的机会是指通过实验去学习和提供更好的会员体验的机会。
Netflix 全公司都在利用 A/B 测试来为当前与未来的会员带来更多乐趣。
增长广告
Netflix的目标是为全世界提供娱乐!我们的增长团队在社交媒体平台以及其他网站上做广告,分享有关即将上映的影片以及新产品功能的新闻,最终的目标是增加全球 Netflix 会员的数量。对于开发利用因果推理来决定广告预算运用方式的自动化系统来说,数据科学家发挥着至关重要的作用。
在广告方面,实验对象(我们购买的广告)是 Netflix 的直接货币成本。因此,我们对于决策是有风险厌恶的,会积极降低购买无法有效吸引新会员的广告的可能性。在我们这个领域要规避这种风险很有挑战性,因为实验往往功效很低(参见第 4 部分)。比方说,我们要靠双差法来进行比较,对每一个广告实验的潜在不同受众体验进行公正的比较,而这些方法可以有效地减少样本量(非常感兴趣的读者可以了解更多细节https://www.msi.org/wp-content/uploads/2020/06/MSI_Report_15-122.pdf)。解决这些功效降低有一个办法,就是拉长实验的时间——但这会延缓整个创新的步伐。
在本文中,我们将聚焦该领域的两个相关的实验问题,并简要描述我们是怎么在保持高节奏实验的同时解决这些问题的。
回顾一下,我们在第 3 部分和第 4 部分描述了两种类型的错误:误报(或 第一类错误)以及漏报(第二类错误)。尤其是在实验功效较低的情况下,其他两种错误类型很可能会发生,因此,在对具有统计显著性的测试结果采取行动时要考虑这一点:
当我们观察到具有统计显著性的结果,而估计的指标变化显示出跟事实相反的信号时,就发生了S类错误(Type-S error)。
当我们观察到具有统计显著性的结果,而估计的指标变化大小相对于事实被放大(或夸大)时,就会发生 M 类错误(Type-M error)。
如果测试结果具有统计显著性(具有阳性的指标变化)我们就宣布为赢家,那 S型错误就会意味着我们其实选择了错误的实验推广用于生产,这样一来,我们未来所有的广告支出都会产生次优结果。 M 型错误意味着我们高估了实验的影响。短期而言,M 型错误意味着我们会夸大结果,从长远来看,可能会导致高估了优化的预算水平,甚至把未来的研究方向的优先事项都给搞错了。
为了减少这些错误的影响,我们采用了贝叶斯方法对增长广告进行实验。我们在这方面进行了很多的测试,并利用了过去测试的指标变化分布作为分析的额外输入。直观上(以及数学上),这种方法会让估计的指标变化幅度更小,置信区间更窄(参见第 3 部分)。综合来看,这两种效应降低了S型错误与M型错误的风险。
由于及早结束次优实验的好处可能会非常巨大,我们还希望能够做出在统计上有效的明智决定,好尽快结束实验。这是我们数据科学团队一个非常活跃的研究领域,作为最优停止的方法,我们已经调查了成组续贯试验(Group Sequential Testing)以及贝叶斯推理(Bayesian Inference)(有关这两种方法的更多信息,请参见下文)。后者跟类似预期损失(或风险)最小化等决策理论概念相结合使用时,可用来对不同决策(包括提前结束实验的决定)的影响做出正式评估。
支付
支付团队认为,不管未来或当前会员采用哪种支付方式(信用卡、直接借记卡、移动运营商计费等),都绝不应成为注册 Netflix 的障碍或会员离开 Netflix 的原因。我们的会员与支付团队之间有许多接触点:我们在 Netflix 与新会员之间建立起关系,通过续订来维持这些关系,而(可悲的是!)当会员选择取消时,这些关系就会结束。
我们对 Netflix 产品的支付方式、身份验证体验、文案、 UI 设计,以及任何其他我们可以为会员提供顺畅支付体验的地方进行创新。在所有这些领域,我们都力求在本系列文章中列出的测试原则的指导下,提高决策的质量和速度。
决策质量肯定不想这么简单,当 p 值(参见第 3 部分)降至 0.05 以下时,告诉大家“发布出去!”即可。首先要有一个好的假设以及一个清晰的决策框架——尤其是要在长期目标以及在务实的时间框架内弄清楚之间做出明智的平衡。我们的流量或时间都是有限的,所以有时候我们不得不做出艰难选择。有没有可以更快产生信号的指标?使用这些指标的权衡取舍是什么?调用该测试的预期损失跟跑其他测试的机会成本相比如何?这些都是有趣的问题,我们一直在寻求改进。
我们还积极投资,致力于提高决策速度,通常会跟实验平台团队密切合作。在过去一年的时间里,我们为加快实验的三种方法试验了各种模型与工作流程:包括成组续贯试验(GST)、高斯贝叶斯推理(Gaussian Bayesian Inference)以及自适应测试(Adaptive Testing)。这些技术均可可以自行提高我们的实验吞吐量;综合运用这些方法有望改变 Netflix 支付实验的速度轨迹。
伙伴关系
我们希望所有会员无论何时何地访问 Netflix,都能享受到高品质的体验。我们的合作伙伴团队致力于确保将 Netflix App 以及我们的最新技术集成到各种消费产品当中,并且确保 Netflix在所有这些设备上很容易就能被发现和使用。我们还与移动与付费电视运营商合作,建立捆绑套餐产品,将 Netflix 的价值带给更多的未来会员。
在合作伙伴领域,我们想要了解的众多体验,比方说合作伙伴推动的营销活动,均不适用于作为本系列关注的 A/B 测试框架。有时候,用户会自行选择体验,或者一次性把新体验推出给一大群用户。这种随机性的缺乏妨碍了根据 A/B 测试得出直接因果结论。在这些情况下,我们采用了准实验以及观察因果推理技术,用来推断我们正在研究的体验的因果影响。数据科学家在这些分析中扮演了一个关键角色,那就是让利益相关者了解这些研究相关的警告提醒,同时仍能提供严格的评估以及可行动的洞察,并为一些原本模棱两可的问题提供清晰的结构。以下是这些分析存在的一些挑战与机遇:
混淆了实验选择。 用户自行选择实验(treatment)体验或对照(control)体验时(相对于第 2 部分里面讨论的随机分配),最终进入哪种体验的概率可能要取决于他们的Netflix使用习惯。这些基线指标也跟结果指标(比方说会员满意度)天然相关,所以会给观察到的实验对结果指标的影响造成混淆。当治疗选择或治疗吸收会随时间而变化时,问题会变得更加严重,这可能会导致混淆情况会随时间而变化。为了应对这些情况,我们采用了逆倾向得分(inverse propensity scores)、双稳健估计(doubly robust estimators)、双差法,或者工具变量等方法来析取可行动的因果洞察,并通过纵向分析来解释时间依赖性。
综合控制与结构模型。针对混淆进行调整需要让预处理协变量与、跟响应变量处在同样的综合水平上。但是,有时候我们没法访问Netflix 会员个人级别的信息。在这种情况下,我们采用综合控制与结构模型来分析总体层面的数据。
敏感性分析。在缺乏真正的 A/B 测试的情况下,我们的分析依赖于利用可用数据来调整治疗与结果指标之间的虚假相关性。但这件事情的好坏取决于可用数据是否足以解释所有这些相关性。为了了解所做出的因果声明的有效性,我们会进行敏感性分析,从而评估发现的稳健性。
信息收发
在 Netflix,我们一直在寻找方法来帮助我们的会员选择适合自己的内容。我们通过Netflix 产品为每一位会员提供个性化体验来做到这一点。但是,我们可以通过其他方式帮助会员了解新的或相关的内容,这样等他们在漫长的一天结束后想放松一下时,就会想到有些很棒的东西可以看呢?
消息传递,包括电子邮件与推送通知,是我们让会员保持知情的关键方式之一。 在会员主动观看内容以外的时间里,Netflix 的消息传递团队还努力为他们带来快乐。 Netflix 有了或者即将推出什么新功能?有哪些完美内容可以告诉我们的会员,好让 “预约好电影之夜的时间”,在路上看?作为一支消息传递团队,我们也注意到会员生活当中遇到的各种数字干扰,所以我们一直在努力着,希望做到在合适的时间向合适的会员发送合适的信息。
这一领域的数据科学家与产品经理和工程师密切合作,开发消息传递的解决方案,最大限度地提高我们会员的长期满意度。比方说,我们一直致力于为我们的会员提供更好、更个性化的消息传递体验。每一天,我们都会根据历史数据,以及告诉会员会收到什么消息(如果有的话)的输出,预测每一条候选消息会如何满足会员的需求。为了确保我们对个性化消息传递方案的创新能为会员带来更好体验,我们采用 A/B 测试来学习并确认我们的假设。
在 Netflix 当消息传递数据科学家有一点很令人兴奋,那就是我们正在积极开发和使用复杂的学习模型来帮助我们更好地为我们的会员服务。这些模型以bandit算法为基础,会不断地走多了解一些会员对消息传递的偏好与将学到的这些知识用于让会员更满意之间做出平衡。这就像一个持续的 A/B 测试,总是在部署新的治疗方法。这个框架让我们得以进行许多令人兴奋的,具有挑战性的分析,而不必每次都部署新的 A/B 测试。
证据选择
当会员打开 Netflix app时,我们的目标是帮助他们选择一部非常适合他们的作品。其中的一种做法是不断改进推荐系统,为每一位会员提供个性化的主页体验。除了作品推荐以外,我们还会努力挑选和展示同样个性化的艺术作品、图像以及其他的视觉“证据”,并帮助每个会员了解为什么特定作品对他们来说是一个不错的选择——尤其是如果该作品对服务来说是新的,或该会员不熟悉的话。
为了实现这一目标,关键是要有卓越的创意以及对证据选择系统的持续改进。在证据选择领域工作的数据科学家运用在线实验以及离线分析,为两方面的产品决策提供健壮的因果洞察。这两方面的产品决策包括创建证据资产(比方说出现在 Netflix 主页上的图片),以及建立将会员与证据配对的模型。
这一领域的数据科学家站在内容创建与产品开发的交叉点上,他们面临着一些独特的挑战:
预测证据性能。假设我们在开发一种生成证据的新方法(比方说预告片)。理想情况下,我们希望,在做出可能需要时间才能获得回报的潜在巨额投资之前,对新的证据类型的积极成果要有所了解。通过开发出可用因果关系验证的预测模型,数据科学家可以帮助为此类投资决策提供信息。
将会员与最佳证据匹配。高质量且选择正确的证据是为所有Netflix会员带来出色经验的关键。我们在测试和了解哪些类型的证据最有效,以及如何将会员与最佳证据相匹配的同时,还努力通过投资于有效的 A/B 测试方法,最大限度地减少潜在的不利因素,从而让我们得以快速停止次优的治疗体验。
为证据开发提供及时的因果反馈。来自数据(包括来自 A/B 测试)的洞察,被广泛用来推动创作出更好的艺术品、预告片以及其他类型的证据。除了 A/B 测试以外,我们还致力于开发实验设计与分析框架,从而提供细粒度的因果推理,并跟上我们学习议程的规模。我们使用了contextual bandit算法框架,从而最大限度地减少将会员与证据匹配的遗憾,而且通过与我们的算法工程团队的合作,我们已经建立了记录反设事实的能力:换一种的选择策略会推荐什么内容?这些数据为我们提供了一个平台,用来运行丰富的离线实验,并得出因果推理,从而应对我们的挑战,并回答 A/B 测试可能难以回答的问题。
流媒体
既然你已经注册了 Netflix ,而且发现了一些令人兴奋的内容,那么当你按下播放时会发生什么呢?在幕后,Netflix 的基础设施已经启动,会寻找用最快的方式把你选择的内容用出色的音频和视频质量提供给你。
参与提供高质量音频和视频的众多工程团队用 A/B 测试来改善我们为全球会员提供的体验。创新领域包括 Netflix App 本身(需要兼容数千种设备)、编码算法,以及对内容在我们的全球 Open Connect 分发网络上放置位置的优化方法。
这个业务领域的数据科学角色强调的是大规模实验以及对工程团队自主实验的支持:我们怎么才能让这些团队高效、有信心地执行、分析A/B 测试,并基于此做出决策?我们将探讨数据科学与工程团队之间的合作关系令本领域受益的四种方式。
自动化。由于流媒体实验数量众多(每年数千次)且持续时间往往很短,因此我们已经对工作流自动化进行了投资。比方说,我们通过将实验平台的 API 直接跟 Spinnaker 部署管道集成,搭载在Netflix的工具上,安全地部署在 Netflix 客户端。这使得工程师可以用一个配置文件设置、分配和分析他们所做变更的效果。这个模式更进一步的话,用户甚至可以通过将一个实验跑多轮实现“自动化的自动化”,以实现顺序优化。
超越平均水平的处理效应。由于许多重要的流媒体视频和音频指标不能很好地逼近正态分布,我们发现超越平均的处理效应至关重要。为了克服这些挑战,我们与实验平台合作开发和集成了用于压缩数据的高性能自助方法,从而可以快速估计处理效应的分布与分位数,甚至包括最病态的指标。对分位数进行可视化可以为我们带来关于处理效应的新洞察,这些图表现在已经可以自动生成,作为自动化报告的一部分,往往被用来给高级产品决策提供直接支撑。
A/B 测试的替代方案。 Open Connect 工程团队面临着众多的衡量挑战。拥塞会导致实验组与对照组之间发生交互;或者其他情况下,由于我们的流量导向算法的特性,我们没法做到随机化。为了应对这种种挑战,我们正在对准实验方法进行大力投资。我们采用了Metaflow,将用于指标定义的现有基础设施,来自我们的实验平台(Experimentation Platform)的数据收集,与基于双差法的自定义分析方法配对。这个工作流程使得我们能够快速部署自助服务工具,来衡量传统 A/B 测试无法衡量的变化。此外,我们的模块化方法让跨 Open Connect 用例扩展准实验变得很容易,这使得我们能够根据每个团队的不同需求更换数据源或分析方法。
支持自定义的指标与维度。最后,我们开辟了一条(相对)无障碍的路径,让所有的实验者(不仅仅是数据科学家)在需要的时候可以快速创建自定义的指标与维度。除了我们为该领域的所有测试准备的长期体验质量指标以外,任何可以记录的内容都可以快速传送到实验平台,进行分析与可视化。如此,我们的工程师就可以沿着铺砌好的道路提出和回答更精确的问题,这样他们就可以少花些时间去摸清楚门道,而有更多的时间去测试令人兴奋的想法。
扩大实验规模,投资基础设施
为了支持 Netflix 实验计划的规模与复杂性,我们下力气开发了自己的实验平台(内部叫做“XP”)。我们的 XP 为实验的整个生命周期(从体验管理到分析)提供强大的自动化(或半自动化)解决方案,并能满足大型测试的高吞吐量产生的数据规模要求。
XP 提供了一个框架,让工程团队可以在代码中定义一组测试处理体验,然后用这些来配置实验。之后,平台会随机选择会员(或我们可能要进行实验的其他单元,如回放会话),分配给实验,然后将其随机分配给每个实验里面的体验(对照体验或实验体验)。 调用XP的Netflix 服务然后会根据会员参与了哪些测试以及这些测试中的哪些变体,确保提供了正确的体验。我们的数据工程系统则会收集这些测试元数据,然后再将它们跟我们的核心数据集相结合起来:包括关于会员和非会员如何与服务交互的日志、跟踪流视频传输的技术指标的日志等等。然后,这些数据会流经自动分析管道,并用Ablaze( Netflix 报告和配置实验的前端)生成报告。跟 Netflix 的文化一致,公司里面的每个人都可以访问测试结果,而不仅限于数据科学家和决策者。
除了考虑当前的实验计划以外,Netflix XP还用对未来创新的关注加以平衡。这是一个良性的飞轮,因为 XP 的目标是利用今年实验计划所突破的极限,把它变成明年的一键式解决方案。这可能涉及开发用于将会员(或其他单元)分配给实验的新的解决方案,跟踪不同测试存在冲突的新方法,或者是实验设计、分析以及基于实验做决策的新方法。比方说,XP 就跟我们的工程团队在功能标记与体验交付方面密切合作。这些努力成功地为 Netflix的开发人员提供了无缝体验,得以将实验完全集成到软件开发生命周期之中。
为了分析实验,我们开发 Netflix XP 的时候就考虑了大众化与模块化。大众化是指数据科学家(还有其他用户)可以直接贡献指标、分析测试的因果推理方法以及可视化。通过这三个模块,实验者可以编写灵活的报告,量身定制自己的测试,然后送到我们的前端 UI 以及支持临时和探索性分析的notebook环境。
这种模式可以支持快速原型设计与创新,当我们对工程问题进行抽象时,数据科学家就可以直接向生产实验平台贡献代码——而不必自己成为软件工程师。随着分析方法变得更加复杂,对计算要求更高,为了确保平台功能能够支持所需的规模(测试的数量和规模),我们已经对专业知识的形成进行了投资,从而为测试分析提供健壮的计算型因果推理软件。
搭建实验平台需要同理合作:软件工程师搭建和维护后端工程基础设施; UI 工程师开发用于管理和分析实验的ABlaze前端;具备因果推理和数值计算专业知识的数据科学家则可以开发、实施、扩展尖端的方法并将其社会化;还需要确保利益相关者可以访问我们的产品的用户体验设计师;以及让平台本身朝着正确方向创新的产品经理。这是一项令人难以置信的工作,需要多学科的努力,在XP这里工作提供了发展跨学科的广泛技能的机会。由于 Netflix 的实验是那么的普遍,那些从事 XP 工作的人会面临挑战,并与来自 Netflix 各个角落的同事合作。这是从各种角度广泛了解“Netflix 工作机制”的好途径。
总结
Netflix对数据科学团队进行投资。这些团队会利用 A/B 测试、其他实验范式,以及更广泛的科学方法,从而支持为当前和未来会员提供的产品的持续创新。同时,我们投资建立了一个内部的实验平台 (XP),以支持我们的实验与学习计划的那种规模及复杂性。
在实践上,这两方面投资之间的界限其实很模糊,我们鼓励 XP 以及面向业务的数据科学家之展开合作,包括举办 A/B 实验研讨会以及因果推理峰会等内部活动。为了确保 Netflix 的实验能力不断发展,从而满足实验从业者的实际需求,对于开发新的测量与实验管理能力,以及支持和扩展研究的新软件系统,我们有意识地确保XP 与实验从业者之间的通力合作。此外,我们有意识的协作还为大家提供了很好的机会,让他们得以领导和贡献出高影响力的项目,为我们提供了工程、测量以及内部产品开发等方面的新能力。由于 Netflix 对实验的战略价值,这些合作努力受到了包括我们的高管在内的广泛关注。
到目前为止,本系列已经讨论了 A/B 测试的原因、内容与方式,产品开发要想从实验型方案中收获好处,所有这些都是必需的。但是要是没有一点魔法的话,光有这些基础还是不够的。这种魔法将成为本系列下一篇,也是最后一篇文章的重点:贯穿 Netflix上下的学习与实验文化。敬请关注。
译者:boxi。