http://neuralprophet.com/model/future-regressors/
未来回归器是指具有已知未来值的外部变量。从这个意义上说,未来回归者的功能如果和特殊事件非常相似。
这些回归器的过去值对应于训练time stamps,必须与训练数据本身一起提供。请看下面的例子,我们通过对原始数据的滚动平均值(rolling means)来创建两个虚拟回归项A
和B
。
df['A'] = df['y'].rolling(7, min_periods=1).mean()df['B'] = df['y'].rolling(30, min_periods=1).mean()
dataframe 如下。
为了进行预测,我们还需要提供回归因子的未来值。
future_regressors_df = pd.DataFrame(data={'A': df['A'][:50], 'B': df['B'][:50]})
dataframe 如下。
它是一个只有回归项未来值列的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)
plot-comp-1
n 除了趋势外,它还显示了加法未来回归项的图。未来回归项的系数也可以绘制出来。
fig_param = m.plot_parameters()
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)。