GBLinearForecaster#

class openstef_models.models.forecasting.gblinear_forecaster.GBLinearForecaster(**data: Any) None[source]

Bases: Forecaster, ExplainableForecaster, ContributionsMixin

GBLinear-based forecaster for probabilistic energy forecasting.

Implements gradient boosted linear models using XGBoost’s gblinear booster for multi-quantile forecasting. Unlike tree-based models, this linear approach does not suffer from extrapolation issues and provides better performance for time series data where predictions outside the training range are required.

The forecaster uses linear models with gradient boosting optimization, making it particularly suitable for forecasting scenarios where the underlying relationships are approximately linear or when avoiding extrapolation artifacts is critical. This approach provides well-calibrated uncertainty estimates while maintaining computational efficiency and interpretability.

Invariants

  • fit() must be called before predict() to train the model

  • Configuration quantiles determine the number of prediction outputs

  • Model state is preserved across predict() calls after fitting

  • Input features must match training data structure during prediction

Example

Basic forecasting workflow

>>> from datetime import timedelta
>>> from openstef_core.types import LeadTime, Quantile
>>> forecaster = GBLinearForecaster(
...     quantiles=[Quantile(0.1), Quantile(0.5), Quantile(0.9)],
...     horizons=[LeadTime(timedelta(hours=1))],
...     hyperparams=GBLinearHyperParams(
...         learning_rate=0.1,
...         reg_alpha=0.1,
...         reg_lambda=1.0,
...     ),
... )
>>> forecaster.fit(training_data)
>>> predictions = forecaster.predict(test_data)

Note

XGBoost dependency is optional and must be installed separately. The model automatically handles multi-quantile output using quantile regression and is optimized for energy forecasting applications where linear relationships dominate and extrapolation beyond training data is required.

See also

GBLinearHyperParams: Detailed hyperparameter configuration options. Forecaster: Base interface for all forecasting models. XGBoostForecaster: Tree-based alternative for non-linear patterns.

Parameters:

data (Any)

HyperParams

alias of GBLinearHyperParams

horizons: list[LeadTime]
hyperparams: GBLinearHyperParams
device: str
verbosity: Literal[0, 1, 2, 3, True]
property hparams: GBLinearHyperParams

Model hyperparameters for training and prediction.

Concrete forecasters implement this by returning their narrowed hyperparams field, giving callers a polymorphic read-only view while each subclass keeps full type safety on its own field.

model_post_init(_context: object, /) None[source]

Initialize the underlying XGBoost gblinear model from configuration.

Parameters:

_context (object)

Return type:

None

property is_fitted: bool

Check if the predictor has been fitted.

fit(data: ForecastInputDataset, data_val: ForecastInputDataset | None = None) None[source]

Fit the predictor to the input data.

This method should be called before generating predictions. It allows the predictor to learn parameters from the training data.

Parameters:
Return type:

None

predict(data: ForecastInputDataset) ForecastDataset[source]

Generate predictions for the input data.

This method should use the fitted parameters to generate predictions.

Parameters:
Returns:

Predictions for the input data.

Raises:

NotFittedError – If the predictor has not been fitted yet.

Return type:

ForecastDataset

predict_contributions(data: ForecastInputDataset) TimeSeriesDataset[source]

Compute SHAP feature contributions for the median quantile.

Parameters:
Returns:

TimeSeriesDataset with per-feature SHAP values plus a bias column.

Raises:

NotFittedError – If the model has not been fitted.

Return type:

TimeSeriesDataset

property feature_importances: DataFrame

Get feature importance scores for this model.

Returns DataFrame with feature names as index and quantiles as columns. Each quantile represents the importance distribution across multiple model training runs or folds.

Returns:

DataFrame with feature names as index and quantile columns. Values represent normalized importance scores summing to 1.0.

Note

The returned DataFrame must have feature names as index and quantile columns in format ‘quantile_PXX’ (e.g., ‘quantile_P50’, ‘quantile_P95’). All quantile values must be between 0 and 1.

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'extra': 'ignore', 'protected_namespaces': ()}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].