我想构建一种算法,该算法能够分析任何时间序列,并“自动”为分析的时间序列数据选择最佳的传统/静态预测方法(及其参数)。
可以做这样的事情吗?如果是,您能给我一些如何解决的技巧吗?
我想构建一种算法,该算法能够分析任何时间序列,并“自动”为分析的时间序列数据选择最佳的传统/静态预测方法(及其参数)。
可以做这样的事情吗?如果是,您能给我一些如何解决的技巧吗?
Answers:
首先,您需要注意,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是“统治所有人的一个模型”,这在理论上可能不合理,但对于实际情况非常实用且有用。
适用于上述所有方法的另一个警告:大概由于您要预测多个时间序列,而您要进行手动分析的时间过多,因此您想执行自动时间序列预测。否则,您可以自己进行实验并自行找到最佳模型。您需要记住,自动预测方法永远不会为每个时间序列都找到最佳模型-它会在所有时间序列上平均给出一个合理的模型,但是仍然有可能这些时间序列中的一个将具有比通过自动方法选择的模型更好的模型。看到这个帖子举个例子。简而言之,如果要使用自动预测,则必须忍受“足够好”的预测,而不是每个时间序列的最佳预测。
我建议的方法包括比ARIMA更通用的模型,因为它们包括可能随时间变化的季节性虚拟变量,多个级别,多个趋势,随时间变化的参数,甚至随时间变化的误差变化。该系列更精确地称为ARMAX模型,但出于完全透明的考虑,它确实排除了具有乘法结构的(罕见)变体。
您要求提供提示,我相信这可能是入门的好方法。
我建议您编写代码来遵循/模仿此流程图/工作流程。可以通过评估您指定的标准来找到“最佳模型”……它可以是拟合数据的MSE / AIC,也可以是保留数据的MAPE / SMAPE或您选择的任何标准。
请注意,如果您不了解时间序列分析的某些特定要求/目标/约束,那么每个步骤的细节都非常简单,但如果您更深入地了解/,则可能会(应该是!)更为复杂。对全面的时间序列分析中存在的复杂性/机会的学习/欣赏。
我被要求就如何进行时间序列建模(或一般而言的建模)自动化提供进一步的指导。/stats//search?q=peeling+an+onion包含我的一些指导“去皮洋葱”及相关任务。
AUTOBOX实际上会详细说明并显示临时步骤,因为它形成了有用的模型,并且在这方面可能是有用的老师。整个科学思想是“添加似乎需要的内容”和“删除似乎没有用的内容”。这是Box和Bacon在早期提出的迭代过程。
模型需要足够复杂(足够漂亮),但又不能过于复杂(漂亮)。假设简单的方法可以解决复杂的问题,这与跟随罗杰·培根(Roger Bacon)和成千上万的培根追随者的科学方法不一致。正如罗杰·培根(Roger Bacon)曾经说过的,我经常这样解释:做科学就是寻找重复的模式。检测异常是识别不遵循重复模式的值。知道自然的人会更容易注意到她的偏差,而知道自然的人会更准确地描述她的方法。可以通过观察当前规则何时失效来学习规则。在培根精神中,通过识别当前确定的“最佳模型/理论”何时不足,可以反复进行“更好的表示”
用我的话说:“ Tukey提出了探索性数据分析(EDA),它基于数据所提出的明显模型缺陷提出了模型细化方案”。这是AUTOBOX和科学的核心。EDA旨在查看数据可以在形式建模或假设检验任务之外告诉我们的内容。
自动建模程序的石蕊测试非常简单。它能分离信号和噪声而不会过度拟合吗?经验证据表明这可以并且已经完成。预测精度常常会产生误导,因为未来对过去不负责任,并且取决于选择结果的来源可能且确实会有所不同。