Forecaster
ExponentialSmoothing
Holt-Winters exponential smoothing forecaster.
Quickstart
python
from sktime.forecasting.exp_smoothing import ExponentialSmoothing
estimator = ExponentialSmoothing(trend=None, damped_trend=False, seasonal=None, sp=None, initial_level=None, initial_trend=None, initial_seasonal=None, use_boxcox=None, initialization_method='estimated', smoothing_level=None, smoothing_trend=None, smoothing_seasonal=None, damping_trend=None, optimized=True, remove_bias=False, start_params=None, method=None, minimize_kwargs=None, use_brute=True, random_state=None)Parameters(20)
- trend{“add”, “mul”, “additive”, “multiplicative”, None}, default=None
- Type of trend component.
- damped_trendbool, default=False
- Should the trend component be damped.
- seasonal{“add”, “mul”, “additive”, “multiplicative”, None}, default=None
- Type of seasonal component.Takes one of
- spint or None, default=None
- The number of seasonal periods to consider.
- initial_levelfloat or None, default=None
- The alpha value of the simple exponential smoothing, if the value is set then this value will be used as the value.
- initial_trendfloat or None, default=None
- The beta value of the Holt’s trend method, if the value is set then this value will be used as the value.
- initial_seasonalfloat or None, default=None
- The gamma value of the holt winters seasonal method, if the value is set then this value will be used as the value.
- use_boxcox{True, False, ‘log’, float}, default=None
- Should the Box-Cox transform be applied to the data first? If ‘log’ then apply the log. If float then use lambda equal to float.
- initialization_method:{‘estimated’,’heuristic’,’legacy-heuristic’,’known’,None},
default=’estimated’ Method for initialize the recursions. If ‘known’ initialization is used, then
initial_levelmust be passed, as well asinitial_trendandinitial_seasonalif applicable. ‘heuristic’ uses a heuristic based on the data to estimate initial level, trend, and seasonal state. ‘estimated’ uses the same heuristic as initial guesses, but then estimates the initial states as part of the fitting process.- smoothing_levelfloat, optional
- The alpha value of the simple exponential smoothing, if the value is set then this value will be used as the value.
- smoothing_trendfloat, optional
- The beta value of the Holt’s trend method, if the value is set then this value will be used as the value.
- smoothing_seasonalfloat, optional
- The gamma value of the holt winters seasonal method, if the value is set then this value will be used as the value.
- damping_trendfloat, optional
- The phi value of the damped method, if the value is set then this value will be used as the value.
- optimizedbool, optional
- Estimate model parameters by maximizing the log-likelihood.
- remove_biasbool, optional
- Remove bias from forecast values and fitted values by enforcing that the average residual is equal to zero.
- start_paramsarray_like, optional
- Starting values to used when optimizing the fit. If not provided, starting values are determined using a combination of grid search and reasonable values based on the initial values of the data. See the notes for the structure of the model parameters.
- methodstr, default “SLSQP”
- The minimizer used. Valid options are “L-BFGS-B”, “TNC”, “SLSQP” (default), “Powell”, “trust-constr”, “basinhopping” (also “bh”) and “least_squares” (also “ls”). basinhopping tries multiple starting values in an attempt to find a global minimizer in non-convex problems, and so is slower than the others.
- minimize_kwargsdict[str, Any]
- A dictionary of keyword arguments passed to SciPy’s minimize function if method is one of “L-BFGS-B”, “TNC”, “SLSQP”, “Powell”, or “trust-constr”, or SciPy’s basinhopping or least_squares functions. The valid keywords are optimizer specific. Consult SciPy’s documentation for the full set of options.
- use_brutebool, optional
- Search for good starting values using a brute force (grid) optimizer. If False, a naive set of starting values is used.
- random_stateint, RandomState instance or None, optional,
- default=None - If int, random_state is the seed used by the random number generator; If RandomState instance, random_state is the random number generator; If None, the random number generator is the RandomState instance used by np.random.
Examples
>>> from sktime.datasets import load_airline
>>> from sktime.forecasting.exp_smoothing import ExponentialSmoothing
>>> y = load_airline ()
>>> forecaster = ExponentialSmoothing (
... trend = 'add', seasonal = 'multiplicative', sp = 12
... )
>>> forecaster. fit (y) ExponentialSmoothing(
... )
>>> y_pred = forecaster. predict (fh = [1, 2, 3 ])References
- [1] Hyndman, Rob J., and George Athanasopoulos. Forecasting: principles and practice. OTexts, 2014.