http://neuralprophet.com/model/auto-regression/

# 为自回归建模

通过简单地对`NeuralProphet`对象的`n_lags`参数设置一个适当的值，就可以在NeuralProphet中启用AR-Net。

```python
m = NeuralProphet(
    n_forecasts=3,
    n_lags=5,
    yearly_seasonality=False,
    weekly_seasonality=False,
    daily_seasonality=False,
)
```

在上面的例子中，我们创建了一个预测方案，将5个滞后期输入AR-Net，并接收3个步骤作为预测。一旦您启用了AR-Net，在预测过程中，您的`future_periods`值应该等于创建`NeuralProphet`对象时指定的`n_forecasts`值。无论你为`future_periods`指定的是哪个值，它都会被转换为`n_forecasts`的值，并向用户发出通知。这是因为，由于AR-Net是在训练过程中建立的，因此它的输出大小为`n_forecasts`，在测试过程中不能支持任何其他值。

分解图如下所示。

![plot-comp-1](http://neuralprophet.com/images/plot_comp_ar_1.png)

现在你可以看到自回归作为一个独立的部分。相应的系数如下图所示。

![plot-param-1](http://neuralprophet.com/images/plot_param_ar_1.png)

在建立自相关模型时，您可以看到每个滞后的相关性。您也可以为AR-Net指定`num_hidden_layers`，以增加AR-Net的复杂性。

```python
m = NeuralProphet(
    n_forecasts=3,
    n_lags=5,
    num_hidden_layers=2,
    yearly_seasonality=False,
    weekly_seasonality=False,
    daily_seasonality=False
)
```

## 正则化AR-Net

在AR-Net中，正则化是通过在`NeuralProphet`对象中设置`ar_sparsity`参数来完成的，如下图所示。更多关于`ar_sparsity`参数设置的细节，请参考[Hyperparameter Selection](http://neuralprophet.com/hyperparameter-selection/#regularization-related-parameters)一节。

```python
m = NeuralProphet(
    n_forecasts=3,
    n_lags=5,
    num_hidden_layers=2,
    ar_sparsity=0.01,
    yearly_seasonality=False,
    weekly_seasonality=False,
    daily_seasonality=False
)
```

## 突出特定的预测步骤

在建立自相关模型时，多输入多输出模式下的模型。在这种模式下，可以突出显示第n步前的预测。这意味着，在模型训练过程中计算误差以及预测绘图时，可以专门看第n步的预测。可以像下面这样做。

```python
m = NeuralProphet(
    n_forecasts=30,
    n_lags=60,
    yearly_seasonality=False,
    weekly_seasonality=False,
    daily_seasonality=False
)
m.highlight_nth_step_ahead_of_each_forecast(step_number=m.n_forecasts)
```

您可以指定任何小于或等于`n_forecasts`的值到`step_number`参数。一旦你这样做，指标将看起来像下面。

| SmoothL1Loss | MAE      | SmoothL1Loss-3 | MAE-3    | RegLoss |
| ------------ | -------- | -------------- | -------- | ------- |
| 0.272427     | 3.063127 | 0.164296       | 2.407697 | 0.0     |
| 0.151259     | 2.303768 | 0.144811       | 2.261525 | 0.0     |
| 0.129990     | 2.140769 | 0.127703       | 2.126293 | 0.0     |
| 0.116178     | 2.020397 | 0.113719       | 2.005068 | 0.0     |
| 0.104502     | 1.915078 | 0.101155       | 1.887193 | 0.0     |



在预测图中，它将只关注提前第n步的预测。如下图所示为该模型的fir。

![plot-forecast-1](http://neuralprophet.com/images/plot_forecast_ar_1.png)