Forecasting Time Series - Model Zoo

Note

This documentation is intended for advanced users and may not be comprehensive.

For a stable public API, refer to TimeSeriesPredictor.

This page contains the list of time series forecasting models available in AutoGluon. The available hyperparameters for each model are listed under Other Parameters.

This list is useful if you want to override the default hyperparameters (Manually configuring models) or define custom hyperparameter search spaces (Hyperparameter tuning), as described in the In-depth Tutorial. For example, the following code will train a TimeSeriesPredictor with DeepAR and ETS models with default hyperparameters (and a weighted ensemble on top of them):

predictor = TimeSeriesPredictor().fit(
   train_data,
   hyperparameters={
      "DeepAR": {},
      "ETS": {},
   },
)

Note that we don’t include the Model suffix when specifying the model name in hyperparameters (e.g., the class DeepARModel corresponds to the name "DeepAR" in the hyperparameters dictionary).

Also note that some of the models’ hyperparameters have names and default values that are different from the original libraries.

Default models

NaiveModel

Baseline model that sets the forecast equal to the last observed value.

SeasonalNaiveModel

Baseline model that sets the forecast equal to the last observed value from the same season.

ARIMAModel

Autoregressive Integrated Moving Average (ARIMA) model.

ETSModel

Exponential smoothing with trend and seasonality.

ThetaModel

The Theta forecasting model of Assimakopoulos and Nikolopoulos (2000).

AutoETSModel

Automatically tuned exponential smoothing with trend and seasonality.

AutoARIMAModel

Automatically tuned ARIMA model.

DynamicOptimizedThetaModel

Optimized Theta forecasting model from Fiorucci et al.

AutoGluonTabularModel

Predict future time series values using autogluon.tabular.TabularPredictor.

DeepARModel

DeepAR model from GluonTS based on the PyTorch backend.

SimpleFeedForwardModel

SimpleFeedForward model from GluonTS based on the PyTorch backend.

TemporalFusionTransformerModel

TemporalFusionTransformer model from GluonTS.

NaiveModel

class autogluon.timeseries.models.NaiveModel(freq: Optional[str] = None, prediction_length: int = 1, path: Optional[str] = None, name: Optional[str] = None, eval_metric: str = None, hyperparameters: Dict[str, Any] = None, **kwargs)[source]

Baseline model that sets the forecast equal to the last observed value.

Quantiles are obtained by assuming that the residuals follow zero-mean normal distribution, scale of which is estimated from the empirical distribution of the residuals. As described in https://otexts.com/fpp3/prediction-intervals.html

SeasonalNaiveModel

class autogluon.timeseries.models.SeasonalNaiveModel(freq: Optional[str] = None, prediction_length: int = 1, path: Optional[str] = None, name: Optional[str] = None, eval_metric: str = None, hyperparameters: Dict[str, Any] = None, **kwargs)[source]

Baseline model that sets the forecast equal to the last observed value from the same season.

Quantiles are obtained by assuming that the residuals follow zero-mean normal distribution, scale of which is estimated from the empirical distribution of the residuals. As described in https://otexts.com/fpp3/prediction-intervals.html

Other Parameters
seasonal_periodint or None, default = None

Number of time steps in a complete seasonal cycle for seasonal models. For example, 7 for daily data with a weekly cycle or 12 for monthly data with an annual cycle. When set to None, seasonal_period will be inferred from the frequency of the training data. Can also be specified manually by providing an integer > 1. If seasonal_period (inferred or provided) is equal to 1, will fall back to Naive forecast. Seasonality will also be disabled, if the length of the time series is < seasonal_period.

ARIMAModel

class autogluon.timeseries.models.ARIMAModel(freq: Optional[str] = None, prediction_length: int = 1, path: Optional[str] = None, name: Optional[str] = None, eval_metric: str = None, hyperparameters: Dict[str, Any] = None, **kwargs)[source]

Autoregressive Integrated Moving Average (ARIMA) model.

Based on statsmodels.tsa.statespace.sarimax.SARIMAX.

Our implementation contains several improvements over the Statsmodels version, such as multi-CPU training and reducing the disk usage when saving models.

Other Parameters
order: Tuple[int, int, int], default = (1, 1, 1)

The (p, d, q) order of the model for the number of AR parameters, differences, and MA parameters to use.

seasonal_order: Tuple[int, int, int], default = (0, 0, 0)

The (P, D, Q) parameters of the seasonal ARIMA model. Setting to (0, 0, 0) disables seasonality.

seasonal_periodint or None, default = None

Number of time steps in a complete seasonal cycle for seasonal models. For example, 7 for daily data with a weekly cycle or 12 for monthly data with an annual cycle. When set to None, seasonal_period will be inferred from the frequency of the training data. Can also be specified manually by providing an integer > 1. If seasonal_period (inferred or provided) is equal to 1, seasonality will be disabled.

trend{“n”, “c”, “t”, “ct”}, default = “c”

Parameter controlling the trend polynomial. Allowed values are “n” (no trend), “c” (constant), “t” (linear) and “ct” (constant plus linear).

enforce_stationaritybool, default = True

Whether to transform the AR parameters to enforce stationarity in the autoregressive component of the model. If ARIMA crashes during fitting with an LU decomposition error, you can either set enforce_stationarity to False or increase the differencing parameter d in order.

enforce_invertibilitybool, default = True

Whether to transform the MA parameters to enforce invertibility in the moving average component of the model.

maxiterint, default = 50

Number of iterations during optimization.

n_jobsint or float, default = 0.5

Number of CPU cores used to fit the models in parallel. When set to a float between 0.0 and 1.0, that fraction of available CPU cores is used. When set to a positive integer, that many cores are used. When set to -1, all CPU cores are used.

ETSModel

class autogluon.timeseries.models.ETSModel(freq: Optional[str] = None, prediction_length: int = 1, path: Optional[str] = None, name: Optional[str] = None, eval_metric: str = None, hyperparameters: Dict[str, Any] = None, **kwargs)[source]

Exponential smoothing with trend and seasonality.

Based on statsmodels.tsa.exponential_smoothing.ets.ETSModel.

Our implementation contains several improvements over the Statsmodels version, such as multi-CPU training and reducing the disk usage when saving models.

Other Parameters
error{“add”, “mul”}, default = “add”

Error model. Allowed values are “add” (additive) and “mul” (multiplicative). Note that “mul” is only applicable to time series with positive values.

trend{“add”, “mul”, None}, default = “add”

Trend component model. Allowed values are “add” (additive), “mul” (multiplicative) and None (disabled). Note that “mul” is only applicable to time series with positive values.

damped_trendbool, default = False

Whether or not the included trend component is damped.

seasonal{“add”, “mul”, None}, default = “add”

Seasonal component model. Allowed values are “add” (additive), “mul” (multiplicative) and None (disabled). Note that “mul” is only applicable to time series with positive values.

seasonal_periodint or None, default = None

Number of time steps in a complete seasonal cycle for seasonal models. For example, 7 for daily data with a weekly cycle or 12 for monthly data with an annual cycle. When set to None, seasonal_period will be inferred from the frequency of the training data. Can also be specified manually by providing an integer > 1. If seasonal_period (inferred or provided) is equal to 1, seasonality will be disabled. Seasonality will also be disabled, if the length of the time series is < 2 * seasonal_period.

maxiterint, default = 1000

Number of iterations during optimization.

n_jobsint or float, default = 0.5

Number of CPU cores used to fit the models in parallel. When set to a float between 0.0 and 1.0, that fraction of available CPU cores is used. When set to a positive integer, that many cores are used. When set to -1, all CPU cores are used.

ThetaModel

class autogluon.timeseries.models.ThetaModel(freq: Optional[str] = None, prediction_length: int = 1, path: Optional[str] = None, name: Optional[str] = None, eval_metric: str = None, hyperparameters: Dict[str, Any] = None, **kwargs)[source]

The Theta forecasting model of Assimakopoulos and Nikolopoulos (2000).

Based on statsmodels.tsa.forecasting.theta.ThetaModel.

Our implementation contains several improvements over the Statsmodels version, such as multi-CPU training and reducing the disk usage when saving models.

Other Parameters
deseasonalizebool, default = True

Whether to deseasonalize the data. If True and use_test is True, the data is only deseasonalized if the null hypothesis of no seasonality is rejected.

seasonal_periodint or None, default = None

Number of time steps in a complete seasonal cycle for seasonal models. For example, 7 for daily data with a weekly cycle or 12 for monthly data with an annual cycle. When set to None, seasonal_period will be inferred from the frequency of the training data. Can also be specified manually by providing an integer > 1. If seasonal_period (inferred or provided) is equal to 1, seasonality will be disabled. Seasonality will also be disabled, if the length of the time series is < 2 * seasonal_period.

use_testbool, default = True

Whether to use a statistical test for determining if the seasonality is present.

method{“auto”, “additive”, “multiplicative”}, default = “auto”

The model used for the seasonal decomposition. “auto” uses multiplicative if the time series is non-negative and all estimated seasonal components are positive. If either of these conditions is False, then it uses an additive decomposition.

differencebool, default = False

Whether to difference the data before testing for seasonality.

n_jobsint or float, default = 0.5

Number of CPU cores used to fit the models in parallel. When set to a float between 0.0 and 1.0, that fraction of available CPU cores is used. When set to a positive integer, that many cores are used. When set to -1, all CPU cores are used.

References

Assimakopoulos, Vassilis, and Konstantinos Nikolopoulos. “The theta model: a decomposition approach to forecasting.” International journal of forecasting 16.4 (2000): 521-530.

AutoETSModel

class autogluon.timeseries.models.AutoETSModel(freq: Optional[str] = None, prediction_length: int = 1, path: Optional[str] = None, name: Optional[str] = None, eval_metric: str = None, hyperparameters: Dict[str, Any] = None, **kwargs)[source]

Automatically tuned exponential smoothing with trend and seasonality.

Automatically selects the best ETS (Error, Trend, Seasonality) model using an information criterion

Based on statsforecast.models.AutoETS.

Other Parameters
modelstr, default = “ZZZ”

Model string describing the configuration of the E (error), T (trend) and S (seasonal) model components. Each component can be one of “M” (multiplicative), “A” (additive), “N” (omitted). For example when model=”ANN” (additive error, no trend, and no seasonality), ETS will explore only a simple exponential smoothing.

seasonal_periodint or None, default = None

Number of time steps in a complete seasonal cycle for seasonal models. For example, 7 for daily data with a weekly cycle or 12 for monthly data with an annual cycle. When set to None, seasonal_period will be inferred from the frequency of the training data. Can also be specified manually by providing an integer > 1. If seasonal_period (inferred or provided) is equal to 1, seasonality will be disabled.

n_jobsint or float, default = -1

Number of CPU cores used to fit the models in parallel. When set to a float between 0.0 and 1.0, that fraction of available CPU cores is used. When set to a positive integer, that many cores are used. When set to -1, all CPU cores are used.

AutoARIMAModel

class autogluon.timeseries.models.AutoARIMAModel(freq: Optional[str] = None, prediction_length: int = 1, path: Optional[str] = None, name: Optional[str] = None, eval_metric: str = None, hyperparameters: Dict[str, Any] = None, **kwargs)[source]

Automatically tuned ARIMA model.

Automatically selects the best (p,d,q,P,D,Q) model parameters using an information criterion

Based on statsforecast.models.AutoARIMA.

Other Parameters
dint, optional

Order of first differencing. If None, will be determined automatically using a statistical test.

Dint, optional

Order of seasonal differencing. If None, will be determined automatically using a statistical test.

max_pint, default = 5

Maximum number of autoregressive terms.

max_qint, default = 5

Maximum order of moving average.

max_Pint, default = 2

Maximum number of seasonal autoregressive terms.

max_Qint, default = 2

Maximum order of seasonal moving average.

max_dint, default = 2

Maximum order of first differencing.

max_Dint, default = 1

Maximum order of seasonal differencing.

start_pint, default = 2

Starting value of p in stepwise procedure.

start_qint, default = 2

Starting value of q in stepwise procedure.

start_Pint, default = 1

Starting value of P in stepwise procedure.

start_Qint, default = 1

Starting value of Q in stepwise procedure.

stationarybool, default = False

Restrict search to stationary models.

seasonalbool, default = True

Whether to consider seasonal models.

approximationbool, default = True

Approximate optimization for faster convergence.

allowdriftbool, default = False

If True, drift term is allowed.

allowmeanbool, default = True

If True, non-zero mean is allowed.

seasonal_periodint or None, default = None

Number of time steps in a complete seasonal cycle for seasonal models. For example, 7 for daily data with a weekly cycle or 12 for monthly data with an annual cycle. When set to None, seasonal_period will be inferred from the frequency of the training data. Can also be specified manually by providing an integer > 1. If seasonal_period (inferred or provided) is equal to 1, seasonality will be disabled.

n_jobsint or float, default = -1

Number of CPU cores used to fit the models in parallel. When set to a float between 0.0 and 1.0, that fraction of available CPU cores is used. When set to a positive integer, that many cores are used. When set to -1, all CPU cores are used.

DynamicOptimizedThetaModel

class autogluon.timeseries.models.DynamicOptimizedThetaModel(freq: Optional[str] = None, prediction_length: int = 1, path: Optional[str] = None, name: Optional[str] = None, eval_metric: str = None, hyperparameters: Dict[str, Any] = None, **kwargs)[source]

Optimized Theta forecasting model from Fiorucci et al. (2016).

Based on statsforecast.models.DynamicOptimizedTheta.

Other Parameters
decomposition_type{“multiplicative”, “additive”}, default = “multiplicative”

Seasonal decomposition type.

seasonal_periodint or None, default = None

Number of time steps in a complete seasonal cycle for seasonal models. For example, 7 for daily data with a weekly cycle or 12 for monthly data with an annual cycle. When set to None, seasonal_period will be inferred from the frequency of the training data. Can also be specified manually by providing an integer > 1. If seasonal_period (inferred or provided) is equal to 1, seasonality will be disabled.

n_jobsint or float, default = 0.5

Number of CPU cores used to fit the models in parallel. When set to a float between 0.0 and 1.0, that fraction of available CPU cores is used. When set to a positive integer, that many cores are used. When set to -1, all CPU cores are used.

References

Fiorucci, Jose et al. “Models for optimising the theta method and their relationship to state space models.” International journal of forecasting 32.4 (2016): 1151-1161.

AutoGluonTabularModel

class autogluon.timeseries.models.AutoGluonTabularModel(freq: Optional[str] = None, prediction_length: int = 1, path: Optional[str] = None, name: Optional[str] = None, eval_metric: str = None, hyperparameters: Dict[str, Any] = None, **kwargs)[source]

Predict future time series values using autogluon.tabular.TabularPredictor.

The forecasting is converted to a tabular problem using the following features:

  • lag features (observed time series values) based on freq of the data

  • time features (e.g., day of the week) based on the timestamp of the measurement

  • lagged known and past covariates (if available)

  • static features of each item (if available)

Quantiles are obtained by assuming that the residuals follow zero-mean normal distribution, scale of which is estimated from the empirical distribution of the residuals.

Other Parameters
max_train_sizeint, default = 1_000_000

Maximum number of rows in the training and validation sets. If the number of rows in train or validation data exceeds max_train_size, then max_train_size many rows are subsampled from the dataframe.

tabular_hyperparmetersDict[Dict[str, Any]], optional

Hyperparameters dictionary passed to TabularPredictor.fit. Contains the names of models that should be fit. Defaults to {"XGB": {}, "CAT": {}, "GBM" :{}}.

DeepARModel

class autogluon.timeseries.models.DeepARModel(freq: Optional[str] = None, prediction_length: int = 1, path: Optional[str] = None, name: Optional[str] = None, eval_metric: str = None, hyperparameters: Dict[str, Any] = None, **kwargs)[source]

DeepAR model from GluonTS based on the PyTorch backend.

The model consists of an LSTM encoder and a decoder that outputs the distribution of the next target value. Close to the model described in [Salinas2020].

Based on gluonts.torch.model.deepar.DeepAREstimator.

Other Parameters
context_lengthint, optional

Number of steps to unroll the RNN for before computing predictions (default: None, in which case context_length = prediction_length)

disable_static_featuresbool, default = False

If True, static features won’t be used by the model even if they are present in the dataset. If False, static features will be used by the model if they are present in the dataset.

disable_known_covariatesbool, default = False

If True, known covariates won’t be used by the model even if they are present in the dataset. If False, known covariates will be used by the model if they are present in the dataset.

num_layersint, default = 2

Number of RNN layers

hidden_sizeint, default = 40

Number of RNN cells for each layer

dropout_ratefloat, default = 0.1

Dropout regularization parameter

embedding_dimensionint, optional

Dimension of the embeddings for categorical features (if None, defaults to [min(50, (cat+1)//2) for cat in cardinality])

distr_outputgluonts.torch.distributions.DistributionOutput, default = StudentTOutput()

Distribution to use to evaluate observations and sample predictions

scaling: bool, default = True

Whether to automatically scale the target values

epochsint, default = 100

Number of epochs the model will be trained for

batch_sizeint, default = 64

Size of batches used during training

num_batches_per_epochint, default = 50

Number of batches processed every epoch

learning_ratefloat, default = 1e-3,

Learning rate used during training

References

Salinas2020

Salinas, David, et al. “DeepAR: Probabilistic forecasting with autoregressive recurrent networks.” International Journal of Forecasting. 2020.

SimpleFeedForwardModel

class autogluon.timeseries.models.SimpleFeedForwardModel(freq: Optional[str] = None, prediction_length: int = 1, path: Optional[str] = None, name: Optional[str] = None, eval_metric: str = None, hyperparameters: Dict[str, Any] = None, **kwargs)[source]

SimpleFeedForward model from GluonTS based on the PyTorch backend.

The model consists of a multilayer perceptron (MLP) that predicts the distribution of all the target value in the forecast horizon.

Based on gluonts.torch.model.simple_feedforward.SimpleFeedForwardEstimator. See GluonTS documentation for additional hyperparameters.

Other Parameters
context_lengthint, optional

Number of time units that condition the predictions (default: None, in which case context_length = prediction_length)

hidden_dimensions: List[int], default = [20, 20]

Size of hidden layers in the feedforward network

distr_outputgluonts.torch.distributions.DistributionOutput, default = StudentTOutput()

Distribution to fit.

batch_normalizationbool, default = False

Whether to use batch normalization

mean_scalingbool, default = True

Scale the network input by the data mean and the network output by its inverse

epochsint, default = 100

Number of epochs the model will be trained for

batch_sizeint, default = 64

Size of batches used during training

num_batches_per_epochint, default = 50

Number of batches processed every epoch

learning_ratefloat, default = 1e-3,

Learning rate used during training

TemporalFusionTransformerModel

class autogluon.timeseries.models.TemporalFusionTransformerModel(freq: Optional[str] = None, prediction_length: int = 1, path: Optional[str] = None, name: Optional[str] = None, eval_metric: str = None, hyperparameters: Dict[str, Any] = None, **kwargs)[source]

TemporalFusionTransformer model from GluonTS.

The model combines an LSTM encoder, a transformer decoder, and directly predicts the quantiles of future target values. As described in [Lim2021].

Based on gluonts.torch.model.tft.TemporalFusionTransformerEstimator. See GluonTS documentation for additional hyperparameters.

Other Parameters
context_lengthint, default = 64

Number of past values used for prediction.

disable_static_featuresbool, default = False

If True, static features won’t be used by the model even if they are present in the dataset. If False, static features will be used by the model if they are present in the dataset.

disable_known_covariatesbool, default = False

If True, known covariates won’t be used by the model even if they are present in the dataset. If False, known covariates will be used by the model if they are present in the dataset.

disable_past_covariatesbool, default = False

If True, past covariates won’t be used by the model even if they are present in the dataset. If False, past covariates will be used by the model if they are present in the dataset.

hidden_dimint, default = 32

Size of the LSTM & transformer hidden states.

variable_dimint, default = 32

Size of the feature embeddings.

num_headsint, default = 4

Number of attention heads in self-attention layer in the decoder.

dropout_ratefloat, default = 0.1

Dropout regularization parameter

epochsint, default = 100

Number of epochs the model will be trained for

batch_sizeint, default = 64

Size of batches used during training

num_batches_per_epochint, default = 50

Number of batches processed every epoch

learning_ratefloat, default = 1e-3,

Learning rate used during training

References

Lim2021

Lim, Bryan, et al. “Temporal Fusion Transformers for Interpretable Multi-horizon Time Series Forecasting.” International Journal of Forecasting. 2021.

MXNet Models

Following MXNet-based models from GluonTS are available in AutoGluon.

  • DeepARMXNetModel

  • MQCNNMXNetModel

  • MQRNNMXNetModel

  • SimpleFeedForwardMXNetModel

  • TemporalFusionTransformerMXNetModel

  • TransformerMXNetModel

Documentation and hyperparameter settings for these models can be found here.

Using the above models requires installing Apache MXNet v1.9. This can be done as follows:

python -m pip install mxnet~=1.9

If you want to use a GPU, install the version of MXNet that matches your CUDA version. See the MXNet documentation for more info.

If a GPU is available and MXNet version with CUDA is installed, all the MXNet models will be trained using the GPU. Otherwise, the models will be trained on CPU.

Additional features

Overview of the additional features and covariates supported by different models. Models not included in this table currently do not support any additional features.

Model

Static features (continuous)

Static features (categorical)

Known covariates (continuous)

Past covariates (continuous)

AutoGluonTabularModel

DeepARModel

TemporalFusionTransformerModel

DeepARMXNetModel

MQCNNMXNetModel

TemporalFusionTransformerMXNetModel