HierarchyEnsembleForecaster
HierarchyEnsembleForecaster
- class HierarchyEnsembleForecaster(forecasters, by='level', default=None, backend=None, backend_params=None)[source]
Aggregates hierarchical data, fit forecasters and make predictions.
Can apply different univariate forecaster either on different level of aggregation or on different hierarchical nodes.
HierarchyEnsembleForecasteris passed forecaster/level or forecaster/node pairs. Level can only be int >= 0 with 0 signifying the topmost level of aggregation. Node can only be a tuple of strings or list of tuples.Behaviour in
fit,predict: For level pairsf_i, l_ipassed, applies forecasterf_ito levell_i. For node pairsf_i, n_ipassed, applies forecasterf_ion each node ofn_i. Ifdefaultargument is passed, appliesdefaultforecaster on the remaining levels/nodes which are not mentioned in argumentforecasters.predictresults are concatenated to one container with same columns as infit.- Parameters:
- forecasterssktime forecaster, or list of tuples
(str, estimator, int or list of tuple/s) if forecaster, clones of
forecasterare applied to all aggregated levels. if list of tuples, with name = str, estimator is forecaster, level/node as int/tuples respectively. all levels/nodes must be present inforecastersattribute ifdefaultattribute is None- by{‘node’, ‘level’, default=’level’}
if
'level', applies a univariate forecaster on all the hierarchical nodes within a level of aggregation if'node', applies separate univariate forecaster for each hierarchical node.- defaultsktime forecaster {default = None}
if passed, applies
defaultforecaster on the nodes/levels not mentioned in theforecasterargument.- backendstring, by default “None”.
Parallelization backend to use for runs. Runs parallel evaluate if specified and
strategy="refit".“None”: executes loop sequentially, simple list comprehension
“loky”, “multiprocessing” and “threading”: uses
joblib.Parallelloops“joblib”: custom and 3rd party
joblibbackends, e.g.,spark“dask”: uses
dask, requiresdaskpackage in environment“dask_lazy”: same as “dask”, but changes the return to (lazy)
dask.dataframe.DataFrame.“ray”: uses
ray, requiresraypackage in environment
Recommendation: Use “dask” or “loky” for parallel evaluate. “threading” is unlikely to see speed ups due to the GIL and the serialization backend (
cloudpickle) for “dask” and “loky” is generally more robust than the standardpicklelibrary used in “multiprocessing”.- backend_paramsdict, optional
additional parameters passed to the backend as config. Directly passed to
utils.parallel.parallelize. Valid keys depend on the value ofbackend:“None”: no additional parameters,
backend_paramsis ignored“loky”, “multiprocessing” and “threading”: default
joblibbackends any valid keys forjoblib.Parallelcan be passed here, e.g.,n_jobs, with the exception ofbackendwhich is directly controlled bybackend. Ifn_jobsis not passed, it will default to-1, other parameters will default tojoblibdefaults.“joblib”: custom and 3rd party
joblibbackends, e.g.,spark. any valid keys forjoblib.Parallelcan be passed here, e.g.,n_jobs,backendmust be passed as a key ofbackend_paramsin this case. Ifn_jobsis not passed, it will default to-1, other parameters will default tojoblibdefaults.“dask”: any valid keys for
dask.computecan be passed, e.g.,scheduler“ray”: The following keys can be passed:
“ray_remote_args”: dictionary of valid keys for
ray.init- “shutdown_ray”: bool, default=True; False prevents
rayfrom shutting down after parallelization.
- “shutdown_ray”: bool, default=True; False prevents
“logger_name”: str, default=”ray”; name of the logger to use.
“mute_warnings”: bool, default=False; if True, suppresses warnings
- Attributes:
cutoffCut-off = “present time” state of forecaster.
fhForecasting horizon that was passed.
is_fittedWhether
fithas been called.stateState of the estimator.
Examples
>>> from sktime.forecasting.compose import HierarchyEnsembleForecaster >>> from sktime.forecasting.naive import NaiveForecaster >>> from sktime.forecasting.trend import PolynomialTrendForecaster, TrendForecaster >>> from sktime.utils._testing.hierarchical import _bottom_hier_datagen >>> y = _bottom_hier_datagen( ... no_bottom_nodes=7, ... no_levels=2, ... random_seed=123, ... )
>>> # Example of by = 'level' >>> forecasters = [ ... ('naive', NaiveForecaster(), 0), ... ('trend', TrendForecaster(), 1), ... ] >>> forecaster = HierarchyEnsembleForecaster( ... forecasters=forecasters, ... by='level', ... default=PolynomialTrendForecaster(degree=2), ... ) >>> forecaster.fit(y, fh=[1, 2, 3]) HierarchyEnsembleForecaster(...) >>> y_pred = forecaster.predict()
>>> # Example of by = 'node' >>> forecasters = [ ... ('trend', TrendForecaster(), [("__total", "__total")]), ... ('poly', PolynomialTrendForecaster(degree=2), [('l2_node01', 'l1_node01')]), ... ] >>> forecaster = HierarchyEnsembleForecaster( ... forecasters=forecasters, ... by='node', default=NaiveForecaster() ... ) >>> forecaster.fit(y, fh=[1, 2, 3]) HierarchyEnsembleForecaster(...) >>> y_pred = forecaster.predict()
Methods
check_is_fitted([method_name])Check if the estimator has been fitted.
clone()Obtain a clone of the object with same hyper-parameters and config.
clone_tags(estimator[, tag_names])Clone tags from another object as dynamic override.
create_test_instance([parameter_set])Construct an instance of the class, using first test parameter set.
create_test_instances_and_names([parameter_set])Create list of all test instances and a list of names for them.
fit(y[, X, fh])Fit forecaster to training data.
fit_predict(y[, X, fh, X_pred])Fit and forecast time series at future horizon.
get_class_tag(tag_name[, tag_value_default])Get class tag value from class, with tag level inheritance from parents.
get_class_tags()Get class tags from class, with tag level inheritance from parent classes.
get_config()Get config flags for self.
get_fitted_params([deep])Get fitted parameters.
get_param_defaults()Get object's parameter defaults.
get_param_names([sort])Get object's parameter names.
get_params([deep])Get parameters of estimator.
get_pretrained_params([deep])Get pretrained parameters of this estimator.
get_tag(tag_name[, tag_value_default, ...])Get tag value from instance, with tag level inheritance and overrides.
get_tags()Get tags from instance, with tag level inheritance and overrides.
get_test_params()Return testing parameter settings for the estimator.
is_composite()Check if the object is composite.
load_from_path(serial)Load object from file location.
load_from_serial(serial)Load object from serialized memory container.
predict([fh, X])Forecast time series at future horizon.
predict_interval([fh, X, coverage])Compute/return prediction interval forecasts.
predict_proba([fh, X, marginal])Compute/return fully probabilistic forecasts.
predict_quantiles([fh, X, alpha])Compute/return quantile forecasts.
predict_residuals([y, X])Return residuals of time series forecasts.
predict_var([fh, X, cov])Compute/return variance forecasts.
pretrain(y[, X, fh])Pre-train forecaster on panel (global) data.
reset()Reset the object to a clean post-init state.
save([path, serialization_format])Save serialized self to bytes-like object or to (.zip) file.
score(y[, X, fh])Scores forecast against ground truth, using MAPE (non-symmetric).
set_config(**config_dict)Set config flags to given values.
set_params(**kwargs)Set the parameters of estimator.
set_random_state([random_state, deep, ...])Set random_state pseudo-random seed parameters for self.
set_tags(**tag_dict)Set instance level tag overrides to given values.
update(y[, X, update_params])Update cutoff value and, optionally, fitted parameters.
update_predict(y[, cv, X, update_params, ...])Make predictions and update model iteratively over the test set.
update_predict_single([y, fh, X, update_params])Update model with new data and make forecasts.

