〇.前言
Uber的实验平台(XP)在Uber的发展中扮演了重要角色, 它能够启动、调试、测量和监控新想法、产品特性、市场营销活动、促销活动甚至机器学习模型的效果。该平台支持在司机、乘客、Uber Eats和Uber Freight应用程序中进行实验,并广泛用于运行A/B/N测试、因果推断和基于多臂老虎机(MAB)的连续实验。
Uber实验平台上每月几乎都有超过1000个实验在进行。如下图所示:
下图是Uber实验平台用到的方法论
面对特定的应用场景,有多种因素决定我们应采用哪种统计方法论。总体而言,Uber运用四种类型的统计方法:固定期限的A/B/N测试(包括t检验、卡方检验和秩和检验)、顺序概率比率测试(SPRT)、因果推断测试(包括合成控制和差异中的差异检验),以及使用老虎机算法的连续A/B/N测试(如Thompson抽样、置信上限以及结合上下文的多臂机测试的贝叶斯优化等)。Uber还应用block bootstrap和delta方法来估计标准误差,以及基于回归的方法来衡量在统计分析中计算第一类和第二类错误概率时的偏差校正。
1.传统A/B测试
1.1 基础介绍
该方法的一个常见用例是功能发布实验。假设产品经理想要评估新功能是否提高了用户对优步平台的满意度。产品经理可以使用我们的实验平台(XP)收集以下指标:处理组和控制组的指标平均值、提升值(处理效果)、提升值是否显著以及样本量是否足够大以产生高统计功效(statistical power)。
1.2 统计引擎
Uber实验团队致力于提供一套适合大多数用例的假设检验方法,这些方法可以在整个公司范围内应用。为了实现这一目标,他们构建了一个统计引擎。当Uber分析一项随机实验时,第一步是选择一个决策指标(如司机总订单额)。这一选择直接与待检验的假设相关。Uber的实验平台(XP)使实验人员能够轻松重用预定义的指标,并自动处理数据收集和数据验证。根据指标类型,Uber的统计引擎会应用不同的统计假设检验程序,并生成易于阅读的报告。
1.2.1 关键要素和统计方法
在收集数据后,Uber实验平台(XP)的分析平台会验证数据,并检测实验人员在进行A/B实验时需要留意和保持怀疑态度的两大问题:
● 样本量不平衡(Sample size imbalance),即控制组和处理组的样本量比例与预期显著不同。在这些情况下,实验人员必须重新检查其随机化机制。
● 闪烁现象(Flickers),指的是在控制组和实验组之间切换的用户。例如,一名司机购买了一部新的Android手机来替换旧的iPhone,而实验的处理仅针对iOS系统。该司机将从实验组切换到控制组。这类用户的存在可能会污染实验结果,因此我们在分析中会排除这些用户(闪烁现象)。
我们的大多数用例都是随机实验,而且大多数情况下,汇总数据足以进行固定范围A/B测试。在用户层面,存在三种不同类型的指标:
● 连续指标(Continuous metrics)包含一个数值列,例如每个用户的总订单额。
● 比例结构指标(Proportion metrics)包含一个二进制指示值列,例如测试注册后完成任何行程的用户比例。
● 比率指标(Ratio metrics)包含两个数值列,即分子值和分母值,例如行程完成率,其中分子值是完成的行程数,分母值是总行程请求数。
为了提高A/B分析的稳健性和有效性,我们应用了三种数据预处理变体:
● 异常值检测可消除数据中的不规则性,从而提高分析结果的稳健性。我们使用基于聚类的算法来进行异常值检测和移除。
● 减少方差有助于提高假设检验的统计效力,这在实验用户基础较小或需要在不牺牲科学严谨性的情况下提前结束实验时尤其有用。CUPED方法(Control Variate and Pre-Experiment Data)利用我们拥有的额外信息来减少决策指标中的方差。
● 实验前偏差:由于我们用户的多样性,实验前偏差是优步的一大挑战。有时,仅仅通过随机化来构建强大的反事实是无法解决问题的。DID(Diff-in-Diff)(DID)是定量研究中公认的方法,我们用它来纠正组间实验前偏差,从而产生可靠的处理效果估计。
P值计算是我们统计引擎的核心。P值直接决定了实验平台(XP)是否报告一个结果是显著的。在常见的A/B测试中,我们将P值与期望的假阳性率(I型错误,通常为0.05)进行比较。我们的实验平台利用了各种P值计算方法,包括:
1)韦尔奇t检验(Welch's t-test),这是连续指标(如完成的行程)的默认检验方法。
Welch's t-test,也称为Welch修正t检验或不等方差t检验,是一种用于比较两个独立样本均值的统计方法,尤其适用于当两个样本的总体方差可能不相等(即方差不齐)的情况。这种方法在样本量较小或总体方差未知时尤为有用。
(1)原理
Welch's t-test通过对方差进行加权,从而调整统计量的计算,使得在方差不齐的情况下也能进行有效的均值比较。这种方法考虑了样本方差的不同,对自由度进行了相应的调整,以反映这种差异。
(2)假设
Welch's t-test基于以下假设:
* 两个样本是独立的。
* 每个样本内的观测值是相互独立的。
* 每个样本的观测值来自具有正态分布的总体(但这一假设在实际应用中可以放宽)。
(5)注意事项
* 虽然Welch's t-test对方差不齐具有一定的稳健性,但在实际应用中仍需注意数据的正态性假设。如果数据明显偏离正态分布,可能需要考虑使用非参数检验方法。
* 在使用Welch's t-test时,应确保样本是独立的,且每个样本内的观测值也是相互独立的。
3)卡方检验(Chi-squared test),用于比例指标(如司机留存率)。
1.3 指标管理
随着XP分析组件中使用的指标数量不断增加(现已包含1000多个指标),用户确定用于评估实验性能的适当指标变得越来越具有挑战性。为了让分析工具的新用户更容易发现这些指标,Uber构建了一个推荐引擎,以简化平台上可用指标的发现过程。
在优步,用于内容推荐的两种常见协同过滤方法是基于项目的和基于用户的方法。由于实验者的特征通常不会对其项目产生强烈影响,因此我们主要使用基于项目的推荐引擎。例如,如果一位实验者从骑手团队转到优步餐饮团队,那么在选择用于评估的指标时,算法无需回顾该实验者之前受优步餐饮启发的选择。
为了确定两个指标之间的相关性,Uber将其受欢迎程度和绝对分数相加,以便更好地了解它们之间的关系。计算这些分数的两种基本方法是:
1)受欢迎程度分数:两个指标在跨实验中一起被选择的频率越高,它们之间的关系得分就越高。我们使用Jaccard指数来帮助用户在选择初始指标后发现最相关的指标。该分数考虑了实验者从过去实验中选择的指标。
2)绝对分数:利用我们的XP,我们可以从我们的指标中生成一个用户样本池,并计算两个指标的皮尔逊相关系数。这考虑了偶然发现的情况;即,实验者可能没有考虑将某个非直接相关的指标添加到实验中,但随着用户选择,指标是否进入考虑范畴会发生变化。
通过结合这两种方法,实验平台推荐引擎能够为用户提供既基于历史选择习惯又基于统计相关性的综合推荐,从而帮助他们快速定位到最能反映实验性能的关键指标。
在计算出这两个分数后,实验平台对上述两个步骤的分数按每个术语的相对权重进行加总,并根据实验人员首选的度量标准,将得分最高的度量标准推荐给他们。
2.序贯检验(Sequential testing)
传统的A/B测试方法(如t检验)通过反复抽取子样本扩大了第一类错误,而序贯检验则提供了一种连续监控关键业务指标的方法。
对于团队来说,序贯检验在识别平台上运行实验导致的中断时非常有用。
利用实验平台,我们对这些业务指标(如应用崩溃率和出行频率)进行定期比较,比较正在进行的实验中的实验组和控制组。如果没有显著的退化,则实验继续进行;否则,将发出警报甚至暂停实验。该监控系统的工作流程如图所示:
我们利用两种主要的方法论来进行度量监控的序贯检验:混合序贯概率比检验(mSPRT)和基于FDR的方差估计。
2.1 混合序贯概率比检验(mSPRT)
为了正确应用序贯检验,我们需要尽可能准确地估计方差。由于我们每天监控实验组和处理组之间的累积差异,来自同一用户的观测值会产生相关性,这违反了mSPRT检验的假设。例如,如果我们监控点击率,那么同一用户在不同天数的度量值可能会产生相关性。为了克服这个问题,我们使用去一组留一法(delete-a-group jackknife)方差估计/区块自助法(block bootstrap)来在相关数据下推广mSPRT检验。
由于我们的监控系统想要评估正在进行的实验的整体健康状况,因此我们同时监控许多业务度量指标,这可能导致误报。在理论上,可以应用Bonferroni校正或BH校正(Benjamini-Hochberg校正)来处理这种情况。然而,由于错过业务退化的潜在损失可能很大,因此我们在这里应用BH校正,并针对不同重要性和敏感性的度量指标调整参数(如最小可检测效应量MDE、效能、实际意义的容差等)。
2.2 FDR控制下的方差估计
假设我们想要监控某个特定实验的关键业务度量指标,如图7所示:
图A和图B中的红色线条表示我们处理组和控制组之间观察到的累积相对差异。红色区域带表示这一累积相对差异的置信区间。
随着时间的推移,我们积累了更多的样本,置信区间也逐渐变窄。在图B中,从某个特定日期(在此示例中为11月21日)开始,置信区间始终偏离零。在施加了一个额外的阈值(即我们监控系统的容差)来评估实际意义后,我们发现某个日期之后的度量指标退化在统计学和实际上都具有显著性。相比之下,图A的置信区间虽然缩小,但始终包含0。因此,我们没有在图A监控的崩溃中检测到任何回归趋势。
3.连续实验(Continuous experiments)
为了加速创新和学习,优步的数据科学团队一直在通过连续实验来优化司机、乘客、食客、餐厅和配送合作伙伴的体验。我们的团队已经实施了以bandit和优化为重点的强化学习方法,以便从对相关指标性能的持续评估中迭代和快速学习。
最近,我们使用bandit技术完成了一项内容优化实验,以提高客户参与度。与经典的假设检验方法相比,该技术有助于提高客户参与度。下面的图概述了优步的各种持续实验用例,包括内容优化、超参数调整、支出优化和自动化功能部署:
在案例研究1中,Uber概述了bandit算法如何帮助优步优化电子邮件营销活动并增强乘客参与度。在这里,优步欧洲、中东和非洲(EMEA)地区的客户关系管理(CRM)团队启动了一项电子邮件营销活动,旨在在客户生命周期的早期阶段鼓励订单增长。实验人员计划开展一项包含十个不同电子邮件主题的营销活动,并根据打开率和打开电子邮件的数量找出最佳主题。下面的图详细描述了这一案例研究:
Uber利用持续实验的第二个例子是参数调优。与第一个案例不同,第二个案例研究使用了更高级的bandit算法,即上下文多臂bandit技术,该技术结合了统计实验和机器学习建模。我们使用上下文多臂bandit来选择机器学习模型中的最佳参数。
如下图所示,优步外卖数据科学团队利用多臂bandit测试创建了一个线性规划模型,称为多目标优化(MOO),该模型对优步外卖应用主信息流中的餐厅进行排名:
MOO算法背后融入了多个指标,如会话转化率、总预订费用和用户留存率。然而,数学解决方案包含一组我们需要提供给算法的参数。
这些实验包含许多可与我们的排名算法一起使用的参数候选。排名结果取决于我们为MOO模型选择的超参数。因此,为了提高MOO模型的性能,我们希望通过多臂bandit算法找出最佳超参数。传统的A/B测试框架处理每个测试的时间太长,因此我们决定在这些实验中使用MAB方法。MAB能够提供一个框架来快速调整这些参数。
Uber选择了上下文多臂bandit和贝叶斯优化方法来寻找黑盒函数优化问题的最大化器。下面的图概述了本实验的设置:
如上所述,上下文贝叶斯优化在个性化信息和探索-利用权衡方面均表现出色。
参考
^Uber实验平台相关实践 https://www.uber.com/en-HK/blog/xp/
-END-
免费领资料
数据禅心是一个数据分析职业者联盟,分享交流工作经验和心得,关注公号有免费资料畅领(领取方法:点击“阅读原文”)。
数据分析+数据产品经理->能力模型和测评;
战略工具箱+思维模型->助力顶层思维设计;
数据分析+统计学+因果推断 ->提升分析技能功底;
Python+机器学习 ->进阶分析技能开挂;
数据分析成长路径 ->知晓路在哪里;
1on1陪跑
数据禅心还是一个职友互帮互助的组织,超十年工作经验的数据分析师/科学家/数据产品经理/总监作为“陪伴教练”,为陷入迷茫的各位职场人答疑解惑,帮助各位走出泥潭,实现个人成长,甚至迎来职业跃迁。如果你有任何职场上的问题,欢迎来找我们沟通。每个来沟通的职场人都会赠送半小时的咨询~抓住机会来撩吧(文末扫二维码“意向搜集”)~
我想转行到数分,不知道学什么?
我不知道我未来的职业规划是什么?
总是在基层,我还有机会晋升么?
我想跳槽,但不知道要不要跳?
我简历不太行,没有信心?
我没啥项目经验,怎么包装?
我总觉得自己价值发挥不出来,怎么办?
...
请扫码填写报名意向:
体系化学习
数据禅心我们几位数据分析师,结合自己在职场中的成长经验,将数据分析经验整理成了两个训练营,一个是入门训练营,适合-1~3年数分,以及转行/小白;一个是进阶训练营,适合3年左右需要提升的数据人。具体课程可以扫码,或点击“原文链接”查看:
数据分析入门训练营:35天带你数据分析入门
数据分析师能力模型&测评
另外,组织也新发布了《数据分析师能力模型&测评》,大家可以点击下方传送门,了解能力模型,并且做免费测评~优秀的数据分析师都需要什么能力?
点个“喜欢”再走吧~