规模预测外文翻译资料
2021-12-14 22:50:40
英语原文共 25 页
规模预测
Sean J. Taylor[1]dagger;
Facebook, Menlo Park, 加州, 美国
sjt@fb.com 和Benjamin Lethamdagger;
Facebook, Menlo Park, C加州,美国 bletham@fb.com
摘要
预测是一项常见的数据科学任务,可帮助组织提高能力计划、目标设定和异常检测。尽管它很重要,但是仍存在与生成可靠和高质量预测相关的严重挑战-尤其是当各种时间序列和具有时间序列建模方面专业知识的分析师相对较少。为了应对这些挑战,我们描述了一个“按比例“预测的实用方法,这方法同时结合了可配置模型和循环分析进行规模分析。我们提出一个拥有可判断参数的模块化回归模型,可由拥有时间序列领域知识的分析师直观地进行调整。我们描述性能分析去比较和评估预测过程,并自动标记预测结果用于手动检查和调整。帮助分析师充分利用其专业知识的工具最有效实现对业务时间序列的可靠、实用的预测
关键词: 时间序列, 统计实践, 非线性回归
介绍
预测是一项数据科学任务,对于组织内的许多活动至关重要。例如,所有行业部门的组织必须参与容量规划,以有效地分配稀缺资源和目标设定,以便衡量相对于基线的绩效。对于任何一台机器或大多数分析师来说,生成高质量预测并不是一个容易的问题。我们在实践创建业务预测中观察到两个主要问题。首先,完全自动的预测技术可能难以调整,并且通常不够灵活,无法包含有用的假设或启发式方法。其次,负责整个组织的数据科学任务的分析师一般对他们支持的特定产品或服务拥有深厚的专业知识,但通常没有时间序列预测方面的培训。能够生产高品质的预测的分析师自然而然是非常罕见的,因为预测是一项需要实质性的专业技能经验能力。
结果是对高质量预测的需求往往远远超过它们的生产速度。这一观察结果是我们在此进行研究的动力 - 我们打算为大规模生产预测提供一些有用的指导,对于几个规模的概念。
我们解决的前两种规模是商业预测方法,应该适合于1)大量人员进行预测,可能没有时间序列方法的培训; 2)各种具有潜在特殊功能的预测问题。在第3节中,我们提出了一个时间序列模型,该模型足够灵活,适用于广泛的业务时间序列,但可由非专家配置,他们可能具有关于数据生成过程的领域知识,但对时间序列模型和方法知之甚少。
我们解决的第三种规模是,在大多数现实环境中,将创建大量预测,需要有效,自动化的方法来评估和比较它们,以及检测它们何时可能表现不佳。当进行数百甚至数千次预测时,让机器完成模型评估和比较的艰苦工作,同时有效地使用人工反馈来解决性能问题就变得非常重要。在第4节中,我们描述了一个预测评估系统
图1:大规模预测中的循环分析方法的示意图,这最大地利用了人工和自动化任务。
它使用模拟的历史预测来估计样本外的性能,并为人类分析师确定有问题的预测,以了解出现的问题和进行必要的模型调整
值得注意的是,我们并没有关注规模的典型考虑因素:计算和存储。我们发现预测大量时间序列的计算和基础设施问题相对简单 - 通常这些拟合程序非常容易并行化,并且预测不难存储在关系数据库中。我们在实践中观察到的实际规模问题涉及各种预测问题引起的复杂性以及预测一旦生成便建立大量信任。
我们在图1中概括了大规模业务预测的循环分析方法。我们首先使用灵活的规范对时间序列建模,该规范对每个参数都有直接的人工解释。然后,我们针对此模型生成预测,并在各种历史模拟预测日期基础上生成一组合理的基线,并评估预测性能。当表现不佳或预测的其他方面需要人为干预时,我们会按照优先顺序将这些潜在问题标记给人类分析师。然后,分析师可以检查预测,并可能根据此反馈调整模型。
图2:在Facebook上创建的事件数。每天都有一个点,点数按星期显示颜色,以显示每周周期。这个时间序列的特征代表了许多商业时间序列:多个强烈的季节性,趋势变化,异常值和假日效应。
商业时间序列特征
虽然存在各种各样的业务预测问题,但是它们中的许多都有一些共同的特征。图2显示了Facebook Events的代表性Facebook时间序列。 Facebook用户可以使用Events平台创建事件页面,邀请其他人以及以各种方式与事件交互。图2显示了在Facebook上创建的事件数量的每日数据。在这个时间序列中可以清楚地看到几种季节性效果:每周和每年周期,以及圣诞节和新年期间的明显下降。这些类型的季节性影响自然会产生,并且可以在人类行为产生的时间序列中预期。时间序列也显示了过去六个月的趋势明显变化,这可能会受到由新产品或市场变化影响的时间序列的影响。最后,真实数据集通常有异常值,这个时间序列也不例外。
该时间序列提供了使用全自动方法产生合理预测的困难的有用说明。图3显示了使用来自R中的预测包的若干自动程序的预测,如Hyndman等人所述。 (2007年)。在历史记录中的三个点进行了预测,每个点仅使用截至该点的时间序列部分来模拟在该日期进行预测。图中的方法是:auto.arima,它适合一系列ARIMA模型并自动选择最佳模型; ets,它适合指数平滑模型的集合并选择最佳(Hyndman et al.2002); snaive,随机游走模型,每周季节性(季节性幼稚)不断预测;和tbats,TBATS模型,每周和每年
季节性(De Livera et al.2011)。
图3中的方法通常很难产生与这些时间序列的特征相匹配的预测。当截止期附近的趋势发生变化并且无法捕捉任何季节性时,自动ARIMA预测容易出现大的趋势误差。指数平滑和季节性天真预测捕捉每周季节性,但错过长期季节性。所有这些方法都对年末下降反应过度,因为它们没有充分模拟年度季节性。
当预测很差时,我们希望能够将方法的参数调整到手头的问题。调整这些方法需要彻底了解基础时间序列模型的工作原理。例如,自动ARIMA的第一个输入参数是差分的最大阶数,自回归分量和移动平均分量。典型的分析师不知道如何调整这些订单以避免图3中的行为 - 这是难以扩展的专业类型。
先知预测模型
我们现在描述一个时间序列预测模型,用于处理图2中所示的业务时间序列的共同特征。重要的是,它还设计为具有可在不知道底层模型细节的情况下进行调整的直观参数。这对于分析师有效调整模型是必要的,如图1所示
我们的实现可以作为Python和R中的开源软件使用,称为Prophet。
图3:使用一系列自动预测程序对图2中的时间序列进行预测。预测是在历史中的三个说明点进行的,每个点仅使用到该点的时间序列的部分。每天的预测按星期分组并着色,以显示每周季节性。我们在绘图期间删除了异常值,以允许图中更多的垂直空间。 (https://facebook.github.io/prophet/)
我们使用可分解的时间序列模型(Harvey&Peters 1990),其中包含三个主要模型组件:趋势,季节性和假期。它们结合在下面 方程:
. (1)
这里g(t)是趋势函数,它模拟时间序列值的非周期性变化,s(t)表示周期性变化(例如,每周和每年季节性),而h(t)表示假期的影响。在一天或多天内发生在可能不正常的时间表上。误差项t表示模型不适应的任何特殊变化;稍后我们将做出t为的参数假设
正常分布。
该规范类似于广义加性模型(GAM)(Hastie&Tibshirani 1987),这是一类回归模型,具有应用于回归量的潜在非线性平滑器。这里我们只使用时间作为回归量,但可能使用时间的几个线性和非线性函数作为分量。将季节性建模作为附加成分与指数平滑相同(Gardner 1985)。季节性效应是乘以g(t)的因子的乘法季节性可以通过a来实现日志转换。
GAM配方具有以下优点:它可以容易地分解并且在必要时容纳新的组分,例如当识别出新的季节性来源时。 GAM也很快适应,使用背装或L-BFGS(Byrd等人1995)(我们更喜欢后者),以便用户可以交互式地改变模型参数。
实际上,我们将预测问题定义为曲线拟合练习,这与明确考虑数据中时间依赖结构的时间序列模型本质上不同。虽然我们放弃了使用ARIMA等生成模型的一些重要的推理优势,但这种配方提供了许多实际优势:
- 灵活性:我们可以轻松地适应多个时期的季节性,让分析师对趋势做出不同的假设。
- 与ARIMA模型不同,测量不需要定期间隔,我们不需要插入缺失值,例如:从删除异常值。
- 拟合非常快,允许分析人员以交互方式探索许多模型规范,例如在Shiny应用程序中(Chang等人,2015)。
- 预测模型具有易于解释的参数,分析师可以更改这些参数以对预测进行假设。此外,分析师通常具有回归经验,并且能够轻松扩展模型以包含新组件。
自动预测历史悠久,有许多方法适合特定类型的时间序列(Tashman&Leach 1991,De Gooijer&Hyndman 2006)。我们的方法是由我们在Facebook预测的时间序列的性质(分段趋势,多个季节性,浮动假期)以及大规模预测所涉及的挑战所驱动的。
趋势模型
我们已经实现了两个涵盖许多Facebook应用程序的趋势模型:饱和增长模型和分段线性模型。
非线性,饱和增长
对于增长预测,数据生成过程的核心组成部分是人口增长方式以及预期如何继续增长的模型。 Facebook的模型增长通常类似于自然生态系统中的人口增长(例如,Hutchinson 1978),其中非线性增长在承载能力下饱和。例如,特定区域中Facebook用户数量的承载能力可能是可以访问互联网的人数。这种增长通常使用逻辑增长模型建模,其最基本的形式是
, (2)
C为承载能力,k为增长率,m为偏移参数。
Facebook增长有两个重要方面,未在(2)中捕获。首先,承载能力不是恒定的 - 随着世界上可以访问互联网的人数增加,增长上限也增加。因此,我们用时变容量C(t)代替固定容量C.其次,增长率不是恒定的。新产品可以深刻地改变一个地区的增长率,因此该模型必须能够包含不同的速率以适应历史数据。
我们通过明确定义允许增长率变化的变化点,将增长模型中的趋势变化纳入其中。假设在sj,j = 1,...,S时有S个变化点。我们定义了速率调整矢量delta;isin;RS,其中delta;j是在时间sj发生的速率变化。在任何时间t的速率则是基本速率k加上直到该点的所有调整:k Pj:tgt;sjdelta;j。通过定义向量a(t)isin;{0,1} S使得更清楚地表示这一点
1, if t ge; sj,
, otherwise.
在时间t的速率则是k a(t)|delta;。当调整速率k时,还必须调整偏移参数m以连接段的端点。正确的调整在变换点j很容易计算为
.
然后是分段后勤增长模型
. (3)
我们模型中的一组重要参数是C(t),或系统在任何时间点的预期容量。分析师通常可以深入了解市场规模,并可以相应地设置这些。可能还有外部数据源可以提供承载能力, 例如世界银行的人口预测。
这里给出的逻辑增长模型是广义逻辑增长曲线的一个特例,它只是一种类型的S形曲线。这种趋势模型的扩展到 其他曲线族很简单。
带变化点的线性趋势
对于没有表现出饱和增长的预测问题,分段的恒定增长率提供了一种简约且通常有用的模型。这里的趋势模型是
g(t) = (k a(t)|delta;)t (m a(t)|gamma;), (4)
其中k是生长速率之前,delta;具有速率调整,m是偏移参数,并且gamma;j设置为-sjdelta;j以使函数连续。
自动变化点选择
变化点sj可以由分析师使用产品发布的已知日期和其他增长改变事件来指定,或者可以在给定一组候选者的情况下自动选择。使用(3)和(4)中的配方可以非常自然地进行自动选择在delta;上放一个稀疏的先验。
我们经常指定大量的变化点(例如,几年历史中每月一个)并使用先前的delta;j~Laplace(0,tau;)。参数tau;直接控制模型在改变其速率方面的灵活性。重要的是,在调整delta;之前的稀疏先验对初级生长速率k没有影响,因此当tau;变为0时,拟合减少到标准(非分段)逻辑或线性增长。
预测趋势不确定性
当模型推断出历史记录以进行预测时,趋势将具有恒定的速率。我们通过扩展生成模型来估计预测趋势的不确定性。该趋势的生成模型是在T点历史上存在S个变化点,每个T点具有速率变化delta;j~Laplace(0,tau;)。我们通过用从数据推断的方差替换tau;来模拟模拟过去的未来速率变化。在完全贝叶斯框架中,这可以通过tau;上的分层先验来完成以获得其后验,否则我们可以使用ratecale参数的最大似然估计:。对未来的变更点进行随机抽样,使得变更点的平均频率与历史记录中的变化点匹配:
= 0 w.p. ,
lt;
资料编号:[5276]