mirror of
https://github.com/microsoft/FLAML.git
synced 2026-02-09 02:09:16 +08:00
Clarify period parameter and automatic label lagging in time series forecasting (#1495)
* Initial plan * Add comprehensive documentation for period parameter and automatic label lagging Co-authored-by: thinkall <3197038+thinkall@users.noreply.github.com> * Address code review feedback on docstring clarity Co-authored-by: thinkall <3197038+thinkall@users.noreply.github.com> * Clarify period vs prediction output length per @thinkall's feedback Co-authored-by: thinkall <3197038+thinkall@users.noreply.github.com> * Refine terminology per code review feedback Co-authored-by: thinkall <3197038+thinkall@users.noreply.github.com> * Run pre-commit formatting fixes Co-authored-by: thinkall <3197038+thinkall@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: thinkall <3197038+thinkall@users.noreply.github.com> Co-authored-by: Li Jiang <bnujli@gmail.com>
This commit is contained in:
@@ -1013,6 +1013,14 @@ class AutoML(BaseEstimator):
|
||||
the searched learners, such as sample_weight. Below are a few examples of
|
||||
estimator-specific parameters:
|
||||
period: int | forecast horizon for all time series forecast tasks.
|
||||
This is the number of time steps ahead to forecast (e.g., period=12 means
|
||||
forecasting 12 steps into the future). This represents the forecast horizon
|
||||
used during model training. Note: during prediction, the output length
|
||||
equals the length of X_test. FLAML automatically handles feature
|
||||
engineering for you - sklearn-based models (lgbm, rf, xgboost, etc.) will have
|
||||
lagged features created automatically, while time series native models (prophet,
|
||||
arima, sarimax) use their built-in forecasting capabilities. You do NOT need
|
||||
to manually create lagged features of the target variable.
|
||||
gpu_per_trial: float, default = 0 | A float of the number of gpus per trial,
|
||||
only used by TransformersEstimator, XGBoostSklearnEstimator, and
|
||||
TemporalFusionTransformerEstimator.
|
||||
@@ -2107,6 +2115,14 @@ class AutoML(BaseEstimator):
|
||||
the searched learners, such as sample_weight. Below are a few examples of
|
||||
estimator-specific parameters:
|
||||
period: int | forecast horizon for all time series forecast tasks.
|
||||
This is the number of time steps ahead to forecast (e.g., period=12 means
|
||||
forecasting 12 steps into the future). This represents the forecast horizon
|
||||
used during model training. Note: during prediction, the output length
|
||||
equals the length of X_test. FLAML automatically handles feature
|
||||
engineering for you - sklearn-based models (lgbm, rf, xgboost, etc.) will have
|
||||
lagged features created automatically, while time series native models (prophet,
|
||||
arima, sarimax) use their built-in forecasting capabilities. You do NOT need
|
||||
to manually create lagged features of the target variable.
|
||||
gpu_per_trial: float, default = 0 | A float of the number of gpus per trial,
|
||||
only used by TransformersEstimator, XGBoostSklearnEstimator, and
|
||||
TemporalFusionTransformerEstimator.
|
||||
|
||||
@@ -17,24 +17,30 @@ from sklearn.preprocessing import StandardScaler
|
||||
|
||||
|
||||
def make_lag_features(X: pd.DataFrame, y: pd.Series, lags: int):
|
||||
"""Transform input data X, y into autoregressive form - shift
|
||||
them appropriately based on horizon and create `lags` columns.
|
||||
"""Transform input data X, y into autoregressive form by creating `lags` columns.
|
||||
|
||||
This function is called automatically by FLAML during the training process
|
||||
to convert time series data into a format suitable for sklearn-based regression
|
||||
models (e.g., lgbm, rf, xgboost). Users do NOT need to manually call this function
|
||||
or create lagged features themselves.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
X : pandas.DataFrame
|
||||
Input features.
|
||||
Input feature DataFrame, which may contain temporal features and/or exogenous variables.
|
||||
|
||||
y : array_like, (1d)
|
||||
Target vector.
|
||||
Target vector (time series values to forecast).
|
||||
|
||||
horizon : int
|
||||
length of X for `predict` method
|
||||
lags : int
|
||||
Number of lagged time steps to use as features.
|
||||
|
||||
Returns
|
||||
-------
|
||||
pandas.DataFrame
|
||||
shifted dataframe with `lags` columns
|
||||
Shifted dataframe with `lags` columns for each original feature.
|
||||
The target variable y is also lagged to prevent data leakage
|
||||
(i.e., we use y(t-1), y(t-2), ..., y(t-lags) to predict y(t)).
|
||||
"""
|
||||
lag_features = []
|
||||
|
||||
@@ -55,6 +61,17 @@ def make_lag_features(X: pd.DataFrame, y: pd.Series, lags: int):
|
||||
|
||||
|
||||
class SklearnWrapper:
|
||||
"""Wrapper class for using sklearn-based models for time series forecasting.
|
||||
|
||||
This wrapper automatically handles the transformation of time series data into
|
||||
a supervised learning format by creating lagged features. It trains separate
|
||||
models for each step in the forecast horizon.
|
||||
|
||||
Users typically don't interact with this class directly - it's used internally
|
||||
by FLAML when sklearn-based estimators (lgbm, rf, xgboost, etc.) are selected
|
||||
for time series forecasting tasks.
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
model_class: type,
|
||||
|
||||
@@ -8,6 +8,25 @@ Install the [automl,ts_forecast] option.
|
||||
pip install "flaml[automl,ts_forecast]"
|
||||
```
|
||||
|
||||
### Understanding the `period` Parameter
|
||||
|
||||
The `period` parameter (also called **horizon** in the code) specifies the **forecast horizon** - the number of future time steps the model is trained to predict. For example:
|
||||
|
||||
- `period=12` means you want to forecast 12 time steps ahead (e.g., 12 months, 12 days)
|
||||
- `period=7` means you want to forecast 7 time steps ahead
|
||||
|
||||
**Important Note on Prediction**: During the prediction stage, the output length equals the length of `X_test`. This means you can generate predictions for any number of time steps by providing the corresponding timestamps in `X_test`, regardless of the `period` value used during training.
|
||||
|
||||
#### Automatic Feature Engineering
|
||||
|
||||
**Important**: You do NOT need to manually lag the target variable before training. FLAML handles this automatically:
|
||||
|
||||
- **For sklearn-based models** (lgbm, rf, xgboost, extra_tree, catboost): FLAML automatically creates lagged features of both the target variable and any exogenous variables. This transforms the time series forecasting problem into a supervised learning regression problem.
|
||||
|
||||
- **For time series native models** (prophet, arima, sarimax, holt-winters): These models have built-in time series forecasting capabilities and handle temporal dependencies natively.
|
||||
|
||||
The automatic lagging is implemented internally when you call `automl.fit()` with `task="ts_forecast"` or `task="ts_forecast_classification"`, so you can focus on providing clean input data without worrying about feature engineering.
|
||||
|
||||
### Simple NumPy Example
|
||||
|
||||
```python
|
||||
|
||||
Reference in New Issue
Block a user