关于Darts时序包中神经模型验证及参数设置的技术问询
Darts时序分析常见疑问解答
问题1:时序验证策略与epoch训练的兼容性
- 滚动时序、前向行走这类避免数据泄露的验证策略不会因默认100轮epoch训练失效。Darts中这些策略会先把时序数据划分为多个训练-验证折叠(fold),每个fold内,模型会在训练子集中完成100轮epoch的迭代优化,再在对应的验证子集上评估性能——全程严格遵循时序先后逻辑,不存在未来数据污染的问题。
- 并非只能采用保留数据集(hold-out)的方式。滚动/前向行走验证是数据划分策略,epoch训练是模型在训练数据上的迭代次数,二者属于不同层面的操作,可以结合使用,反而能更稳健地评估模型的时序泛化能力。
问题2:input_chunk_length与output_chunk_length的作用及设置建议
参数作用
input_chunk_length:指定模型用于生成预测的历史时序数据长度,即模型每次接收的输入序列长度,模型基于这段历史信息完成预测。output_chunk_length:指定模型单次可输出的连续预测序列长度,也就是模型一次能预测的最大时间窗口。
关于样本拆分的说明
当时序总长度为100,设置input_chunk_length=10、output_chunk_length=5时,数据会以滑动窗口方式生成训练样本:
- 第一个样本:输入为时序的第0-9个点,目标输出为第10-14个点
- 第二个样本:输入为时序的第1-10个点,目标输出为第11-15个点
- 以此类推,直到无法生成完整的输入-输出对为止。
并非将数据拆分为长度15的子序列作为样本,输入和输出是两段独立且有先后顺序的子序列。
设置建议
将output_chunk_length设为目标预测窗口时长是更有利的。训练时让模型直接学习预测对应长度的序列,能匹配实际预测需求,避免后续通过多次短预测拼接带来的误差累积。如果你的预测窗口存在变动可能,也可以将其设为最大的预测窗口长度,预留一定灵活性。
内容的提问来源于stack exchange,提问作者NatePhysics
相关产品推荐
相关产品推荐

