Growth¶
Use model_components.growth
to specify the growth.
Growth is used to model the overall trend of your data over time.
To understand the growth characteristics of your dataset, plot your input training data over time, smoothing out local variation as necessary. For example, aggregate hourly data to the weekly total, and plot the overall trend. See Examine Input Data for details.
By default, silverkite and prophet use linear
growth. Linear growth is commonly seen, which
implies a constant growth rate over time (e.e. constant y/y growth).
Note
In some cases, a metric exhibits linear
growth, but the slope changes at certain points.
For example, a ramp or external event accelerates the rate of growth.
In this case, choose linear
growth, and add changepoints to allow the slope to change.
This fits a piecewise linear trend.
For more information, see Changepoints.
Silverkite¶
Examples:
growth = dict(growth_term="linear") # constant growth rate (default)
growth = dict(growth_term="quadratic") # growth rate increases over time
growth = dict(growth_term="sqrt") # growth rate decreases over time
growth = dict(growth_term=None) # no growth term
growth = None # same as "linear"
growth = dict(growth_term=["linear", "quadratic"]) # grid search over each option
Note
quadratic
and sqrt
may apply to some datasets, but tend not to extrapolate
well very far into future. If you use these, make sure it is reasonable to expect
future growth rate to increase/diminish accordingly for the full training period
and forecast_horizon
.
Note
You may need to set the pipeline parameter estimator__origin_for_time_vars
for proper
historical backtesting. See Custom Parameters.
Custom growth term¶
You can use any parametric function of time to specify growth by leveraging the changepoints specification. See Custom Growth.
While it’s possible to provide any custom growth curve as a regressor (Regressors), use changepoints when possible:
Silverkite does not know if regressors should be considered part of the trend.
Thus, by default, interactions with trend would not include your regressor. See
feature_sets_enabled
at Custom Parameters.You can add those interactions yourself via
extra_pred_cols
. See Custom Parameters.
Prophet¶
Examples:
growth = dict(growth_term=["linear"]) # linear, unbounded growth (default)
growth = dict(growth_term=["logistic"]) # saturating maximum or minimum growth
growth = None # same as "linear"
growth = dict(growth_term=["linear", "logistic"]) # grid search over each option
Prophet allows forecasts with saturating maximum or minimum using logistic
trend, with specified cap
and floor
respectively. For example, user growth
bounded by total addressable market. More details at
Prophet docs.