译文:抓取实验决策引擎-一个统一的实验工具包

以云看科技 2024-09-08 01:42:57

介绍

本文介绍了 GrabX 决策引擎,这是一个内部开源软件包,它为设计和分析在线实验平台上进行的实验提供了一个全面的框架。该软件包包含广泛的功能,包括实验前顾问、实验后分析工具箱和其他高级工具。在本文中,我们探讨了开发这些功能的动机、它们如何融入 Grab 多边市场的独特生态系统,以及这些解决方案如何加强 Grab 的实验文化和水平。

背景

如今,Grab 的实验 (GrabX) 平台每周都会安排数千个实验变体的测试。随着平台不断扩展和管理越来越多的实验,对可靠、可扩展且值得信赖的实验工具的需求对于数据驱动和基于证据的决策变得越来越重要。

在我们之前的文章中,我们介绍了自动实验分析应用程序,这是一种旨在自动化数据管道进行分析的工具。然而,在为 Grab 的实验者社区开发这个应用程序的过程中,我们注意到了一种普遍的趋势:实验主要以逐个手动的方式进行分析。虽然在某些情况下可能需要这种联合方法,但它在组织层面带来了许多挑战:

缺乏上下文工具包:GrabX 有助于执行各种实验设计,满足整个组织不同技术团队的不同需求和背景。然而,实验者可能经常依赖通用的在线工具进行实验配置(例如样本量计算),这些工具并非专门为迎合 GrabX 实验的细微差别或根据设计推荐的评估方法而设计的。大多数在线实验设计教程或课程通常不涉及多边市场的细微差别,也不能考虑特定实验的性质或限制,这加剧了这种情况。缺乏标准:在这种联合模型中,缺乏标准化和经过审查的实践可能会导致可靠性问题。在某些情况下,这些问题可能包括设计不良的实验、不适当的评估方法、次优的测试选择和不可靠的推论,所有这些都很难监控和纠正。缺乏可扩展性和效率:实验者来自不同的背景,拥有不同的技能,可能会采用截然不同的实验和推理方法。这种多样性虽然很有价值,但往往会妨碍方法的可转移性和共享性,从而阻碍形成一个具有凝聚力和可扩展性的实验框架。此外,方法上的差异可能会延长实验分析的生命周期,因为方法上的分歧可能会导致反复提出审查或修改请求。解决方案

为了应对这些挑战,我们开发了 GrabX 决策引擎,这是一个在 Grab 所有开发平台上内部开源的 Python 软件包。其核心目标是将实验效率和分析方面的最佳实践制度化,从而确保从每个实验中得出精确可靠的结论。

具体来说,这个统一的工具包通过以下方式显著增强了我们的端到端实验流程:

确保与 GrabX 和自动实验分析兼容:该软件包与自动实验分析应用程序完全集成,并提供针对 GrabX 支持的设计定制的分析和测试结果。结果可进一步用于其他下游工作,例如市场建模、基于模拟的校准或自适应配置调整。标准化实验分析:通过提供统一的框架,该软件包可确保实验设计背后的原理和分析结果的解释符合全公司标准,促进不同团队之间的一致性和审查的便利性。加强协作和质量:作为一款开源软件包,它不仅培养了协作文化,还通过同行评审来保证质量。它邀请用户利用丰富的功能,同时鼓励用户做出贡献,以完善和扩展工具包的功能。

该软件包专为参与实验过程的所有人而设计,主要用户是数据科学家和产品分析师。在本文中,这些关键利益相关者被称为实验者,他们不仅可以利用该软件包的现有功能来支持他们的项目,还可以贡献自己的创新。最终,通过自动实验分析应用程序从该软件包生成的实验结果和见解将覆盖所有职能部门的利益相关者。

在下一节中,我们将深入探讨该包的主要功能。

功能详细信息

该计划包括三个关键部分:

值得信赖的实验顾问全面的实验后分析工具箱高级工具

这些是考虑到我们在 Grab 通常进行的实验类型而构建的。要了解它们的功能,首先讨论一下 GrabX 支持的关键实验设计会很有用。

关于实验设计的说明

虽然实施的具体实验设计种类繁多,但它们可以分为两大类:受试者间设计和受试者内设计。

在受试者间设计中,参与者(例如我们的应用程序用户、司机伙伴和商家伙伴)被分成实验组,每个组在整个实验过程中都会接触到不同的条件。这种设计的一个挑战是,每个参与者可能会为我们的实验分析样本提供多个观察结果,从而导致观察结果之间的受试者内相关性很高,随机化和会话单元之间存在偏差。这可能会影响实验前功效分析和实验后推断的准确性,因为它需要进行调整,例如在进行假设检验时对标准误差进行聚类。

相反,受试者内设计则涉及每个参与者经历所有条件。市场级切换实验是 GrabX 的常见用例,其中时间片成为实验单位。这种设计不仅面临上述挑战,还会产生其他需要考虑的复杂因素,例如跨时间片的溢出效应。

设计和分析这两种实验方法的结果需要细致入微的统计工具。确保适当的持续时间、样本量、控制混杂因素和解决潜在偏差是提高结果有效性的重要考虑因素。

值得信赖的顾问

决策引擎的第一个关键组件是 Trusted Advisor,它为实验者提供在准备实验时需要考虑的关键实验属性的建议。这取决于设计;至少,实验者需要定义实验设计是受试者间实验还是受试者内实验。

受试者间设计:我们强烈建议实验者使用决策引擎中的“Trusted Advisor”功能来估计所需的样本量。这是为了考虑到实验预计会为每个用户生成的多个观察值,并根据聚类误差的存在进行调整(Moffatt,2020;List、Sadoff 和 Wagner,2011)。此功能允许用户输入他们的数据,可以是 PySpark 或 Pandas 数据框。或者,提供一个函数来从他们的数据中提取汇总统计信息,然后可以将其输入到 Trusted Advisor 中。事先获取数据实际上并不是强制性的;用户可以选择根据从常规数据管道作业中得出的常见指标直接查询建议的样本量。这些功能在下面的流程图中进行了说明。

Trusted Advisor 功能

此外,Trusted Advisor 功能可以识别数据的底层特征,无论是直接传递还是从我们的通用指标数据库查询。这使它能够确定适合实验的功效分析,而无需进一步指导。例如,它可以检测目标指标是否是二元决策变量,并将功效分析调整到正确的上下文。

受试者内设计:在这种情况下,我们反而提供了最佳实践指南供大家遵循。通过支持各种技术家族运行切换实验的经验,我们观察到各种挑战高度依赖于用例。这使得创建一刀切的解决方案变得困难。

例如,影响最终样本量要求的一个重要因素是治疗切换的频率,这也与实验后分析中适合使用的数据粒度有关。这些考虑因素取决于预期给定治疗产生效果的速度等因素。一些治疗可能相对较快地生效(几乎是立即生效,例如如果应用于价格检查),而其他治疗可能需要更长的时间(例如 15-30 分钟,因为它们可能需要完成一次行程)。这会产生进一步的后果,例如治疗窗口内观察结果之间的自相关性、不同治疗窗口之间的溢出效应、治疗切换时对冷却窗口的要求等。

通过分析我们平台上的实验历史,我们发现另一个问题是,很大一部分实验容易出现与样本比例不匹配 (SRM) 相关的问题。因此,我们还非常重视 Switchback 实验中所需的实验后分析校正和稳健性检查,而不是仅仅依赖功率分析等实验前指导。

实验后分析

实验完成后,可以使用一个全面的实验后分析工具箱。此工具箱包含各种统计检验,从正态性检验到非参数和参数检验。以下是工具箱中包含的针对不同实验设置的不同类型检验的概述:

实验后分析组件支持的测试

虽然我们提供了所有相关测试,但该包设置了一个默认的输出列表。只需两行代码指定所需的实验设计,实验者就可以轻松检索推荐的结果,如下表所示。

类型

细节

基本统计数据

治疗组和对照组的平均值、方差和样本量

提升测试

Welch t 检验;非参数检验,例如 Wilcoxon 符号秩检验和 Mann-Whitney U 检验

其他测试

正态性检验,例如 Shapiro-Wilk 检验、Anderson-Darling 检验和 Kolmogorov-Smirnov 检验;Levene 检验用于评估组间方差的相等性

回归模型

用于估计治疗效果的标准 OLS/Logit 模型;推荐的回归模型

警告

提供与统计分析或结果相关的警告或通知,例如:- 变量缺乏变化- 样本量太小- 随机化单元太少,导致标准误差被低估

推荐的回归模型

除了报告相关的统计测试结果外,我们还采用回归模型来利用其在控制混杂因素、固定效应和异方差方面的灵活性,这些在我们的实验中很常见。正如“实验设计说明”部分所述,每种方法对实现的随机化都有不同的影响,因此需要自己定制的回归模型。

受试者间设计:观测结果不是独立同分布 (iid) 的,而是由于对同一实验单元的重复观测而聚类的。因此,我们在回归模型中将默认聚类级别设置为参与者级别,考虑到我们的大多数受试者间实验仅占人口的一小部分 (Abadie 等人,2022 年)。

受试者内设计:这有进一步的挑战,包括溢出效应和随机化不平衡。因此,它们通常需要更好地控制混杂因素。我们采用面板数据方法并施加时间固定效应,没有选择将其删除。虽然用户可以灵活地自行定义这些,但我们使用每小时固定效应作为默认设置,因为我们发现这些与我们在市场指标中观察到的典型季节性相匹配。与受试者间设计类似,我们使用标准误差校正作为聚类误差的默认设置,并使用少量聚类。我们的 API 非常灵活,用户可以包含进一步的控制以及进一步的固定效应,以使估计器适应地理时间片设计。

高级工具

除了实验前的 Trusted Advisor 和实验后的 Analysis Toolbox 之外,我们还通过提供更多高级工具来丰富此软件包。其中一些工具在前两个组件中设置为默认功能,而其他一些则是用户可以通过直接调用函数来使用的临时功能。

方差减少

我们引入多种方法来减少方差并提高实验的能力和灵敏度:

分层抽样:被认为可以减少分配过程中的差异事后分层:一种减少分配后差异的技术CUPED:利用 ANCOVA 减少方差MLRATE:CUPED 的扩展,允许使用非线性/机器学习模型

这些方法提供了宝贵的方法来减轻差异并提高实验的整体效果。实验者可以通过该包直接访问这些临时功能。

多重比较问题

当同时测试多个假设时,就会出现多重比较问题,从而导致误报的可能性更高。为了解决这个问题,我们在这个包中实现了各种统计校正技术,如下所示。

统计校正技术

实验者可以指定他们是否担心测试的依赖性以及测试结果是否预计为负相关。此功能将采用以下程序并选择相关测试以相应地减轻误报风险:

错误发现率 (FDR) 程序,控制错误发现的预期率。系列错误率 (FWER) 程序,用于控制在一组称为系列的相关测试中至少出现一次错误发现的概率。多重治疗和治疗规模不均等

我们开发了一项功能来处理有多种治疗方案的实验。该功能采用保守方法,确保规模达到最低水平,即对照组和治疗组之间的任何成对比较都具有足够的样本量。

异质性治疗效果

异质性治疗效果是指治疗效果在较大群体内的不同群体或亚群体之间有所不同的情况。例如,专门检查下雨天和非下雨天的治疗效果可能会很有趣。我们已将此功能纳入两种实验设计的测试中。通过启用此功能,我们可以进行更细致的分析,以考虑基于不同因素或背景的治疗效果的潜在变化。

维护和支持

该软件包适用于 Grab 内的所有内部 DS/机器学习平台和各个本地开发环境。其源代码对 Grab 内的所有开发人员开放,其发布遵循语义发布标准。

除了技术维护工作之外,我们还设立了专门的委员会和工作区来解决可能超出该软件包当前功能范围的问题。

实验委员会

Grab 内部有一个专门的委员会,称为“实验委员会”。该委员会包括来自不同职能部门的数据科学家、分析师和经济学家。他们的职责之一是合作改进和维护该软件包,以及指导用户有效利用其功能。实验委员会在提高进行实验和从中获取有意义的见解的整体运营卓越性方面发挥着至关重要的作用。

GrabCausal 方法库

实验者经常会遇到有关因果问题实验可行性的挑战。为了解决这一问题,我们引入了一个名为 GrabCausal 方法库的替代工作区。与该项目的内部开源性质类似,GrabCausal 方法库向 Grab 内所有用户的贡献开放。它提供了一个协作空间,用户可以在其中轻松共享与因果方法相关的代码、案例研究、指南和建议。通过营造开放和包容的环境,该工作区鼓励知识共享并促进因果研究方法的进步。

工作区充当一个平台,目前展示了各种常用方法,包括 Diff-in-Diff、事件研究、回归不连续性设计 (RDD)、工具变量 (IV)、贝叶斯结构时间序列和聚束。此外,我们还致力于整合更多内容,例如合成控制、Double ML(Chernozhukov 等人,2018 年)、DAG 发现/验证等,以进一步增强我们在此领域的产品。

学习

过去几年,我们一直在投资开发和扩展这个套件。我们最初的动机虽然不起眼,但很有激励性——为提高 Grab 的实验质量做出贡献,帮助它从最初的初创模式发展到更稳固、更严格、更有指导性的方法。

在这一过程中,我们了解到,优先排序对于此类开源项目至关重要;大多数用户需求都可以通过相对较小但关键的努力来满足。通过专注于这些核心能力,我们可以避免在规划和开发的初始阶段将资源分散到各个领域。

与此同时,我们承认前路漫漫。虽然该软件包现在只专注于单个实验,但在线控制实验平台的一个固有挑战是实验之间的干扰(Gupta 等人,2019 年)。该领域最近的发展是采用同时测试(Microsoft、Google、Spotify和booking.com 以及 Optimizely),并仔细考虑准确性和速度之间的权衡。

克服这一挑战的关键在于实验者社区、开发此统一工具包的团队和 GrabX 平台工程师之间的密切合作。特别是,平台开发人员将继续丰富实验 SDK,提供多样化的分配策略、采样机制和用户界面,以更好地管理潜在的推理风险。同时,实验者社区可以有效地相互协调,以避免严重干扰,这也将由 GrabX 监控。最后但并非最不重要的是,这个统一工具包的开发还将侧重于监控、评估和管理实验间干扰。

此外,我们致力于让此软件包与行业进步保持同步。此软件包中的许多现有工具尽管在之前的讨论中被标记为“高级”,但仍然相对简单。例如,

结合基于不同分配和采样策略的标准误差聚类需要引起注意(Abadie,et al,2023)。顺序测试将在更早、更安全地检测提升方面发挥重要作用,避免 p 值操纵。最近的一项创新是“始终有效的推断”(Johari 等人,2022 年)因果森林(Athey and Wager,2019)等研究异质效应的进展已经超越了线性方法,现已结合了非线性和更细致的分析。评估从短期随访中观察到的长期治疗效果也是一个长期目标,一种方法是使用替代指数(Athey 等人,2019 年)。需要不断努力来掌握并了解统计测试方法的最新进展,以确保准确性和有效性。

本文标志着我们在数据科学家社区中实现实验和产品决策过程自动化的征程的开始。我们对进一步扩展工具包在这些方面的前景感到兴奋。请继续关注更多更新和帖子。

参考

Abadie, Alberto, et al. “When should you adjust standard errors for clustering?.” The Quarterly Journal of Economics 138.1 (2023): 1-35.

Athey, Susan, et al. “The surrogate index: Combining short-term proxies to estimate long-term treatment effects more rapidly and precisely.” No. w26463. National Bureau of Economic Research, 2019.

Athey, Susan, and Stefan Wager. “Estimating treatment effects with causal forests: An application.” Observational studies 5.2 (2019): 37-51.

Chernozhukov, Victor, et al. “Double/debiased machine learning for treatment and structural parameters.” (2018): C1-C68.

Facure, Matheus. Causal Inference in Python. O’Reilly Media, Inc., 2023.

Gupta, Somit, et al. “Top challenges from the first practical online controlled experiments summit.” ACM SIGKDD Explorations Newsletter 21.1 (2019): 20-35.

Huntington-Klein, Nick. The Effect: An Introduction to Research Design and Causality. CRC Press, 2021.

Imbens, Guido W. and Donald B. Rubin. Causal Inference for Statistics, Social, and Biomedical Sciences: An Introduction. Cambridge University Press, 2015.

Johari, Ramesh, et al. “Always valid inference: Continuous monitoring of a/b tests.” Operations Research 70.3 (2022): 1806-1821.

List, John A., Sally Sadoff, and Mathis Wagner. “So you want to run an experiment, now what? Some simple rules of thumb for optimal experimental design.” Experimental Economics 14 (2011): 439-457.

Moffatt, Peter. Experimetrics: Econometrics for Experimental Economics. Bloomsbury Publishing, 2020.

作者:Ruike Zhang · Panos Mavrokonstantis

出处:https://engineering.grab.com/grabx-decision-engine

0 阅读:0

以云看科技

简介:感谢大家的关注