时间序列预测器.拟合

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 中除 targetknown_covariates_names 中列出的列之外的列将被 解释为 past_covariates - 仅在过去的协变量。

    如果 train_data 包含协变量或静态特征,它们将按以下方式解释:

    • 具有 intboolfloat 类型的列将被解释为连续(实值)特征

    • 具有 objectstrcategory 类型的列将被解释为分类特征

    • 具有其他类型的列将被忽略

    为确保列类型被正确解释,请将其转换为上述类型之一。 例如,为确保具有 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)+ 快速的基于树的模型RecursiveTabularDirectTabular。这些模型训练速度快,但可能不太准确。

    • "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, baselarge模型大小,需要GPU。

    • "chronos": "chronos_small"的别名。

    • "chronos_ensemble": 构建一个包含季节性朴素模型、基于树的模型和深度学习模型的集成,具有快速推理和"chronos_small"

    • "chronos_large_ensemble": 构建一个包含季节性朴素模型、基于树的模型和深度学习模型的集成,具有快速推理和"chronos_large"

    这些预设的详细信息可以在autogluon/timeseries/configs/presets_configs.py中找到。如果未提供,将使用用户提供的hyperparametershyperparameter_tune_kwargs值(默认为下面指定的默认值)。

  • 超参数 (strdict, 可选) –

    决定训练哪些模型以及每个模型使用的超参数。

    如果传入的是字符串,将使用在 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 (strdict, 可选) –

    超参数调优策略和参数(例如,运行多少次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_windowsval_step_size

    例如,对于prediction_length=2num_val_windows=3val_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 (intNone, 默认 = None) –

    连续验证窗口之间的步长。如果设置为 None,则默认为创建预测器时提供的 prediction_length

    如果提供了 tuning_data,则此参数无效。

  • refit_every_n_windows (intNone, 默认值 = 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 (intNone, 默认值 = 123) – 如果提供,将为所有模型固定随机数生成器的种子。这保证了大多数模型的可重复结果(除了在GPU上训练的模型,因为GPU操作的非确定性)。

  • verbosity (int, optional) – 如果提供,将覆盖创建 TimeSeriesPredictor 时使用的 verbosity 值。有关更多详细信息,请参阅 TimeSeriesPredictor 的文档。