How to create a Forecaster#
Introduction#
In Chronos, Forecaster (bigdl.chronos.forecaster.Forecaster
) is the forecasting abstraction. It hides the complex logic of model’s creation, training, scaling to cluster, tuning, optimization and inferencing while expose some APIs for users to control.
In this guide, we will use the TCNForecaster
and nyc_taxi datasets as examples to describe how to create a Forecaster.
Prepare Environments#
Before creating a forecaster, we need to install Chronos. Chronos supports deep learning backend implemented by pytorch and tensorflow and machine learning methods based on arima and prophet.
[ ]:
# uncomment following 1 lines for pytorch backend
!pip install --pre --upgrade bigdl-chronos[pytorch]
# uncomment following 2 lines for tensorflow backend
# !pip install --pre --upgrade bigdl-chronos
# !pip install --pre --upgrade bigdl-nano[tensorflow]
# installation trick on colab (no need to do these on your own environment)
!pip uninstall torchtext -y
Create a forecaster#
We provide two ways to create a Forecaster.
Create by
Forecaster.from_tsdataset
(Recommended if valid)Create by
Forecaster(...)
directly
Before creating a Forecaster, We need to know the four parameters past_seq_len
, future_seq_len
, input_feature_num
, output_feature_num
, which represent the time step and feature column, As shown below.
past_seq_len: Sampled input length, represents the history time step length. (i.e. lookback)
future_seq_len: Sampled output length, represents the output time step length.(i.e. horizon)
input_feature_num: All feature column(s), including extra feature column(s) and target column(s).
output_feature_num: Only target column(s).
More Forecaster info, please refer to Time Series Forecasting OverView
If you want to create a traditional statistic forecaster(e.g. ProphetForecaster or ARIMAForecaster), you may refer to their API doc directly since they are relatively easy and do not have required parameters to create them.
[ ]:
# create a TSDataset
from bigdl.chronos.data import get_public_dataset
tsdataset = get_public_dataset('nyc_taxi', with_split=False)
Forecaster.from_tsdataset#
from_tsdataset
is a classmethod, so you can call Forecsater.from_tsdataset
, then input a TSDataset
instance, where TSDataset
is a built-in time series preprocessing class.
If the roll
or to_torch_data_loader
method has been called by tsdataset, past_seq_len
and future_seq_len
do not need to be specified for from_tsdataset, otherwise both must be specified.
[ ]:
# uncomment following 1 lines for pytorch backend
from bigdl.chronos.forecaster import TCNForecaster
# uncomment following 1 lines for tensorflow backend
# from bigdl.chronos.forecaster.tf import TCNForecaster
tcn = TCNForecaster.from_tsdataset(tsdataset,
past_seq_len=48,
future_seq_len=5)
📝 Note
We recommend to use
Forecsater.from_tsdataset
if possible. While for some reasons, some forecasters (e.g.ProphetForecaster
andARIMAForecaster
) does not support this API. Or maybe you want to process your data customizedly without usingTSDataset
, you may create a forecaster directly by callingForecaster(...)
.
Create a forecaster directly#
You can also create forecaster directly, the parameters mentioned above still need to be specified.
[ ]:
tcn = TCNForecaster(past_seq_len=48,
future_seq_len=5,
input_feature_num=2,
output_feature_num=2)