make_reduction#

make_reduction(estimator, strategy='recursive', window_length=10, scitype='infer', transformers=None, pooling='local', windows_identical=True)[source]#

Make forecaster based on reduction to tabular or time-series regression.

During fitting, a sliding-window approach is used to first transform the time series into tabular or panel data, which is then used to fit a tabular or time-series regression estimator. During prediction, the last available data is used as input to the fitted regression estimator to generate forecasts.

Parameters
estimatoran estimator instance

Either a tabular regressor from scikit-learn or a time series regressor from sktime.

strategystr, optional (default=”recursive”)

The strategy to generate forecasts. Must be one of “direct”, “recursive” or “multioutput”.

window_lengthint, optional (default=10)

Window length used in sliding window transformation.

scitypestr, optional (default=”infer”)

Legacy argument for downwards compatibility, should not be used. make_reduction will automatically infer the correct type of estimator. This internal inference can be force-overridden by the scitype argument. Must be one of “infer”, “tabular-regressor” or “time-series-regressor”. If the scitype cannot be inferred, this is a bug and should be reported.

transformers: list of transformers (default = None)

A suitable list of transformers that allows for using an en-bloc approach with make_reduction. This means that instead of using the raw past observations of y across the window length, suitable features will be generated directly from the past raw observations. Currently only supports WindowSummarizer (or a list of WindowSummarizers) to generate features e.g. the mean of the past 7 observations. Currently only works for RecursiveTimeSeriesRegressionForecaster.

pooling: str {“local”, “global”}, optional

Specifies whether separate models will be fit at the level of each instance (local) of if you wish to fit a single model to all instances (“global”). Currently only works for RecursiveTimeSeriesRegressionForecaster.

windows_identical: bool, (default = True)

Direct forecasting only. Specifies whether all direct models use the same X windows from y (True: Number of windows = total observations + 1 - window_length - maximum forecasting horizon) or a different number of X windows depending on the forecasting horizon (False: Number of windows = total observations + 1 - window_length - forecasting horizon). See pictionary below for more information.

Please see below a graphical representation of the make_reduction logic using the
following symbols:

y = forecast target. x = past values of y that are used as features (X) to forecast y * = observations, past or future, neither part of window nor forecast.

Assume we have the following training data (14 observations): |----------------------------| | * * * * * * * * * * * * * *| |----------------------------|

And want to forecast with window_length = 9 and fh = [2, 4].

By construction, a recursive reducer always targets the first data point after the window, irrespective of the forecasting horizons requested. In the example the following 5 windows are created: |--------------------------- | | x x x x x x x x x y * * * *| | * x x x x x x x x x y * * *| | * * x x x x x x x x x y * *| | * * * x x x x x x x x x y *| | * * * * x x x x x x x x x y| |----------------------------|

Direct Reducers will create multiple models, one for each forecasting horizon. With the argument windows_identical = True (default) the windows used to train the model are defined by the maximum forecasting horizon. Only two complete windows can be defined in this example: fh = 4 (maxium of fh = [2, 4]) |--------------------------- | | x x x x x x x x x * * * y *| | * x x x x x x x x x * * * y| |----------------------------| All other forecasting horizon will also use those two windows. fh = 2 |--------------------------- | | x x x x x x x x x * y * * *| | * x x x x x x x x x * y * *| |----------------------------| With windows_identical = False we drop the requirement to use the same windows for each of the direct models, so more windows can be created for horizons other than the maximum forecasting horizon: fh = 2 |--------------------------- | | x x x x x x x x x * y * * *| | * x x x x x x x x x * y * *| | * * x x x x x x x x x * y *| | * * * x x x x x x x x x * y| |----------------------------| fh = 4 |--------------------------- | | x x x x x x x x x * * * y *| | * x x x x x x x x x * * * y| |----------------------------|

Use windows_identical = True if you want to compare the forecasting performance across different horizons, since all models trained will use the same windows. Use windows_identical = False if you want to have the highest forecasting accuracy for each forecasting horizon.

Returns
estimatoran Estimator instance

A reduction forecaster

References

1

Bontempi, Gianluca & Ben Taieb, Souhaib & Le Borgne, Yann-Aël. (2013). Machine Learning Strategies for Time Series Forecasting.

Examples

>>> from sktime.forecasting.compose import make_reduction
>>> from sktime.datasets import load_airline
>>> from sklearn.ensemble import GradientBoostingRegressor
>>> y = load_airline()
>>> regressor = GradientBoostingRegressor()
>>> forecaster = make_reduction(regressor, window_length=15, strategy="recursive")
>>> forecaster.fit(y)
RecursiveTabularRegressionForecaster(...)
>>> y_pred = forecaster.predict(fh=[1,2,3])