基于地平线的训练数据集¶
- 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)[源代码]¶
基类:
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*H 到 3*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 中最长序列的长度全局计算的。然后对于每个序列,从全局权重的末尾提取权重。这为所有序列提供了共同的时间加权。