http://neuralprophet.com/model-overview/

此文档正在完善中。

# NeuralProphet模型概述

NeuralProphet是一个基于神经网络的PyTorch实现的面向从业者的用户友好型时间序列预测工具。这在很大程度上受到了Facebook开发的流行预测工具[Prophet](https://facebook.github.io/prophet/)的启发。NeuralProphet是在一个完全模块化的架构中开发的，这使得它可以在未来添加任何额外的组件。我们的愿景是为用户开发一个简单易用的预测工具，同时保留Prophet的原始目标，如，可解释性、可配置性，并通过使用PyTorch作为后端提供更多的功能，如自动差分功能。

## 时间序列部分

NeuralProphet是一个可分解的时间序列模型，其组成部分有趋势(trend)、季节性(seasonality)、自回归(auto-regression)、特殊事件(special events)、未来回归项(future regressors)和滞后回归项(lagged regressors)。未来回归因子是指在预测期有已知未来值的外部变量，而滞后回归因子是指那些只有观察期值的外部变量。趋势可以通过使用变化点来建立线性或逐个线性趋势的模型。季节性使用傅里叶项建模，因此可以处理高频率数据的多种季节性。自动回归使用[AR-Net](https://github.com/ourownstory/AR-Net)的实现来处理，这是一个用于时间序列的自回归前馈神经网络(Auto-Regressive Feed-Forward Neural Network)。滞后回归因子也使用单独的前馈神经网络进行建模。未来回归项和特殊事件都是作为模型的协变量，用专用系数进行建模。更多细节，请参考各个部分的文档。

## 数据预处理

我们在模型中进行了一些数据预处理步骤。对于观察到的时间序列值，用户可以指定是否希望将这些值标准化。默认情况下，`y` 值将被最小-最大归一化。如果用户特别将 `normalize_y` 参数设置为 `true`，则数据将进行z-score归一化。对协变量也可以进行归一化处理。协变量归一化的默认模式是`auto`。在这种模式下，除了事件等binary features外，所有其他特征都进行z-score归一化。

如果数据中存在缺失值，我们也会进行估算。然而，只有在模型中启用自回归时，才会进行估算。否则，缺失值对于回归模型来说并不重要。对于binary data没有进行特殊的归因。对于缺失的日期，它们被简单地当作 "0"。对于数字数据，包括  `y` 值，标准化是一个两步走的过程。首先，用线性归入法填补小的差距，然后用滚动平均法填补较大的差距。当启用自动回归时，将观察到的`y`值以移动窗口的形式进行预处理，以从滞后值中学习。对于滞后的回归者也是如此。

## 何时使用NeuralProphet

NeuralProphet既可以进行单步预测，也可以进行多步预测。目前，NeuralProphet是单变量建立模型。这意味着，如果你有很多series ，你希望进行预测，你需要一次只做一个。然而，未来我们希望将整体预测模型的能力整合到NeuralProphet中。

NeuralProphet可以帮助建立预测模型，用于存在其他外部因素的情况下，这些外部因素可以驱动目标序列随时间的行为。使用这些外部信息可以极大地改善预测模型，而不是仅仅依靠序列的自相关。NeuralProphet工具适用于那些希望通过可视化预测、单个组件以及模型的基本系数来深入了解整体建模过程的预测从业者。通过我们的描述性图表，用户可以直观地看到各个组件的相互作用。他们还可以根据需要通过正则化引入稀疏性(sparsity )来控制这些系数。他们可以根据自己的领域知识，将这些组件加法或乘法地组合起来。

这是一项持续的工作。因此，NeuralProphet将在接下来的版本中搭配更多的功能。