时间序列预测器.拟合¶
- TimeSeriesPredictor.fit(train_data: TimeSeriesDataFrame | DataFrame | Path | str, tuning_data: TimeSeriesDataFrame | DataFrame | Path | str | None = None, time_limit: int | None = None, presets: str | None = None, hyperparameters: Dict[str | Type, Any] = None, hyperparameter_tune_kwargs: str | Dict | None = None, excluded_model_types: List[str] | None = None, num_val_windows: int = 1, val_step_size: int | None = None, refit_every_n_windows: int | None = 1, refit_full: bool = False, enable_ensemble: bool = True, skip_model_selection: bool = False, random_seed: int | None = 123, verbosity: int | None = None) TimeSeriesPredictor[source]¶
将概率预测模型拟合到给定的时间序列数据集。
- Parameters:
train_data (Union[TimeSeriesDataFrame, pd.DataFrame, Path, str]) –
训练数据,格式为
TimeSeriesDataFrame。长度小于等于
<= (num_val_windows + 1) * prediction_length的时间序列在训练过程中将被忽略。 详情请参见num_val_windows。如果在创建预测器时指定了
known_covariates_names,则train_data必须包含known_covariates_names中列出的列,并且协变量值必须与目标时间序列对齐。train_data中除target和known_covariates_names中列出的列之外的列将被 解释为past_covariates- 仅在过去的协变量。如果
train_data包含协变量或静态特征,它们将按以下方式解释:具有
int、bool和float类型的列将被解释为连续(实值)特征具有
object、str和category类型的列将被解释为分类特征具有其他类型的列将被忽略
为确保列类型被正确解释,请将其转换为上述类型之一。 例如,为确保具有
int类型的列“store_id”被解释为类别,请将其类型更改为category:data.static_features["store_id"] = data.static_features["store_id"].astype("category")
如果提供的数据是路径或 pandas.DataFrame,AutoGluon 将尝试自动将其转换为
TimeSeriesDataFrame。tuning_data (Union[TimeSeriesDataFrame, pd.DataFrame, Path, str], optional) –
用于模型选择和超参数调优的数据,而不是用于训练单个模型。也用于计算验证分数。请注意,每个时间序列的最后
prediction_length时间步长用于计算验证分数。如果提供了
tuning_data,则训练数据上的多窗口回测将被禁用,num_val_windows将被设置为0,并且refit_full将被设置为False。将此参数留空并让AutoGluon从
train_data自动生成验证集是一个很好的默认设置。如果在创建预测器时指定了
known_covariates_names,则tuning_data还必须包括known_covariates_names中列出的列,且协变量值与目标时间序列对齐。如果
train_data具有过去的协变量或静态特征,则tuning_data也必须包括它们(具有相同的列名和数据类型)。如果提供的数据是路径或pandas.DataFrame,AutoGluon将尝试自动将其转换为
TimeSeriesDataFrame。time_limit (int, optional) – 大约
fit()将运行的时间(以秒为单位的挂钟时间)。如果未指定,fit()将运行直到所有模型完成训练。presets (str, optional) –
用于
fit()中各种参数的可选预设配置。可以显著影响预测准确性、内存占用、训练模型的推理延迟以及返回预测器的各种其他属性。建议在熟悉AutoGluon之前指定预设,并避免指定大多数其他
fit()参数或模型超参数。例如,设置presets="high_quality"以获得高精度预测器,或设置presets="fast_training"以快速获得结果。在fit()中指定的任何用户参数将覆盖预设使用的值。可用的预设:
"fast_training": 拟合简单的统计模型(ETS,Theta,Naive,SeasonalNaive)+ 快速的基于树的模型RecursiveTabular和DirectTabular。这些模型训练速度快,但可能不太准确。"medium_quality": 上述所有模型 + 深度学习模型TemporalFusionTransformer+ Chronos-Bolt(小型)。默认设置,可以在合理的训练时间内产生良好的预测。"high_quality": AutoGluon中所有可用的机器学习模型 + 额外的统计模型(NPTS,AutoETS,DynamicOptimizedTheta)。比medium_quality更准确,但训练时间更长。"best_quality": 与"high_quality"相同的模型,但使用多次回测进行验证。通常比high_quality更好,但训练时间更长。
使用新的、更快的Chronos-Bolt模型可用的预设:
"bolt_{model_size}": 其中model size是tiny,mini,small,base之一。使用Chronos-Bolt预训练模型进行零样本预测。有关更多信息,请参阅ChronosModel的文档或访问Hugging Face。
使用原始的Chronos模型可用的预设:
"chronos_{model_size}": 其中model size是tiny,mini,small,base,large之一。使用Chronos预训练模型进行零样本预测。有关更多信息,请参阅ChronosModel的文档或访问Hugging Face。请注意,对于small,base和large模型大小,需要GPU。"chronos":"chronos_small"的别名。"chronos_ensemble": 构建一个包含季节性朴素模型、基于树的模型和深度学习模型的集成,具有快速推理和"chronos_small"。"chronos_large_ensemble": 构建一个包含季节性朴素模型、基于树的模型和深度学习模型的集成,具有快速推理和"chronos_large"。
这些预设的详细信息可以在
autogluon/timeseries/configs/presets_configs.py中找到。如果未提供,将使用用户提供的hyperparameters和hyperparameter_tune_kwargs值(默认为下面指定的默认值)。超参数 (str 或 dict, 可选) –
决定训练哪些模型以及每个模型使用的超参数。
如果传入的是字符串,将使用在
autogluon/timeseries/trainer/models/presets.py中定义的预设超参数配置。支持的值为"default","light"和"very_light"。如果提供的是字典,键是字符串或类型,指示要训练的模型。每个值本身是一个包含每个训练模型的超参数的字典,或此类字典的列表。任何未在此指定的超参数将被设置为默认值。例如:
predictor.fit( ... hyperparameters={ "DeepAR": {}, "Theta": [ {"decomposition_type": "additive"}, {"seasonal_period": 1}, ], } )
上述示例将训练三个模型:
DeepAR使用默认超参数Theta使用加法季节性分解(所有其他参数设置为默认值)Theta禁用季节性(所有其他参数设置为默认值)
可用模型及其超参数的完整列表在 预测时间序列 - 模型库 中提供。
每个模型的超参数可以是固定值(如上所示),也可以是执行超参数优化的搜索空间。只有在提供了
hyperparameter_tune_kwargs时(即使用超参数调优时),才应提供搜索空间。例如:from autogluon.common import space predictor.fit( ... hyperparameters={ "DeepAR": { "hidden_size": space.Int(20, 100), "dropout_rate": space.Categorical(0.1, 0.3), }, }, hyperparameter_tune_kwargs="auto", )
在上述示例中,将训练具有不同参数值“hidden_size”和“dropout_rate”的多个版本的 DeepAR 模型。
hyperparameter_tune_kwargs (str 或 dict, 可选) –
超参数调优策略和参数(例如,运行多少次HPO试验)。 如果为None,则不执行超参数调优。
如果类型是
str,则此参数指定一个预设值。 有效的预设值:”auto”:通过贝叶斯优化搜索在GluonTS支持的神经预测模型上进行HPO,并在其他模型上使用本地调度器进行随机搜索。
”random”:通过随机搜索进行HPO。
你也可以提供一个字典来指定搜索器和调度器。 有效的键:
”num_trials”:运行多少次HPO试验
- ”scheduler”:使用哪个调度器。有效值:
”local”:使用FIFO调度试验的本地调度器
- ”searcher”:使用哪个搜索算法。有效值:
”local_random”:使用“random”搜索器
”random”:执行随机搜索
”bayes”:通过Ray tune在GluonTS支持的模型上使用HyperOpt进行HPO。在其他模型上执行随机搜索。
”auto”:”bayes”的别名
当提供字典时,”scheduler”和”searcher”键是必需的。
示例:
predictor.fit( ... hyperparameter_tune_kwargs={ "num_trials": 5, "searcher": "auto", "scheduler": "local", }, )
excluded_model_types (List[str], optional) –
禁止的模型类型子集,以避免在
fit()期间进行训练,即使它们存在于hyperparameters中。 例如,以下代码将训练high_quality预设中包含的所有模型,除了DeepAR:predictor.fit( ..., presets="high_quality", excluded_model_types=["DeepAR"], )
num_val_windows (int, default = 1) –
在每个训练模型上对
train_data进行的回测次数,以估计验证性能。 如果提供了num_val_windows > 1,则可能会自动减少此值,以确保train_data中的大多数时间序列足够长,以进行所选次数的回测。增加此参数会使训练时间大致增加
num_val_windows // refit_every_n_windows倍。 有关详细信息,请参见refit_every_n_windows和val_step_size。例如,对于
prediction_length=2,num_val_windows=3和val_step_size=1,折叠如下:|-------------------| | x x x x x y y - - | | x x x x x x y y - | | x x x x x x x y y |
其中
x是训练时间步长,y是验证时间步长。如果提供了
tuning_data,则此参数无效。val_step_size (int 或 None, 默认 = None) –
连续验证窗口之间的步长。如果设置为
None,则默认为创建预测器时提供的prediction_length。如果提供了
tuning_data,则此参数无效。refit_every_n_windows (int 或 None, 默认值 = 1) –
在执行交叉验证时,每个模型将在每
refit_every_n_windows个验证窗口重新训练一次,其中验证窗口的数量由num_val_windows指定。请注意,在默认设置中,num_val_windows=1,此参数无效。如果设置为
None,模型将仅在第一个(最旧的)验证窗口中进行一次拟合。默认情况下,refit_every_n_windows=1,即所有模型将在每个验证窗口重新拟合。refit_full (bool, 默认 = False) – 如果为True,训练完成后,AutoGluon将尝试使用所有训练数据(包括最初保留用于验证的数据)重新训练所有模型。如果提供了
tuning_data,此参数无效。enable_ensemble (bool, default = True) – 如果为True,
TimeSeriesPredictor将在通过hyperparameters指定的模型之上拟合一个简单的加权集成。skip_model_selection (bool, default = False) – 如果为True,预测器将不会计算验证分数。例如,如果我们想将预测器用作单个预训练模型的包装器,这个参数就很有用。如果设置为True,则
hyperparameters字典必须只包含一个没有超参数搜索空间的模型,否则将引发异常。random_seed (int 或 None, 默认值 = 123) – 如果提供,将为所有模型固定随机数生成器的种子。这保证了大多数模型的可重复结果(除了在GPU上训练的模型,因为GPU操作的非确定性)。
verbosity (int, optional) – 如果提供,将覆盖创建
TimeSeriesPredictor时使用的verbosity值。有关更多详细信息,请参阅TimeSeriesPredictor的文档。