TimesNet 时间序列预测实战:3 步跑通 + 4 个必须调的参数
2026/9/13 3:29:14 网站建设 项目流程

TimesNet 时间序列预测实战:3 步跑通 + 4 个必须调的参数

【免费下载链接】Time-Series-LibraryA Library for Advanced Deep Time Series Models for General Time Series Analysis.项目地址: https://gitcode.com/GitHub_Trending/ti/Time-Series-Library

电网运维组要预测变压器未来 720 小时温度,线性模型已经接不住了。Time-Series-Library 里的 TimesNet 用 FFT 做周期检测,把一维时间序列重塑成二维矩阵,再交给 2D 卷积做多尺度特征提取,一条命令就能跑。本文带你 3 步从 clone 到出图,再讲清楚 4 个直接决定精度的参数。

跑通第一个时间序列预测:从 clone 到出图

先克隆仓库并安装依赖(地址在文末),然后对 ETT 数据集执行:

python -u run.py \ --task_name long_term_forecast \ --is_training 1 \ --root_path ./dataset/ETT-small/ \ --data_path ETTh1.csv \ --model TimesNet \ --data ETTh1 \ --seq_len 96 --pred_len 96 \ --e_layers 2 --top_k 5 \ --d_model 16 --d_ff 32 --itr 1

参数速览:

  • --task_name long_term_forecast:长期预测任务,同样支持插补、异常检测、分类
  • --root_path+--data_path:数据目录与文件名,ETTh1.csv 是 15 分钟粒度的电力数据
  • --seq_len 96:输入最近 96 个时间步
  • --pred_len 96:向未来预测 96 步
  • --e_layers 2:TimesBlock 堆叠数,即 2D 卷积深度
  • --top_k 5:只关注最强的前 5 个周期成分
  • --d_model / --d_ff:隐层宽度,小数据集用 16/32 就够

覆盖 ETT、ECL、Traffic 等多套真实数据

跑完控制台会打印 MAE、MSE 等评估指标,拿自己的曲线图对照即可判断效果。

读懂 2D 卷积与周期检测的实现

实现全在 models/TimesNet.py,核心两步。

第一步周期检测:FFT_for_Period对序列做 rfft,按幅值取 top_k 个最强频率分量,换算成周期 T/k。不用人工标注,模型自己找数据的节奏。

FFT 找周期,多尺度特征分解

第二步 2D 卷积:把一维序列按检测到的周期切成(周期数 × 周期长度)的二维矩阵,相当于把时间线按周期"折行"成一张表。随后两级 Inception 2D 卷积(多核宽度)跟进:核沿周期方向看周期内模式,沿周期数方向看周期间漂移。各周期结果按幅值权重加权和,再加残差连接。

1D 时间序列转 2D,周期内/周期间联合建模

为什么要折成二维?一维卷积只能看到时间邻域,第 1 个周期的模式与第 10 个周期的模式是割裂的。折成二维后,"周期内位置"和"周期序号"成为两个独立维度,同一个卷积核天然跨周期复用模式——这是多周期时间序列建模的关键。

时间序列预测 4 个参数调参指南

基线跑通后,精度主要看这 4 个:

  • --top_k(周期成分数):推荐 5。频谱峰值尖锐可降到 3–4;叠加周期多(如日+周)可升到 7
  • --seq_len(输入长度):推荐 96 起。要覆盖主周期的整数倍,周期长就扩到 336/720
  • --pred_len(预测步长):96–720。业务定多少就填多少,步长越长越依赖足够长的 seq_len
  • --e_layers(块数):推荐 2。出现过拟合降到 1;小数据不建议超过 2

两组常见场景配置,可直接替换上面命令:

  • 短期(M4 月度单变量):seq_len 96pred_len 28top_k 3e_layers 1d_model 32
  • 长期(ETTh1 多变量):seq_len 96pred_len 720top_k 5e_layers 2d_model 16

720 步预测值与真实值对照

它能做到什么,做不到什么

  • 多周期能力强:FFT 自动检测周期,省去人工标周期
  • 多尺度提取:多核 2D 卷积同时捕捉周期内波动与周期间趋势
  • 自带实例归一化,对非平稳数据相对稳

边界:

  • FFT 默认序列近似平稳,周期漂移或结构性突变的序列精度会掉
  • 每个块要循环 top_k 个周期各跑一遍 2D 卷积,序列很长且 top_k 调大时,训练时长明显增加

按场景选下一步

  • 想读核心实现:看 models/TimesNet.py,重点在FFT_for_PeriodTimesBlock,200 行内能读完
  • 想换数据集:抄 scripts/long_term_forecast/ETT_script/TimesNet_ETTh1.sh 的完整配置,改root_pathdata_path即可
  • 想改卷积核配置:看 layers/Conv_Blocks.py 里的Inception_Block_V1
git clone https://gitcode.com/GitHub_Trending/ti/Time-Series-Library

先跑起来,再谈调优。

【免费下载链接】Time-Series-LibraryA Library for Advanced Deep Time Series Models for General Time Series Analysis.项目地址: https://gitcode.com/GitHub_Trending/ti/Time-Series-Library

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询