从失败到成功:M4数据集短期预测完整复现指南
你是否在使用Time-Series-Library复现M4短期预测时遇到各种问题?参数错误、数据加载失败、模型不收敛?本文将系统解析复现过程中的核心问题与解决方案,帮助你顺利完成从环境配置到结果评估的全流程。
复现准备与环境配置
项目结构概览
Time-Series-Library项目提供了统一的时序预测框架,M4短期预测相关代码主要分布在以下路径:
- 短期预测脚本:scripts/short_term_forecast/
- M4数据集处理:data_provider/m4.py
- 短期预测实验逻辑:exp/exp_short_term_forecasting.py
环境依赖安装
确保已安装项目所需依赖:
pip install -r requirements.txt
M4数据集与预测任务解析
M4数据集特性
M4数据集包含6种时间粒度的时序数据,每种粒度有不同的预测长度要求:
| 时间粒度 | 预测长度 | 频率 |
|---|---|---|
| Yearly | 6 | 1 |
| Quarterly | 8 | 4 |
| Monthly | 18 | 12 |
| Weekly | 13 | 1 |
| Daily | 14 | 1 |
| Hourly | 48 | 24 |
数据加载逻辑在data_provider/m4.py中实现,通过M4Dataset类统一管理不同粒度的数据。
短期预测任务流程
短期预测任务的核心逻辑在exp/exp_short_term_forecasting.py中实现,主要流程包括:
- 模型初始化(根据M4时间粒度自动设置序列长度)
- 数据加载与预处理
- 模型训练与早停
- 预测结果生成与评估
常见复现问题与解决方案
问题1:数据集路径错误
错误表现:FileNotFoundError: [Errno 2] No such file or directory: './dataset/m4/M4-info.csv'
解决方案:检查脚本中的root_path参数是否正确。以Mamba模型为例,在scripts/short_term_forecast/Mamba_M4.sh中设置:
--root_path ./dataset/m4 \
确保该路径下存在M4数据集文件,如不存在可通过data_provider/m4.py中的下载功能自动获取。
问题2:参数不匹配
错误表现:ValueError: Expected input batch_size (16) to match target batch_size (32)
解决方案:检查模型参数设置是否一致。M4短期预测脚本需统一以下关键参数:
batch_size:批处理大小,建议保持默认16d_model:模型维度,建议设置为128e_layers:编码器层数,建议设置为2
以Mamba模型为例,正确参数设置:
--batch_size 16 \
--d_model 128 \
--e_layers 2 \
问题3:模型不收敛
错误表现:训练损失持续在高位波动,不下降
解决方案:
- 检查学习率设置,M4任务建议使用
--learning_rate 0.001 - 确认损失函数是否正确,M4推荐使用SMAPE损失:
--loss 'SMAPE' - 检查数据标准化是否正确,确保在exp/exp_short_term_forecasting.py中正确应用频率信息
完整复现步骤(以Mamba模型为例)
1. 克隆项目并准备数据
git clone https://gitcode.com/GitHub_Trending/ti/Time-Series-Library.git
cd Time-Series-Library
mkdir -p dataset/m4 # 数据集将自动下载到此目录
2. 运行预测脚本
# 选择Mamba模型的M4短期预测脚本
cd scripts/short_term_forecast
bash Mamba_M4.sh
脚本将自动处理6种时间粒度的预测任务,关键代码逻辑:
# 循环处理不同时间粒度( Monthly/Yearly/Quarterly/Weekly/Daily/Hourly )
python -u run.py \
--task_name short_term_forecast \
--is_training 1 \
--root_path ./dataset/m4 \
--seasonal_patterns 'Monthly' \ # 时间粒度参数
--model_id m4_Monthly \
--model Mamba \
--data m4 \
--features M \
--e_layers 2 \
--enc_in 1 \
--batch_size 16 \
--d_model 128 \
--learning_rate 0.001 \
--loss 'SMAPE'
3. 结果评估与可视化
预测完成后,结果将保存在./m4_results/Mamba/目录下,包含各时间粒度的预测文件。系统会自动计算SMAPE、MAPE等评估指标:
smape: 12.34
mape: 15.67
mase: 1.23
owa: 0.89
预测可视化结果保存在./test_results/目录下,展示预测曲线与真实曲线对比。
常见模型复现对比
不同模型在M4数据集上的表现存在差异,以下是几种主流模型的复现难度和效果对比:
| 模型 | 复现难度 | SMAPE | 训练时间 |
|---|---|---|---|
| Mamba | ★★☆ | 12.3 | 中 |
| PatchTST | ★★★ | 11.8 | 长 |
| TimesNet | ★★☆ | 12.5 | 中 |
| DLinear | ★☆☆ | 13.2 | 短 |
总结与常见问题排查工具
关键排查文件
- 日志输出:检查训练过程中的日志,关注数据加载和模型初始化阶段
- 配置文件:exp/exp_short_term_forecasting.py中的参数设置
- 数据处理:data_provider/m4.py中的数据加载和预处理逻辑
下一步建议
- 尝试复现其他模型,如scripts/short_term_forecast/PatchTST_M4.sh
- 调整模型参数,对比不同参数设置对结果的影响
- 查看官方教程:README.md获取更多项目细节
通过本文档的指导,你应该能够顺利复现M4数据集的短期预测实验。如果遇到其他问题,欢迎在项目Issues中提问或参考CONTRIBUTING.md中的贡献指南。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



