优步实验平台背后的秘密

优步实验平台背后的秘密

实验是优步改善客户体验的核心。Uber应用了多种实验方法来用例,比如测试一个新功能来增强我们的应用设计。

优步的实验平台(XP)在这个过程中扮演着重要的角色,使我们能够启动、调试、测量和监控新想法、产品功能、营销活动、促销甚至机器学习模型的效果。该平台支持司机、乘客、Uber Eats和Uber Freight应用程序的实验,并广泛用于运行A/B/N、因果推理和基于多臂强盗(MAB)的连续实验。

任何时候都有超过1000个实验在我们的平台上运行。例如,在Uber成立之前我们的新司机应用这款车在完全重新设计时考虑到了我们的驾驶伙伴,它通过我们的XP进行的一系列实验进行了广泛的假设测试。

在较高的层面上,Uber的XP允许工程师和数据科学家监控治疗效果,以确保它们不会导致任何关键指标的回归。该平台还允许用户配置通用阻力,用于测量特定领域所有实验的长期效果。

图1。平均而言,任何时候都有超过1000个实验在优步的实验平台上进行。

下面的图表概述了实验平台团队使用的实验方法类型:

图2。Uber的实验平台同时进行随机实验和观察性研究。

有许多因素决定我们应该将哪种统计方法应用于给定的用例。广义上,我们使用四种类型的统计方法:固定水平A/B/N检验(t检验、卡方和秩和检验)、顺序概率比检验(SPRT)、因果推理检验(综合控制和差分检验),以及使用强盗算法的连续A/B/N检验(汤普森抽样、上限置信界限和上下文多臂强盗检验的贝叶斯优化,等等)。在统计分析中计算I型和II型误差的概率时,我们还应用块自举和delta方法来估计标准误差,以及基于回归的方法来测量偏差校正。

在本文中,我们将讨论优步的实验平台如何使用这些统计方法来改善我们的服务。

经典的A/B测试

随机A/B或A/B/N试验被认为是许多定量科学领域评估治疗效果的金标准。Uber运用这种技术做出客观的、数据驱动的、科学严谨的产品和商业决策。从本质上讲,经典的A/B测试使我们能够将用户随机分为对照组和治疗组,以比较这些组之间的决策指标,并确定实验的治疗效果。

图3。Uber的实验平台团队利用A/B/N测试进行随机实验,以确定升力。

这种方法的一个常见用例是特性发布实验。假设一位产品经理想要评估一项新功能是否能提高优步平台的用户满意度。产品经理可以使用我们的XP来收集以下指标:治疗组和对照组中指标的平均值、提升(治疗效果)、提升是否显著,以及样本量是否大到足以发挥高统计效力。

图4。我们的XP分析仪表板使数据科学家和其他用户可以轻松地访问和解释他们的A/B测试结果。

数据引擎

我们团队的主要目标之一是交付一种适用于大多数假设测试方法,可以应用到整个公司的用例中。为了实现这一目标,我们与多个利益相关者合作构建了一个统计引擎。

当我们分析一个随机实验时,第一步是选择一个决策指标(例如,乘客总预订量)。这个选择直接关系到被检验的假设。我们的XP使实验人员能够轻松地重用预定义的指标,并自动处理数据收集和数据验证。根据指标类型,我们的统计引擎应用不同的统计假设测试过程,并生成易于阅读的报告。在Uber,我们在方法的研究和验证上投入了大量资金,并不断提高我们统雷竞技是骗人的计引擎的稳健性和有效性。

下面的图5提供了这个强大工具的高级概述:

图5:Uber的统计引擎用于A/B/N实验,并由固定水平假设测试方法决定。
主要组成部分和统计方法

收集数据后,我们的XP的分析平台验证数据,并检测到两个主要问题,供实验者观察,并在他们的a /B实验中保持健康的怀疑:

  • 样本量不平衡,这意味着控制组和处理组的样本量比与预期显著不同。在这些情况下,实验者必须反复检查他们的随机化机制。
  • 闪烁,指的是在对照组和治疗组之间切换的用户。例如,一名乘客购买了一部新的安卓手机来替换旧的iPhone,而实验的处理只配置为iOS。骑手会从治疗组切换到对照组。存在这样的用户可能会污染实验结果,所以我们将排除这些用户(闪烁)在我们的分析。

我们的大多数用例是随机实验,大多数时候汇总的数据足以执行固定水平的A/B测试。在用户层面,有三种不同类型的指标:

  • 连续的指标包含一个数值列,例如,每个用户的总预订量。
  • 比例指标包含一个二进制指标值列,例如,测试用户注册后完成任何行程的比例。
  • 比率指标包含两个数值列,分子值和分母值,例如,行程完成率,其中分子值是完成行程的数量,分母值是总请求次数。

我们应用了三种不同的数据预处理来提高A/B分析的稳健性和有效性:

  • 异常值检测消除数据中的不规则性,提高分析结果的稳健性。我们使用基于聚类的算法来执行离群值检测和移除。
  • 方差减少有助于增加假设检验的统计能力,这在实验的用户基数较小或当我们需要在不牺牲科学严谨性的情况下过早结束实验时尤其有用。的杯的方法利用我们拥有的额外信息并减少决策指标中的方差。
  • Pre-experiment偏见对优步来说是一个巨大的挑战,因为我们的用户是多样化的。有时,仅仅通过随机化来构建可靠的反事实并不能解决问题。差异中的差异(diff-in-diff)是定量研究中公认的方法,我们用它来纠正组间实验前的偏差,从而得出可靠的治疗效果估计。雷竞技是骗人的

假定值计算是统计引擎的核心。p值直接决定XP报告的结果是否显著。我们将p值与我们在普通a /B测试中期望的假阳性率(i型错误)(0.05)进行比较。我们的XP利用各种程序进行p值计算,包括:

  • 韦尔奇的学习任务,用于连续度量的默认测试,例如完成的行程。
  • Mann-Whitney U检验,一种非参数秩和检验,用于检测数据中的严重偏态。它需要比t检验更弱的假设,并且在倾斜数据下表现更好。
  • 卡方测试,用于比例指标,例如,骑手保留率。
  • Delta法(邓等,2011而且Bootstrap方法,用于标准误差估计,适用于为具有比率度量或小样本量的实验生成稳健结果,例如,乘客取消行程的比率。

在这些计算的基础上,我们使用多重比较修正Benjamini-Hochberg过程),以控制两个或两个以上治疗组时的总体错误发现率(FDR)(例如,在A/B/C测试或A/B/N测试中)。

权力计算提供了关于用户应该投入分析的信心水平的附加信息。低功率的实验将遭受高假阴性率(ii型错误)和高fdr。在我们的XP进行的功率计算中,总是假设t检验。另一方面,所需的样本量计算与功率计算相反,并估计实验需要多少用户才能实现高功率(0.8)。

指标管理

随着XP的分析组件所使用的度量标准的数量的增长(包含1000多个度量标准),对于用户来说,确定适当的度量标准来评估实验的性能变得越来越具有挑战性。为了让我们的分析工具的新用户更容易发现这些指标,我们构建了一个推荐引擎,以促进发现我们平台上可用的指标。

在Uber,有两种常用的协同过滤方法用于内容推荐:基于项目的方法和基于用户的方法。我们主要使用基于项目的建议引擎自特征的实验者通常不会对他们的项目产生强烈的影响。例如,如果一名实验者从Rider团队切换到Uber Eats团队,在选择评估指标时,算法就没有必要回顾该实验者之前的Uber Eats启发的选择。

推荐引擎方法

为了确定两个指标之间的相关性,我们将它们的受欢迎程度和绝对分数相加,使我们能够更好地理解它们之间的关系。计算这些分数的两种基本方法是:

  • 受欢迎程度得分:在实验中,两个指标一起被选择的频率越高,它们之间关系的得分就越高。我们使用Jaccard指数帮助用户在选择初始指标后发现最相关的指标。这个分数说明了实验者从过去的实验中选择的指标。
  • 绝对的分数:使用我们的XP,我们可以从我们的度量生成一个用户样本池并计算皮尔森相关两个指标的得分。这就是偶然发现的原因;也就是说,实验者可能没有考虑过在实验中添加一个指标,因为它没有直接相关,但它可能会随着用户选择的指标而移动。

在计算完这两个分数后,我们将上述两步的分数加在每个术语上,并根据实验者最初选择的指标将得分最高的指标推荐给实验者。

观察发现

随着Uber不断扩大规模,挖掘我们的指标知识库变得越来越具有挑战性。我们的推荐引擎使全球和本地团队都能快速轻松地访问他们所需的信息,从而相应地改进我们的服务。

例如,如果一名实验者想要测量治疗对司机-伙伴供应时间的影响,那么对实验者来说,将新骑手的出行次数作为一个度量标准可能并不明显,因为这个实验关注的是出行方程的司机一侧。然而,由于我们市场的动态,这两个指标对这个实验都很重要。我们的推荐引擎帮助数据科学家和其他用户发现可能不太明显的重要指标。

连续测试

虽然传统的A/B测试方法(例如,t检验)通过重复获取子样本来夸大i型错误,但顺序测试提供了一种持续监控关键业务指标的方法。

在一个用例中,顺序测试对我们的团队来说很方便,即在识别由平台上运行的实验引起的中断时。我们不能等到传统的a /B测试收集足够的样本大小来确定停机的原因;我们希望确保实验不会尽快引入业务指标的关键降级,在本例中,就是在实验期间。因此,我们构建了一个由顺序测试算法驱动的监测系统,以相应地调整置信区间,而不会扩大i型错误。

使用我们的XP,我们对正在进行的实验的实验组和对照组之间的这些业务指标(如应用程序崩溃率和出错频率)进行定期比较。如果没有明显的退化,实验将继续进行,否则将给予警告甚至暂停。该监控系统的工作流程如图6所示:

图6。我们将顺序测试方法集成到XP停机监控系统的工作流程中。

方法

我们利用两种主要的方法来执行用于度量监视目的的顺序测试混合顺序概率比检验(mSPRT)和方差估计与FDR。

混合顺序概率比检验

我们用于监视的最常用方法是mSPRT。这个测试建立在似然比测试的基础上,通过合并一个额外的规范混合分布;假设我们要测试度规差零假设是,则测试统计信息可以写成因为我们有很大的样本量中心极限定理可以应用于大多数情况,我们使用正态分布作为混合分布,.这使得计算变得容易,并且是一个封闭的表达式.这个方法另一个有用的性质是在零假设下,nH,0被证明是一个.接着,我们可以构造置信区间。

用FDR控制进行方差估计

为了正确地应用顺序测试,我们需要尽可能准确地估计方差。由于我们每天监测对照组和治疗组之间的累积差异,来自相同用户的观察结果引入了违反mSPRT检验假设的相关性。例如,如果我们在监控点击率,那么一个用户在多天内的指标可能是相关的。为了克服这一点,我们使用删除一组jackknife方差估计/块自举方法在相关数据下推广mSPRT检验。

由于我们的监视系统希望评估正在进行的实验的整体健康状况,因此我们同时监视许多业务指标,这可能会导致错误警报。从理论上讲,要么Bonferroni或BH校正可以应用在这个场景中。然而,由于丢失业务降级的潜在损失可能是巨大的,我们在这里应用BH校正,并对具有不同重要性和敏感性级别的指标调整参数(MDE、功率、实际意义的容差等)。

用例

假设我们想监控一个特定实验的关键业务指标,如下面的图7所示:

图7。序贯检验方法表明,我们的治疗组和对照组之间存在显著差异,如图b所示。相反,图a中没有发现显著差异。

图A和B的红线表示实验组和对照组之间观察到的累积相对差异。红色的带子是累积相对差值的置信区间。

随着时间的推移,我们积累了更多的样本,置信区间缩小。在图B中,置信区间从给定日期开始始终偏离零,在本例中为11月21日。对于实际意义施加了一个额外的阈值(换句话说,我们的监控系统的容忍度),在某个日期之后,检测到指标退化在统计上和实际上都是显著的。相比之下,图A的置信区间缩小,但始终包含0。因此,我们没有检测到图A中监测到的崩溃的任何回归。

连续的实验

图3。Uber的实验平台团队利用A/B/N测试进行随机实验,以确定升力。

为了加速创新和学习,Uber的数据科学团队一直在通过不断的实验来优化司机、乘客、食客、餐厅和送餐伙伴的体验。我们的团队已经实现了以强盗和优化为重点的强化学习方法,从相关指标性能的持续评估中迭代和快速地学习。

最近,我们完成了一个实验,使用强盗技术进行内容优化,以提高客户粘性。与经典的假设测试方法相比,该技术有助于提高客户参与度。下图9概述了Uber的各种连续实验用例,包括内容优化、超参数调整、支出优化和自动功能推出:

图9。Uber的XP利用了各种用例的持续实验,包括超参数调优和自动功能推出。

在案例研究1中,我们概述了盗匪如何帮助优化优步的电子邮件活动,提高乘客的参与度。在这里,Uber Eats在欧洲、中东和非洲(EMEA)的客户关系管理(CRM)团队发起了一项电子邮件活动,以鼓励在客户生命周期的早期订购势头。实验人员计划用10个不同的电子邮件主题行开展一项活动,并找出在打开率和打开电子邮件数量方面最好的主题行。下面的图10详细说明了这个案例研究:

我们如何利用连续实验的第二个例子是参数调优。与第一个案例不同,第二个案例研究使用了更先进的强盗算法,上下文多臂强盗技术,它结合了统计实验和机器学习建模。我们使用上下文MAB在机器学习模型中选择最佳参数。

如下图11所示,Uber Eats数据科学团队利用MAB测试创建了一个线性编程模型,称为多目标优化(MOO),该模型在Uber Eats应用程序的主feed上对餐厅进行排名:

MOO背后的算法包含了几个指标,比如会话转化率、总预订费和用户留存率。然而,数学解包含一组参数,我们需要给算法。

这些实验包含许多候选参数,用于我们的排名算法。排名结果取决于我们为MOO模型选择的超参数。因此,为了提高MOO模型的性能,我们希望通过多臂匪徒算法求解出最佳的超参数。传统的A/B测试框架处理每个测试的时间太长,所以我们决定在这些实验中使用MAB方法。MAB能够提供一个框架来快速调优这些参数。

我们选择了上下文MAB和贝叶斯优化方法来寻找一个黑盒函数优化问题的最大者。下图12概述了这个实验的设置:

图12:我们的XP利用上下文mab进行超参数调优。

如上所示,上下文贝叶斯优化可以很好地处理个性化信息和探索-利用权衡。

前进

由于其规模和全球影响力,Uber的问题空间带来了独特的挑战。随着我们方法的发展,我们渴望建立更多的聪明的实验平台。在未来,这个平台不仅可以提供从当前实验中收集到的见解,还可以提供以前的实验,随着时间的推移,还可以主动预测指标。

优步的实验平台团队正在招聘。如果你对实验和机器学习有热情,请申请这个角色。

订阅我们的通讯以跟上优步工程公司的最新创新。

评论