用数据科学和机器学习在Uber转型财务预测

0
用数据科学和机器学习在Uber转型财务预测

我们之前突出了一些演示在我们的第二届年度优步科技日发布。在这篇文章中,工程高级软件工程师、Uber Tech Day主持人宋春燕(Chunyan Song)讨论了我们如何将数据科学和机器学习应用于我们的财务规划平台。

春燕的歌

截至2018年,Uber的拼车业务在超过600个城市运营,而Uber Eats的外卖业务已扩展到全球250多个城市。2018年,拼车业务的预订毛利率达到370亿美元。优步平台拥有超过7500万活跃乘客和300万活跃司机,每天为1500万次出行提供动力。

财务预测和预算规划对于一个每天都与这么多人的生活息息相关的组织来说是一个难以置信的挑战。加上历史和当前惊人的增长率,这些任务似乎几乎不可能完成。

应对大规模经营全球业务的挑战而且为了做出明智的战略投资决策,我们调动了数据科学、机器学习和金融技术方面的团队。

为了应对这一挑战,我们建立了内部财务平台,而不是依赖于年度预算和预测,我们可以不断更新我们的计划,以应对全球和本地不断变化的商业环境。通过场景规划,我们的团队成员可以测试围绕uber特定目标的支出水平,从可持续增长到单个市场的盈利能力。

我们的金融平台让我们能够快速应对不断变化的金融状况,支持优步业务的增长和复杂性。

在这篇文章中,我们将回顾优步财务规划的过程,并分享我们如何构建优步的金融云平台,以应对动态市场和快速增长带来的独特挑战。

计划周期概述

和大多数公司一样,Uber的财务规划周期包括三个阶段,如图1所示,即战略目标、运营规划和分析的周期:

图1:Uber的财务规划周期分为三个阶段:战略、运营和洞察。
图1:Uber的财务规划周期分为三个阶段:战略、运营和洞察。

战略规划:这个阶段决定了整个公司和全球市场的预算分配和目标预期。时间框架看起来是财务周期的结束(大多数大公司倾向于以年度或季度为基础进行规划)。

操作:在战略规划之后,城市团队朝着设定的预算和目标期望工作。运营规划的时间相对较短,最短的可以持续一周,最长的可以持续一个月,在战略规划期间不断重复,直到下一次预算刷新。

见解:这一持续过程监测业务业绩,必要时重新评估和调整预算目标,并为改进下一个周期的财务预测提出建议。

痛点和动机

在大多数公司,财务规划是按年度周期进行的,战略规划是在上一个财政年度结束时完成的。然而,优步的全球规模让这种年度节奏显得不够。

在意识到这一点后,我们开始更频繁地运行我们的计划周期。我们建立了一个年中调整基础的过程,使用类似于我们的年度计划的计算来调整预算和预测。此外,我们每两周在全球市场进行一次业务脉搏检查。

我们确定了我们使用的过程和工具中的许多痛点和限制:

  • 我们的第三方软件,一个公司财务管理系统,不能托管由我们的数据科学家建立的定制模型,也不能有效地支持多个组织的并行计划。
  • 虽然战略规划是在数据科学家的支持下在我们的公司总部完成的,但运营融资是在城市层面规划的,每个城市都有自己的流程。城市团队往往只能依靠当地的知识和未经检验的假设。
  • 缺乏流程协调意味着自上而下的预算分配以CSV文件的形式从我们的中央财务团队发送到区域领导。区域领导和城市团队对CSV文件进行编辑,并通过电子邮件发回。这个过程是手动的,繁琐且容易出错。

这些痛点使我们的财务规划周期变得繁琐,削弱了我们调整战略重点以应对快速变化的市场动态的能力。这种灵活性的缺乏促使我们建立自己的金融云平台,以解决以下优先事项:

  • 规模准时:按需战略计划,而不是死板的年度或季度计划
  • 规模上的位置:中央财务团队、区域财务主管、城市运营商、营销经理和广告技术代表之间的轻松协作
  • 在所有流程中共享模型:为战略规划、运营和洞察阶段提供统一的数据科学支持
  • 支持Uber的智能预测模型:架构允许插入我们数以万计的模型中的任何一个,这些模型预测不同城市的不同业务指标,涵盖短期和长期的时间框架

优步的金融云平台

我们的财务情报团队为财务预测和规划构建的软件是一个端到端解决方案,包括顶层UI、建模场景和优化预算的平台,以及财务数据仓库和度量存储。

我们设计UI是为了方便我们的公司财务团队进行预算分配和我们的城市团队进行场景规划。这个接口使协作变得毫不费力,因为团队成员不再需要用电子邮件发送包含财务预测数据的电子表格;相反,它们可以在相同的UI中并发地修改、比较和共享场景,所有这些场景都运行在相同的后端系统上。

我们的场景管理和优化平台构成了中间层。场景管理平台组成模型并计算城市团队使用的场景,以确定他们可以使用哪些杠杆或指标来获得所需的结果。优化平台使用数学优化以帮助确定我们对每个城市的全球预算分配和他们使用的预测业务指标。

我们的机器学习的平台,米开朗基罗在这里也发挥了作用,支持场景规划和优化。它可以让数十名数据科学家进行训练、实验、回测,并部署他们的模型进行在线预测,同时还提供模型计算服务。

最后但同样重要的是,好的模型需要用好的数据来训练。我们的财务软件的底层由数据管道、财务数据仓库和度量存储组成。

图2:我们在Uber构建的财务软件包含了多个层面,从UI到计算再到数据。
图2:我们在Uber构建的财务软件包含了多个层面,从UI到计算再到数据。

支持动态按需规划

我们搭建的金融云平台使我们能够全年不断调整财务规划,而不是依赖于季度或年度计划。

  • 涉众能够根据需求进行战略规划。在下面的图3中,我们使用每月战略规划作为示例来说明这个过程。
  • 在幕后,由于统一的机器学习建模框架和通用计算平台,战略规划和运营共享许多模型。这些共享模型用于连接长期和短期预测,使它们的预测结果彼此一致。
  • 频繁刷新数据使模型更加准确。每个月,我们使用新收集的数据来重新训练我们的模型,使我们能够立即在下个月的战略规划中纳入新的学习。
图3:我们的金融云平台支持持续预测和战略规划。
图3:我们的金融云平台支持持续预测和战略规划。

交互式UI使总部、区域和城市团队之间的协作无缝化,因为它们都可以同时运行预测和规划,并将结果汇集在一起。

建立一个场景

在Uber,财务规划场景包括安排在工作流中的业务度量和计算。我们可以输入初始指标,看看它们会产生什么结果。为了可视化场景,我们将它们表示为有向图,类似于下面的图4。每个场景通常都显示了预算如何影响结果。例如,场景可以显示根据我们的营销支出,有多少新乘客会选择Uber。

图4:有向图是可视化场景的有用方法。它通过度量和计算显示了工作流。
图4:有向图是可视化场景的有用方法。它通过度量和计算显示了工作流。

由于可能包含许多度量和计算,这些场景可能非常复杂并显示许多结果。通过使用场景,我们可以测试预算分配将如何影响特定城市的结果。我们用机器智能为这些场景提供动力,但这只是魔法的一半。我们还利用我们在世界各地的城市团队中数千名有才华的员工的专业知识。

指标

衡量优步业务的指标有很多,从骑手/司机注册数量、首次出行数量到总预订量,无所不包。根据特定市场的成熟度,我们在战略上优化某些指标。例如,在一个新推出的市场中,战略重点通常是骑手数量的增长,我们用来衡量成功的一个关键指标可能是first_trips,新骑手的第一次旅行。在成熟的市场中,例如美国的主要城市,我们可能会将我们的重点转移到盈利能力上,这意味着我们可能要最大化net_inflow公制,我们的净利润,同时保持支出度规。

计算

我们通过计算来运行一组输入指标,以获得一组输出指标,这可以是场景中的中间步骤或最终结果,例如,向我们展示,如果我们在营销上花费一定的金额,我们可以期待特定数量的新骑手。计算可以是:

  • 用历史数据训练的机器学习模型。
  • 一种数学公式,通常用现有的数学库实现。
  • 例如,一个简单的计算,旅行次数乘以票价等于总预订量。

当一个图节点是一个计算时,紧挨着它的节点都是输入度量,紧挨着它的节点都是输出度量。因此,该场景的图不仅捕获了所有这些度量和计算,而且还捕获了它们的依赖性。从本质上讲,图表是2-colorable而且无环,因为让一个度量或计算直接或间接地依赖于它本身是没有意义的。

由于图是无循环的,我们可以对其节点进行拓扑排序。如上图4所示,我们可以将其节点排序为x1, x2, A, x3, B, x4, x5,这为我们提供了另一种使用函数列表表示该图的方法:

x3 = A(x1, x2)

x4, x5 = B(x2, x3)

在本例中,x1和x2是初始度量,这意味着它们没有任何前面的节点。给定这些初始指标,我们可以通过运行计算来计算场景中所有剩余的指标拓扑顺序

正如在Uber的拼车业务中使用的那样,我们构建了一个如下面的图5所示的场景。在本例中,通过提供初始度量acquistion_spending而且engagement_spending,在拓扑上运行计算将计算场景中剩下的度量,直到最后:net_inflow

图5:这个有向图代表了Uber拼车业务的一个场景,方框显示指标,椭圆表示计算结果。
图5:这个有向图代表了Uber拼车业务的一个场景,方框显示指标,椭圆表示计算结果。

上面的场景展示了我们如何能够让大量的智能模型,由Uber的不同团队设计,一起工作。

基于场景的规划

在构建了场景之后,我们就可以让它们工作了。通过结合机器智能和人类专业知识,场景增强了我们的金融预测结果和决策能力。

场景管理平台主要职责如下:

  • 创建、读取(查询)、更新和删除场景实体。每个场景实体由我们期望的度量值组成,并由卡珊德拉,我们的分布式数据库,在平台后面。
  • 将预算分配优化委派给另一个服务,并在我们称为“播种”的过程中根据分配结果创建基本场景。
  • 计算使用用户提供的指标覆盖的场景。每个单独的计算都可以委托给另一个服务,通常是模型托管服务。
图6:场景管理和计算平台,构成我们的财务预测系统的一部分,通过计算处理场景实体,以达到结果。
图6:场景管理和计算平台,构成我们的财务预测系统的一部分,通过计算处理场景实体,以达到结果。

播种基本场景

在每个财务规划周期的开始,我们使用预算分配算法来确定每个城市的初始支出指标,运行完整的场景计算,并生成一组基本场景,也称为播种过程。由纯机器智能创建的基本场景是由算法预测的指标。以São Paulo的一个假设的基本场景为例,如下图7所示:

图7 -在Uber用数据科学和机器学习改变财务预测
图7:São Paulo的基本场景,使用机器智能开发,结合模型和度量来确定实现特定结果所需的预算分配。

为了便于解释,假设播种过程给São Paulo city团队200美元用于新用户获取(acquisition_spending)和100美元的现有用户留存(engagement_spending度量)。的成本曲线模型告诉我们将$200设置为acquistion_spendingMetric会给我们带来35个新骑手注册。通过按拓扑顺序运行我们的模型,我们可以计算我们的度量,包括最后一个,anet_inflow1274美元。场景计算是幂等的,这意味着重复的重新计算将产生相同的度量值。

用户覆盖和场景重新计算

由于各种原因,模型可能不准确,包括:

  • 在一个新的市场中,我们可能没有足够的历史数据来训练模型并达到我们想要的准确性。
  • 通常情况下,模特们都很擅长融入季节性元素,比如美国的万圣节和中东的斋月。但这些模型可能没有考虑到即将到来的一次性事件。例如,当这些模型为费城训练时,他们很难预测老鹰队就能打进超级碗了,这很可能会影响2018年2月的预计出行数量。

我们的城市团队通常拥有关于其所在位置的附加信息,并且可以根据基本场景中的度量进行相应的调整。例如,São Paulo团队可能认为同样的200美元acquisition_spending会有50个新骑手注册,而不是基础场景中预测的35个。如下面的图8所示,我们可以使用覆盖值重新运行场景,并生成更新的指标,包括net_inflow1350美元。

图8 -在Uber用数据科学和机器学习改变财务预测
图8:该场景接受来自São Paulo城市团队的专家知识,考虑到模型未知的因素。

调整杠杆和比较场景

为了优化我们的操作效率,本地团队经常想要调整杠杆,本质上是改变度量,以测试不同的假设。例如,他们可能想知道在特定城市减少收购支出与降低票价的影响。我们建立了一个交互式UI,这样他们就可以比较场景。

当我们的团队需要测试一个假设时,他们可以,例如,通过克隆基本场景创建两个新的场景,然后在一个场景中覆盖acquisition_spending在另一个覆盖中票价.在计算完这两种情况后,他们可以对它们进行比较,并查看其对行程、总预订量和其他指标的影响。他们可以创建尽可能多的场景,并最终促进最相关的场景来指导实际的日常操作。

图9 -在Uber用数据科学和机器学习改变财务预测
图9:金融系统允许用户测试不同的假设,以确定哪种场景将实现他们想要的结果。

图10:用户可以覆盖指标并重新计算场景,以便与基本场景进行比较。
图10:用户可以覆盖指标并重新计算场景,以便与基本场景进行比较。

预算分配优化

在财务规划周期开始时,自上而下的播种过程将导致预算分配给Uber的所有600多个城市运营团队,以及包含每个城市预测业务指标的基本场景。为了使我们的全球组织达到最佳预算,我们使用数学优化来模拟优步的顶层战略决策。我们建立了自己的优化平台,这是我们金融云服务的一部分,用来处理这些计算。

将战略投资建模为优化问题

每个战略焦点都可以转化为解决特定业务指标的优化问题。在优步的早期,我们的首要任务是增长,因此我们选择优化的指标是出行次数。当然,我们需要在限制条件下工作,比如开支。随着业务的成熟,我们的重点转向了盈利能力,优化的指标变成了净流入。

在数学优化问题中,我们优化的度量称为“目标”。注意,优化可能并不总是包含最大化问题;这也可能是一个最小化问题。以下是我们业务中出现的一些目标的例子:

  • 减少支出
  • 最大化司机或骑手的数量
  • 最大限度地提高首次旅行次数或总旅行次数
  • 最大化预订量

对于每个优化问题,我们还可以指定约束条件,例如:

  • 最大预算,整体或特定渠道(如市场营销vs .骑手推广)
  • 最少的首次旅行次数
  • 最低环比总预订增长

这些基于公司当前战略优先级的目标和约束被输入优化平台,该平台找到最优预算分配,并生成所有城市的基本场景,如下图11所示:

图11:一旦我们确定了目标和约束条件,我们的优化平台就可以为每个城市团队构建场景。
图11:一旦我们确定了目标和约束条件,我们的优化平台就可以为每个城市团队构建场景。

在实践中,我们通常不会在优步的所有全球业务中有一个单一的目标,相反,我们通常对不同的地区有不同的战略优先级。例如,拉丁美洲是一个较新的市场,我们希望大力投资于增长,而在北美,一个成熟的市场,一些城市已经接近饱和,我们可能会关注盈利能力。印度市场仍显示出巨大的未开发潜力,我们的重点可能是可持续增长。

为了支持多个目标,我们根据地理树形结构来构造优化问题。目标和约束可以在任何节点上定义。然后我们可以在任何抽象级别上运行优化问题,实现全局和区域目标。

图12 -用数据科学和机器学习在Uber转变财务预测
图12:按地区调整财务目标让我们对特定市场的情况做出反应。

我们构建了一个UI,使总部的财务团队能够以优化问题的形式指定他们的战略目标,例如增长优化vs效率优化。

优化平台与算法

一旦将战略投资目标以优化问题的形式输入到UI中,优化平台就会尝试通过迭代寻找最大值或最小值来解决问题。

下面的图13给出了我们如何解决预算优化问题的例子。假设我们正在为拉丁美洲做预算分配,其中包括几十个城市(São保罗、墨西哥城、里约热内卢里约热内卢、布宜诺斯艾利斯等)。在该模型中,我们将战略重点设置为增长,优化目标设置为所有城市的“出行总量最大化”。

图13 -在Uber用数据科学和机器学习改变财务预测
图13:优化平台将目标设置为最大行程次数,迭代数千甚至数百万个场景,以找到最优场景。

该算法将优化问题转化为一个大问题while循环,这可能包括数千甚至数百万次迭代。在每次迭代中,算法为每个城市提供一组初始指标,在我们的示例中是支出指标。然后为每个城市创建一个场景,并计算这些场景中的所有指标。该算法只跟踪在累计行程指标最大的迭代中生成的场景(换句话说,它通过迭代找到最大值)。

我们可能只需要运行到我们的客观度量的有向图,在本例中是trips。所有后续的模型和指标(总预订和净流入)都可以跳过。换句话说,优化平台使用的有向图始终是场景规划中使用的全图的子图。

优化平台的机制非常简单。神奇之处在于优化算法,它们构成了整个预算分配优化过程的大脑。我们使用了一些优化算法。凸优化是容易构造和实现的,但它是理论上有界这些假设并不总是适用于复杂的现实世界问题。我们还采用了梯度下降法优化,这使得我们可以表达优化问题的丰富性。梯度下降会产生更多的迭代,更昂贵的计算,它可能不总是收敛,通常需要很长时间才能收敛。然而,我们可以定义我们想要的精度,而近似的结果通常足以满足我们的需要。

下一个步骤

作为我们支持滚动预测工作的一部分,我们还自动化了系统的模型刷新、再培训和回测过程。自动化这些过程加快了反馈循环,并不断提高了我们模型的准确性。我们还利用其他团队的工作,如市场、全球情报和风险,向系统注入更多的指标。

我们的金融数据科学家不断建立新的模型。我们主要使用城市级别的聚合指标来进行预测,但现在正在试验依赖于单个用户级别指标的深度学习模型。深度学习模型需要明显更高的计算复杂度,但产生更准确的预测。由于运行时性能的原因,使用这些训练过的模型进行在线预测存在技术挑战。

我们也在研究如何将我们的金融云服务应用于Uber的一般资源管理。这个系统的通用设计和实现已经让我们的Uber Eats和营销团队迁移了他们的财务预测过程。例如,Uber Eats团队只需要定义一个规范,从而创建业务指标和计算,在我们的系统上生成预测。我们也在探索如何将这些平台应用到财务规划以外的其他领域,比如硬件资源配置优化和人力资源配置。

我们渴望看到Uber的其他团队如何利用我们的系统来构建人工智能驱动的预测平台,以进一步发展我们的业务。

如果您对构建创新和智能的财务规划软件感兴趣,请考虑一下加入我们的团队

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

评论