Menu
Grafana Cloud

Forecast model configuration

This page contains details on the forecast model details available for configuration and relevant notes regarding the individual settings.

Common forecast model Configuration

The following fields are configurable on all models:

Training data range

How far back in time to look for training data. Default 90 days. This range should not be greater than the retention period of the underlying data source, as no data would be returned beyond it. If the value is set too high, it could limit your training data interval options.

Training data interval

The resolution of the data being trained on and of the generated predictions. Default 5 minutes.

A maximum of 50,000 samples per series can be used to train a model, so training data range / training data interval must result in less than 50,000. For reference, 90 days of training data at a 5 minute resolution is 25,920 samples.

Prophet Hyperparameters

The following are hyperparameters that can be tuned for the Prophet model. The ‘Terraform’ bullet points indicate the key of the hyperparameter to use in the hyper_params field of the grafana_machine_learning_job resource when provisioning with Terraform.

Changepoint Prior Scale

  • Default: 0.05
  • Minimum: 0.001
  • Maximum: 10.0
  • Terraform: changepoint_prior_scale

Determines the flexibility of the trend and in particular how much the trend changes at the trend changepoints. If it is too small the trend will be underfit and variance that should have been modeled with trend changes will instead end up being handled with the noise term. If it is too large the trend will overfit and in the most extreme case you can end up with the trend capturing yearly seasonality. A range of [0.001, 0.5] would likely be about right.

Changepoint Range

  • Default: 0.8
  • Minimum: 0.01
  • Maximum: 1.0
  • Terraform: changepoint_range

Controls what portion of the training data to check for changepoints. For the default value of 0.8, the first 80% of the data is checked for changepoints, and changepoints in the remaining 20% of data are ignored.

Seasonality Prior Scale

  • Default: 10.0
  • Minimum: 0.01
  • Maximum: 10.0
  • Terraform: seasonality_prior_range

Controls the flexibility to fit the seasonality. A large value allows the seasonality to fit large fluctuations, whereas a small value shrinks the magnitude of the seasonality.

Uncertainty Interval Width

  • Default: 0.95
  • Minimum: 0.01
  • Maximum: 1
  • Terraform: interval_width

Uncertainty intervals (yhat_upper, yhat_lower) are computed as quantiles of the predicted value to use. The default value of 0.95 provides a 95% confidence interval. 95% of future data should be expected to be between (yhat_upper, yhat_lower).

Seasonality Mode

  • Default: additive
  • Options: additive, multiplicative
  • Terraform: seasonality_mode

Set to “multiplicative” if it appears that the magnitude of seasonal fluctuations grows with the magnitude of the time series.

Growth

  • Default: linear
  • Options: flat, linear, logistic
  • Terraform: growth

The type of model used for the growth trend component.

Set to ‘flat’ only if you are certain that the trend is constant and that the time series mostly exhibits seasonality patterns, rather than trend changes. A flat growth model can reduce the width of uncertainty intervals in such cases.

Choose ’linear’ when you model something that always increases linearly. For example, disk space consumed by a constant rate of write operations.

Choose ’logistic’ for scenarios when you model growth with a known maximum value. You need to specify the maximum achievable point or carrying capacity at which that the forecast saturates. An optional floor may also be specified.

Logistic Cap

  • Terraform: logistic_growth_cap

Expected maximum achievable value (required if and only if ‘growth’ is ’logistic’).

Logistic Floor

  • Terraform: logistic_growth_cap

Expected minimum achievable value (optional).

Weekly Fourier Order

  • Default: 3
  • Minimum: 0 (disabled)
  • Maximum: 25
  • Terraform: weekly_seasonality

How many Fourier orders to use to calculate weekly seasonality. If you leave the value empty, the value defaults to 3 when the training data range is larger than two weeks, and seasonality is then disabled on training data ranges under two weeks. Setting the Fourier order to 0 will disable weekly seasonality. Note that if a separate weekly seasonality for a holiday is configured, it is not possible to disable weekly seasonality.

If there is a strong weekday vs weekend component to your data it is recommended to use a Fourier order between 10 and 25.

Separate weekly seasonality for holiday

Optionally, a holiday for which weekly seasonality should be modelled separately. This allows the model to capture the fact that the holiday may have a different day-of-week effects to non-holidays. For example, public holidays may not show the same weekday effects as non-holidays.

  • Terraform: conditional_weekly_seasonality (must be set to the ID of a linked holiday)

Daily Fourier Order

  • Default: 4
  • Minimum: 0 (disabled)
  • Maximum: 25
  • Terraform: daily_seasonality

How many Fourier orders to use when calculating daily seasonality. Leaving this value empty will use the default of 4 when the training data range is larger than two days, and disable seasonality on smaller training data ranges. Setting the Fourier order to 0 will disable daily seasonality. Note that if a separate daily seasonality for a holiday is configured it is not possible to disable daily seasonality.

Separate daily seasonality for holiday

Optionally, a holiday for which daily seasonality should be modelled separately. This allows the model to capture the fact that the holiday may have a different hour-of-day effects to non-holidays. For example, public holidays may not show the same spike during work hours as non-holidays.

  • Terraform: conditional_daily_seasonality (must be set to the ID of a linked holiday)

Holidays Prior Scale

  • Default: 10.0
  • Minimum: 0.01
  • Maximum: 10.0
  • Terraform: holidays_prior_scale

Controls the flexibility to fit holidays. A large value allows fitting to large fluctuations on holidays, whereas a small value shrinks the impact of those fluctuations on the fit.