README

快速开始

模型概述

相较于prophet的改进

趋势项

季节性

自回归

滞后回归项

事件

未来回归项

http://neuralprophet.com/model/future-regressors/

为未来回归项建模

未来回归器是指具有已知未来值的外部变量。从这个意义上说,未来回归者的功能如果和特殊事件非常相似。

这些回归器的过去值对应于训练time stamps,必须与训练数据本身一起提供。请看下面的例子,我们通过对原始数据的滚动平均值(rolling means)来创建两个虚拟回归项AB

df['A'] = df['y'].rolling(7, min_periods=1).mean()df['B'] = df['y'].rolling(30, min_periods=1).mean()

dataframe 如下。

Untitled Database

为了进行预测,我们还需要提供回归因子的未来值。

future_regressors_df = pd.DataFrame(data={'A': df['A'][:50], 'B': df['B'][:50]})

dataframe 如下。

Untitled Database

它是一个只有回归项未来值列的dataframe 。

与事件类似,未来的回归器也可以以加法和乘法两种格式添加。

加法未来回归项

neural_prophet中未来回归器的默认模式是加法。必须通过调用add_future_regressor函数将回归器添加到NeuralProphet对象中。一旦完成了这些工作,就可以通过向fit函数提供训练数据的dataframe 以及回归项的值来拟合模型。

m = NeuralProphet(        n_forecasts=10,        yearly_seasonality=False,        weekly_seasonality=False,        daily_seasonality=False,    )m = m.add_future_regressor(name='A')m = m.add_future_regressor(name='B')metrics = m.fit(df, freq="D")

当进行预测时,必须通过提供回归器的未来值来创建未来dataframe 。要做到这一点,现在你需要调用 make_future_dataframe 函数,提供之前创建的future_regressors_df 作为参数。

future = m.make_future_dataframe(df=df, regressors_df=future_regressors_df, periods=3)forecast = m.predict(df=future)

分解图如下。

fig_comp = m.plot_components(forecast)

http://neuralprophet.com/images/plot_comp_future_reg_1.png

plot-comp-1

n 除了趋势外,它还显示了加法未来回归项的图。未来回归项的系数也可以绘制出来。

fig_param = m.plot_parameters()

http://neuralprophet.com/images/plot_param_future_reg_1.png

plot-param-1

乘法未来回归项

未来的回归项也可以以乘法模式添加。你只需要在向NeuralProphet对象添加回归项时,将模式设置为multiplicative即可。

m = m.add_future_regressor(name='A', mode="multiplicative")m = m.add_future_regressor(name='B')

在上面的例子中,我们有加法和乘法回归器,其中A是乘法,B是加法。拟合和预测过程中的所有其他步骤都是一样的。

正则化未来回归项

我们可以在未来的回归项中加入正则化,如下图。

m = m.add_future_regressor(name='A', regularization=0.05)m = m.add_future_regressor(name='B', regularization=0.02)

这将在各个回归者系数中增加稀疏性(sparsity)。