0
点赞
收藏
分享

微信扫一扫

NeuralProphet 连接传统时序模型与深度学习方法的桥梁

橙子好吃吗 2021-09-21 阅读 193

NeuralProphet模型概述

NeuralProphet是一个基于PyTorch实现的用户友好型时间序列预测工具,延续了2018年Facebook开源预测工具Prophet的主要功能,主要用于时序数据分析(个人使用体验:最好是具有明显时序特征的数据)。NeuralProphet是在一个完全模块化的架构中开发的,这使得它可以在未来添加额外组件,可扩展性很强。项目意在保留Prophet的原始特性,如Classic AR模型可解释性、可配置性,并使用了PyTorch后端进行优化,如Gradient Descent,另外还引入了AR-Net建模时间序列自相关、自定义损失和指标、具有前馈神经网络的可配置非线性层等等特性。

项目由斯坦福大学的Oskar Triebe发起,Facebook公司的Nikolay Laptev和斯坦福大学的Ram Rajagopal提供了知道意见,并且得到了Total SA部分资助;同时在与莫纳什大学Christoph Bergmeir的学生Hansika Hewamalage密切合作。开发团队来自世界各地,如果有想做出贡献的可以直接邮件联系原作Oskar :)

在开发团队的介绍PPT里也形象地描述了NeuralProphet与applied ML、traditional time series model之间的关系,所扮演的就是一个“桥梁”的角色,兼具了两者的建模与优化参数功能。

时间序列部分

NeuralProphet是一个可分解的时间序列模型,和上一版FBProphet相比,相似的组成部分有趋势(trend)、季节性(seasonality)、自回归(auto-regression)、特殊事件(special events),不同之处在于引入了未来回归项(future regressors)和滞后回归项(lagged regressors)。

未来回归项(future-known regressors)是指在预测期有已知未来值的外部变量,而滞后回归项(lagged covariates)是指那些只有观察期值的外部变量。趋势trend可以通过设置变化点来建立线性或组合多个线性趋势的模型。季节性seasonality使用傅里叶项建模,因此可以处理高频率数据的多种季节性。自回归项(auto-regression)使用AR-Net的实现来处理,这是一个用于时间序列的自回归前馈神经网络(Auto-Regressive Feed-Forward Neural Network)。滞后回归项也使用单独的前馈神经网络进行建模。未来回归项和特殊事件都是作为模型的协变量,只需要single weight进行建模。


对于一个Classic AR模型来说,p阶自回归的建模过程可以理解为若干个过去数据的线性组合

而对于该项目引入的AR-Net,在进行自回归建模的过程中,第一层直接模仿了Classic AR的表达,然后添加了若干个隐层以实现更精准的预测(只是受了ML models的启发)。学习过程依然使用MSE作为loss term,也是为了和Classic AR保持一致。

在此基础上又衍生出Sparse AR-Net,通俗一点就是通过引入正则项R给原来的coefficients引入了一些sparsity。离散程度s是需要人为设置的变量,正则强度cλ可以人为设置或者模型通过估算噪声的标准差得到。

原作在实验中发现如果正则项只是单纯地使用L1或者L2并不能达到模型目的,因为这里我们需要保持权重的实际大小来得到真实的AR-coefficients,“该大的权重依旧很大,该小的权重降至0”,而某些原本应该很大的权重正则化之后很可能就被normalized了。所以这里对于归一化了的数据,用了一个其他的正则函数,用sigmoid函数处理开根号权重绝对值。而对于那些未归一化的数据,正则函数更简单,开根号权重绝对值。

p阶数越高,AR-Net的速度优势更明显哈

Metrics都是老熟人了。一种是对比拟合的AR coefficient和真实值,用的sTPE;另一种是看one-step-ahead的预测准确程度,用MSE。


数据预处理

对于观察到的时间序列值,用户可以指定是否需要标准化。默认情况下,y值将被min-max归一化。如果用户特别将 normalize_y 参数设置为true,则数据将进行z-score归一化。对协变量也可以进行归一化处理。协变量归一化的默认模式是auto。在这种模式下,除了事件等binary features外,所有其他特征都进行z-score归一化。

如果数据中存在缺失值,只有在模型中启用自回归时,才会对缺失值进行估算。否则,缺失值对于回归模型来说并不重要。对于缺失的日期直接简单处理为“0”;对于数字数据,标准化是一个两步走的过程。首先,用linear interpolation填补小的差距,然后用rolling mean填补较大的差距。当启用自动回归时,将观察到的y值用rolling mean进行预处理,以从滞后值中学习。对于滞后回归因子也是如此。

模型的参数自动默认auto模式,下图展示了可用于自定义的参数,使用者可以根据需要自行调整,和其他ML模型的fine tuning过程一样。

一些具体的应用场景和hands-on notebooks会在之后的几篇详细阐述。

最后祝大家初五快乐,新年发财!

举报

相关推荐

0 条评论