ExponentialSmoothing
Forecast from a weighted average that favours recent observations.
Exponential smoothing tracks the level of a series by averaging its past, weighting each observation less the older it is. Optional trend and seasonal components extend that to series which drift or repeat, which together make up the Holt-Winters method.
Where ARIMA models a series through its correlations, this models it through its structure: level, direction, and repeating pattern. That makes it the better first choice when a series visibly has a season, and it is usually easier to configure, since the three components are things you can see in a plot rather than orders you have to search for.
Additive components suit a swing of roughly constant size; multiplicative ones suit a swing that grows as the series does. A seasonal component needs a season length above 1 and at least two full cycles of history.
References
- [1] https://www.statsmodels.org/stable/generated/statsmodels.tsa.holtwinters.ExponentialSmoothing.html
- [2] https://otexts.com/fpp3/expsmooth.html
Parameters
- trend : string, default=
none - Whether the series drifts steadily up or down. 'add' for a trend of roughly constant size, 'mul' for one that grows with the level, 'none' for a series with no direction.
- seasonal : string, default=
none - Whether a pattern repeats every season. 'add' when the swing is about the same size each cycle, 'mul' when it grows with the level. Needs a season length above 1.
- season_length : integer, default=
1 - How many observations make up one full cycle: 12 for monthly data repeating yearly, 7 for daily data repeating weekly. Only used when a seasonal component is selected.
Methods
predict(self, x: 'DashAIDataset') -> 'np.ndarray'
ExponentialSmoothingForecast forward from the end of the training series.
Parameters
- x : DashAIDataset
- The rows to forecast, whose dates say how far ahead each one is.
Returns
- np.ndarray
- One forecast value per requested row.
train(self, x_train: 'DashAIDataset', y_train: 'DashAIDataset', x_validation: 'DashAIDataset' = None, y_validation: 'DashAIDataset' = None) -> 'ExponentialSmoothing'
ExponentialSmoothingFit the smoothing model to the series.
Parameters
- x_train : DashAIDataset
- The date column. statsmodels is given the values in order and the spacing is assumed regular; the dates are kept so a later partition can be forecast at its own dates.
- y_train : DashAIDataset
- The series to forecast.
- x_validation : DashAIDataset, optional
- Unused.
- y_validation : DashAIDataset, optional
- Unused.
Returns
- ExponentialSmoothing
- The fitted model.
calculate_metrics(self, split: DashAI.back.core.enums.metrics.SplitEnum = <SplitEnum.VALIDATION: 'validation'>, level: DashAI.back.core.enums.metrics.LevelEnum = <LevelEnum.LAST: 'last'>, log_index: int = None, x_data: 'DashAIDataset' = None, y_data: 'DashAIDataset' = None, fold_index: int = None, inner_fold_index: int = None)
BaseModelCalculate and save metrics for a given data split and level.
Parameters
- split : SplitEnum
- The data split to evaluate (TRAIN, VALIDATION, or TEST). Defaults to SplitEnum.VALIDATION.
- level : LevelEnum
- The metric granularity level (LAST, TRIAL, STEP, or BATCH). Defaults to LevelEnum.LAST.
- log_index : int, optional
- Explicit step index for the metric entry. If None, the next step index is computed automatically. Defaults to None.
- x_data : DashAIDataset, optional
- Input features. If None, the dataset stored in the model for the given split is used. Defaults to None.
- y_data : DashAIDataset, optional
- Target labels. If None, the labels stored in the model for the given split are used. Defaults to None.
compute_metrics(self, split: DashAI.back.core.enums.metrics.SplitEnum = <SplitEnum.TEST: 'test'>, x_data: 'DashAIDataset' = None, y_data: 'DashAIDataset' = None) -> Dict[str, float]
BaseModelCalculate and return metric scores for a given data split.
Parameters
- split : SplitEnum
- The data split to evaluate (TRAIN, VALIDATION, or TEST). Defaults to SplitEnum.VALIDATION.
- x_data : DashAIDataset, optional
- Input features. If None, the dataset stored in the model for the given split is used. Defaults to None.
- y_data : DashAIDataset, optional
- Target labels. If None, the labels stored in the model for the given split are used. Defaults to None.
Returns
- Dict[str, float]
- A dictionary mapping metric names to their computed scores.
get_credential(self, name: str)
ConfigObjectResolve a registered credential component by name.
Parameters
- name : str
- Credential component class name (e.g. "HuggingFaceCredential").
Returns
- BaseCredential
- An instance of the requested credential component.
get_metadata(cls) -> Dict[str, Any]
BaseModelGet metadata values for the current model.
Returns
- Dict[str, Any]
- Dictionary containing UI metadata such as the model icon used in the DashAI frontend.
get_schema(cls) -> dict
ConfigObjectGenerates the component related Json Schema.
Returns
- dict
- Dictionary representing the Json Schema of the component.
load(filename: str) -> Any
ForecastingModelDeserialise a model from disk using joblib.
Parameters
- filename : str
- Path to the file previously written by :meth:
save.
Returns
- ForecastingModel
- The loaded model instance.
predict_prepared(self, features: Any) -> Any
BaseModelPredict from data that is already in this model's feature space.
Parameters
- features : pandas.DataFrame or numpy.ndarray
- Feature matrix as returned by
prepare_dataset(..., is_fit=False). No further preparation is applied to it.
Returns
- Any
- The same kind of output as
predict: predicted values for regressors, class probabilities for DashAI classifiers.
predict_proba_prepared(self, features: Any) -> Any
BaseModelReturn class probabilities for data already in the feature space.
Parameters
- features : pandas.DataFrame or numpy.ndarray
- Feature matrix as returned by
prepare_dataset(..., is_fit=False).
Returns
- numpy.ndarray
- Array of shape
(n_samples, n_classes)with class probabilities.
prepare_dataset(self, dataset: 'DashAIDataset', is_fit: bool = False) -> 'DashAIDataset'
BaseModelHook for model specific preprocessing of input features.
Parameters
- dataset : DashAIDataset
- The input dataset to preprocess.
- is_fit : bool
- Whether the call is part of a fitting phase. Defaults to False.
Returns
- DashAIDataset
- The preprocessed dataset ready to be fed into the model.
prepare_output(self, dataset: 'DashAIDataset', is_fit: bool = False) -> 'DashAIDataset'
BaseModelHook for model-specific preprocessing of output targets.
Parameters
- dataset : DashAIDataset
- The output dataset (target labels) to preprocess.
- is_fit : bool
- Whether the call is part of a fitting phase. Defaults to False.
Returns
- DashAIDataset
- The preprocessed output dataset.
save(self, filename: str) -> None
ForecastingModelSerialise the model to disk using joblib.
Parameters
- filename : str
- Destination file path where the model will be written.
validate_and_transform(self, raw_data: dict) -> dict
ConfigObjectIt takes the data given by the user to initialize the model and returns it with all the objects that the model needs to work.
Parameters
- raw_data : dict
- A dictionary with the data provided by the user to initialize the model.
Returns
- dict
- A validated dictionary with the necessary objects.