是否可以自动化时间序列预测?


17

我想构建一种算法,该算法能够分析任何时间序列,并“自动”为分析的时间序列数据选择最佳的传统/静态预测方法(及其参数)。

可以做这样的事情吗?如果是,您能给我一些如何解决的技巧吗?


3
不,这是无法合理实现的。通常,没有足够的数据来区分两个合理的模型,更不用说所有可能的模型了。要获得最佳模型,就需要以绝对的术语来了解物理学,而且经常需要甚至不知道建模假设和/或未经测试/证明它们是不合理的。
卡尔,

3
否。无法确定哪种模型最好。Python与本讨论无关。尽管如此,仍有一些尝试取得了良好的效果。例如github.com/facebook/prophet项目。它还具有Python绑定。
Cagdas Ozgenc

3
我投票决定不公开,因为我认为这是一个合理的问题-即使答案是“否”。我建议从标题中删除python,因为它与主题无关,尤其是此处的主题。
mkt-恢复莫妮卡

1
我已经按照建议从标题中删除了python。谢谢您的回答。
StatsNewbie123 '18

2
参见“无免费午餐”定理。
AdamO '18

Answers:


19

首先,您需要注意,IrishStat概述的方法特定于ARIMA模型,而不适用于任何通用模型集。

要回答您的主要问题“时间序列预测是否可以自动化?”:

是的。在我的需求预测领域,大多数商业预测软件包都这样做。也有几个开源软件包这样做,最著名的是来自R中的开源Forecast软件包的Rob Hyndman的auto.arima()(自动ARIMA预测)和ETS()(自动指数平滑预测)功能。有关这两个函数的详细信息,请参见此处。还有一个auto.arima的Python实现,称为Pyramid,尽管以我的经验,它还不如R包成熟。

我提到的商业产品和我提到的开放源代码软件包都基于使用信息标准来选择最佳预测的思想:您拟合了一堆模型,然后选择AIC,BIC,AICc,等等...(通常是用这种方法来代替样本外验证)。

但是,有一个主要警告:所有这些方法都单个模型家族中起作用。他们从一组ARIMA模型中选择最佳模型,或者从一组指数平滑模型中选择最佳模型。

如果要从不同的模型系列中进行选择,例如,如果要从ARIMA,指数平滑和Theta方法中选择最佳模型,则这样做更具挑战性。从理论上讲,您可以按照与在单个模型系列中相同的方式来执行此操作,即通过使用信息标准。但是,实际上,对于所考虑的所有模型,您都需要以完全相同的方式计算AIC或BIC,这是一个巨大的挑战。使用时间序列交叉验证或使用样本验证而不是信息准则可能会更好,但这将需要更多的计算量(并且代码繁琐)。

Facebook的Prophet软件包还基于通用可加模型自动生成预测。有关详细信息,请参见此处。但是,Prophet仅适合一个模型,尽管它具有许多参数,但模型非常灵活。先知的隐含假设是,GAM是“统治所有人的一个模型”,这在理论上可能不合理,但对于实际情况非常实用且有用。

适用于上述所有方法的另一个警告:大概由于您要预测多个时间序列,而您要进行手动分析的时间过多,因此您想执行自动时间序列预测。否则,您可以自己进行实验并自行找到最佳模型。您需要记住,自动预测方法永远不会为每个时间序列都找到最佳模型-它会在所有时间序列上平均给出一个合理的模型,但是仍然有可能这些时间序列中的一个将具有比通过自动方法选择的模型更好的模型。看到这个帖子举个例子。简而言之,如果要使用自动预测,则必须忍受“足够好”的预测,而不是每个时间序列的最佳预测。


谢谢您这么有见地的答案。老实说,问这个问题时,我最初的想法是能够从不同的模型系列中进行选择。
StatsNewbie123

如果将该算法应用于更特定的领域,例如业务预测(例如用于生产计划和库存管理),该怎么办?您认为它可以取得更好的结果吗?
StatsNewbie123

2
@JoanaClaudino是的,这会更容易-这就是商业需求预测软件包的要旨。但这很容易,因为通常当您将自己限制在一个特定的业务领域时,您可以将自己限制在一个特定的模型家族中(来自同一业务领域的时间序列在季节性,数据密度等方面具有相似的特征。 .hence它是安全的假设,一个家庭将适用于所有的人)
斯坎德尔H. -恢复莫妮卡

好吧,我明白了。再次感谢您的大力帮助。
StatsNewbie123

10

我建议的方法包括比ARIMA更通用的模型,因为它们包括可能随时间变化的季节性虚拟变量,多个级别,多个趋势,随时间变化的参数,甚至随时间变化的误差变化。该系列更精确地称为ARMAX模型,但出于完全透明的考虑,它确实排除了具有乘法结构的(罕见)变体。

您要求提供提示,我相信这可能是入门的好方法。

我建议您编写代码来遵循/模仿此流程图/工作流程。可以通过评估您指定的标准来找到“最佳模型”……它可以是拟合数据的MSE / AIC,也可以是保留数据的MAPE / SMAPE或您选择的任何标准。

请注意,如果您不了解时间序列分析的某些特定要求/目标/约束,那么每个步骤的细节都非常简单,但如果您更深入地了解/,则可能会(应该是!)更为复杂。对全面的时间序列分析中存在的复杂性/机会的学习/欣赏。

在此处输入图片说明

在此处输入图片说明

我被要求就如何进行时间序列建模(或一般而言的建模)自动化提供进一步的指导。/stats//search?q=peeling+an+onion包含我的一些指导“去皮洋葱”及相关任务。

AUTOBOX实际上会详细说明并显示临时步骤,因为它形成了有用的模型,并且在这方面可能是有用的老师。整个科学思想是“添加似乎需要的内容”和“删除似乎没有用的内容”。这是Box和Bacon在早期提出的迭代过程。

模型需要足够复杂(足够漂亮),但又不能过于复杂(漂亮)。假设简单的方法可以解决复杂的问题,这与跟随罗杰·培根(Roger Bacon)和成千上万的培根追随者的科学方法不一致。正如罗杰·培根(Roger Bacon)曾经说过的,我经常这样解释:做科学就是寻找重复的模式。检测异常是识别不遵循重复模式的值。知道自然的人会更容易注意到她的偏差,而知道自然的人会更准确地描述她的方法。可以通过观察当前规则何时失效来学习规则。在培根精神中,通过识别当前确定的“最佳模型/理论”何时不足,可以反复进行“更好的表示”

用我的话说:“ Tukey提出了探索性数据分析(EDA),它基于数据所提出的明显模型缺陷提出了模型细化方案”。这是AUTOBOX和科学的核心。EDA旨在查看数据可以在形式建模或假设检验任务之外告诉我们的内容。

自动建模程序的石蕊测试非常简单。它能分离信号和噪声而不会过度拟合吗?经验证据表明这可以并且已经完成。预测精度常常会产生误导,因为未来对过去不负责任,并且取决于选择结果的来源可能且确实会有所不同。


非常感谢。您的回答非常有帮助!
StatsNewbie123 '18

谢谢您,IrishStat。这是有见地的。尽管参数没有统计学意义,我们是否有理由保留一个参数而不是“删除参数”呢?
ColorStatistics

1
是。如果它给您一个更“令人满意的答案”。斜率系数不等于0.0可能会提供更实际的(如果不是具有统计学意义的)预测,否则携带过多的系数是不合逻辑的,并导致方差预测的不确定性增加。有些作者无法盲目/天真地应对必要性和充裕性的测试,他们认为模型识别是一个第一步过程,而Box和Jenkins(以及其他所有人!)则关心使模型按需变得复杂而不是过于复杂。 Albert E.,JW Tukey等人对此有更多了解。
IrishStat '18

3
“这种建议的自动预测方法将通过定制模型的形式(即像定制西装一样对其进行定制)来找到每个时间序列的最佳模型。” 这是一个非常有力的声明-如果准确的话,则意味着这种方法将赢得M3,M4比赛的青睐。有吗
Skander H.-恢复莫妮卡

1
@ joana-claudino我对您的ISEG项目特别感兴趣,因为我也对开发建议程序的Python版本感兴趣。当然,这将是SE的异地。
IrishStat '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.