基于时间范围的训练数据集

class darts.utils.data.horizon_based_dataset.HorizonBasedDataset(target_series, covariates=None, output_chunk_length=12, lh=(1, 3), lookback=3, use_static_covariates=True, sample_weight=None)[source]

基类: PastCovariatesTrainingDataset

一个时序数据集,包含 (过去目标、过去协变量、静态协变量、样本权重、未来目标) 数组组成的元组,其方式受到 N-BEATS 在 M4 数据集上训练的启发:https://arxiv.org/abs/1905.10437

“过去”序列的长度为 lookback * output_chunk_length,“未来”序列的长度为 output_chunk_length

给定模型的预测范围 output_chunk_length,该数据集将按如下方式计算“过去/未来”分割:首先,在时间序列结束前最后的 (min_lh * output_chunk_length, max_lh * output_chunk_length) 点范围内选择一个“预测点”。“未来”由随后的 output_chunk_length 个点组成,“过去”由前面的 lookback * output_chunk_length 个点组成。

提供的序列中的所有序列必须足够长;即长度至少为 (lookback + max_lh) * output_chunk_length,并且 min_lh 必须至少为 1(以便目标长度恰好为 1 * output_chunk_length)。目标和协变量时序通过其时间索引进行联合切片以对齐。

采样在时序数量和每个序列的样本数量上都是均匀的;即,该数据集的第 i 个样本有 1/(N*M) 的机会来自序列中 N 个时序中的任何一个时序的 M 个样本中的任何一个。

参数
  • target_series (Union[TimeSeries, Sequence[TimeSeries]]) – 一个或一个序列的目标 TimeSeries

  • covariates (Union[TimeSeries, Sequence[TimeSeries], None]) – 可选,一个或一个序列包含过去观测协变量的 TimeSeries。如果设置此参数,提供的序列必须与 target_series 的长度相同。此外,序列中的所有协变量必须具有足够大的时间跨度以包含所有必需的切片。目标和协变量的联合切片依赖于两个序列的时间轴。

  • output_chunk_length (int) – 模型输出的“输出”序列的长度

  • lh (tuple[int, int]) – 预测点的 (min_lh, max_lh) 区间,从序列末尾开始计算。例如,(1, 3) 将在序列结束前 1*H3*H 点之间均匀选择预测点。要求 min_lh >= 1

  • lookback (int) – 发射的输入和输出分割中输入长度的整数区间,表示为 output_chunk_length 的倍数。例如,lookback=3 将发射长度为 3 * output_chunk_length 的“输入”。

  • use_static_covariates (bool) – 是否使用/包含输入序列中的静态协变量数据。

  • sample_weight (Union[TimeSeries, Sequence[TimeSeries], str, None]) – 可选,应用于目标 series 标签的一些样本权重。它们按观测、按标签(output_chunk_length 中的每个步骤)和按分量应用。如果是系列或系列序列,则使用这些权重。如果权重系列只有一个分量/列,则权重全局应用于 series 中的所有分量。否则,对于分量特定权重,分量数量必须与 series 的分量数量匹配。如果是字符串,则使用内置权重函数生成权重。可用选项是 “linear”(线性)或 “exponential”(指数)衰减 - 过去越远,权重越低。权重根据 series 中最长序列的长度进行全局计算。然后对于每个序列,权重从全局权重的末尾提取。这为所有序列提供了共同的时间加权。