NeuralForecast v3.0.0 发布:时间序列预测的重大升级
NeuralForecast 是一个专注于时间序列预测的深度学习库,它提供了多种先进的神经网络模型用于时间序列预测任务。该项目旨在为研究人员和工程师提供一个高效、灵活且易于使用的工具集,用于构建和部署时间序列预测模型。
核心功能升级
时间序列处理增强
新版本引入了TimeXer功能,这是一个专门为时间序列数据设计的特征工程工具。它能够自动提取和构建时间相关特征,显著提升了模型对时间模式的捕捉能力。这一改进特别适合那些具有强烈季节性、周期性特征的时间序列数据。
损失函数全面优化
v3.0.0对损失函数系统进行了全面重构,实现了以下重要改进:
-
统一兼容性:现在所有损失函数都能兼容各种模型类型,包括单变量/多变量模型以及直接/递归预测模型。这种统一性大大简化了模型选择和实验过程。
-
分位数预测增强:DistributionLoss现在支持在预测时直接指定分位数,为所有DistributionLosses提供了便捷的分位数获取方式。这一特性对于风险管理和不确定性量化特别有价值。
-
混合模型改进:GMM、PMM和NBMM等混合损失函数现在支持学习权重,实现了加权混合分布输出。同时,这些混合损失也支持分位数预测功能。
-
稳定性提升:ISQF损失函数通过使用softplus保护替代绝对值操作,显著提高了数值稳定性。
模型架构革新
基础模型统一
所有模型现在都继承自BaseModel基类,这种统一架构带来了几个显著优势:
- 代码更加模块化和可维护
- 新模型开发更加规范化和简单
- 提供了统一的API接口,降低了学习成本
递归模型改进
递归模型现在需要显式指定input_size参数,这一改变使得模型配置更加明确。更重要的是,递归模型现在可以灵活选择递归预测或直接预测模式,为不同应用场景提供了更多选择。
值得注意的是,TCN和DRNN模型从递归模型类别调整为窗口模型类别,这一调整更准确地反映了它们的实际工作机制。
性能与稳定性提升
数值精度支持
新版本增加了对bfloat16浮点格式的支持,这一特性对于在特定硬件(如TPU)上训练大型模型特别有价值,可以在保持模型性能的同时减少内存占用。
预测质量改进
IQLoss现在能够产生单调的分位数预测,解决了之前版本中可能出现的分位数交叉问题。同时修复了MASE损失函数的实现问题,使其现在能够正常工作。
多变量预测优化
修复了多变量模型在预测时当序列数量大于批次大小时出现的错误,这一改进显著提升了大规模多变量预测任务的可靠性。
使用注意事项
不兼容变更
-
RMoK模型参数名称从revine_affine更正为revin_affine,这是对之前版本中拼写错误的修正。
-
由于模型架构的重大变更,无法将旧版本的递归模型直接加载到v3.0.0中使用。用户需要重新训练模型或进行适当的迁移工作。
-
递归模型现在必须显式指定input_size参数,这一变化需要用户在升级时注意调整模型配置。
文档与示例完善
新版本大幅更新了文档内容,包括:
- 详细的函数和类文档字符串
- 新增了修改默认优化器配置的示例,特别是展示了如何使用ReduceLROnPlateau调度器
- 改进了整体文档结构和可读性
这些改进使得新用户更容易上手,同时也为高级用户提供了更多定制化选项的指导。
总结
NeuralForecast v3.0.0是一个重大版本更新,带来了架构统一、功能增强和性能提升等多方面改进。特别是损失函数系统的全面重构和模型基类的统一,为未来的功能扩展奠定了坚实基础。虽然存在一些不兼容变更,但这些改变都是为了提供更稳定、更灵活的预测框架。对于时间序列预测任务,特别是需要处理复杂模式和不确定性的场景,这一版本提供了更加强大和可靠的工具集。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考