首页
/ 5大任务全解析:2025年时序预测模型TOP3排行榜及实战指南

5大任务全解析:2025年时序预测模型TOP3排行榜及实战指南

2026-02-04 04:05:51作者:龚格成

你是否还在为选择合适的时序分析模型而烦恼?面对数十种深度学习模型不知如何下手?本文将带你一文读懂当前最先进的时序分析模型排行榜,并通过实战案例教你如何快速上手这些模型。读完本文,你将能够:

  • 了解5大时序任务的SOTA模型排名及适用场景
  • 掌握TimesNet等顶尖模型的核心原理与实现
  • 使用Time-Series-Library快速复现论文实验结果
  • 根据实际需求选择最适合的时序模型

时序分析模型全景图

Time-Series-Library(TSLib)是一个专注于深度时序分析的开源库,涵盖五大主流任务:长短期预测、缺失值填补、异常检测和分类。该库提供了统一的代码框架,方便研究者评估先进模型或开发新模型。

数据集概览

五大任务SOTA模型排行榜

截至2024年3月,五大时序任务的前三甲模型如下:

模型排名 长期预测(Look-Back-96) 长期预测(Look-Back-Searching) 短期预测 缺失值填补 分类 异常检测
🥇 1st TimeXer TimeMixer TimesNet TimesNet TimesNet TimesNet
🥈 2nd iTransformer PatchTST Non-stationary Transformer Non-stationary Transformer Non-stationary Transformer FEDformer
🥉 3rd TimeMixer DLinear FEDformer Autoformer Informer Autoformer

官方排行榜README.md

冠军模型深度解析:TimesNet

TimesNet是当前综合性能最佳的时序分析模型,在预测、填补、异常检测和分类四大任务中均排名第一。其核心创新在于TimesBlock结构,通过傅里叶变换提取序列的周期特征,并使用2D卷积捕获周期内和周期间的依赖关系。

TimesBlock工作原理

TimesBlock的核心步骤包括:

  1. 周期检测:通过FFT分析提取序列的主要周期成分
  2. 序列重塑:将时序数据转换为2D周期矩阵
  3. 2D卷积:捕获周期内和周期间的依赖关系
  4. 自适应聚合:加权聚合多个周期的特征

FFT周期检测

class TimesBlock(nn.Module):
    def __init__(self, configs):
        super(TimesBlock, self).__init__()
        self.seq_len = configs.seq_len
        self.pred_len = configs.pred_len
        self.k = configs.top_k  # 提取的主要周期数
        
        # 2D卷积块
        self.conv = nn.Sequential(
            Inception_Block_V1(configs.d_model, configs.d_ff, num_kernels=configs.num_kernels),
            nn.GELU(),
            Inception_Block_V1(configs.d_ff, configs.d_model, num_kernels=configs.num_kernels)
        )
    
    def forward(self, x):
        B, T, N = x.size()
        # 提取周期特征
        period_list, period_weight = FFT_for_Period(x, self.k)
        
        res = []
        for i in range(self.k):
            period = period_list[i]
            # 序列填充以适应周期长度
            if (self.seq_len + self.pred_len) % period != 0:
                length = ((self.seq_len + self.pred_len) // period + 1) * period
                padding = torch.zeros([x.shape[0], (length - (self.seq_len + self.pred_len)), x.shape[2]]).to(x.device)
                out = torch.cat([x, padding], dim=1)
            else:
                length = self.seq_len + self.pred_len
                out = x
            
            # 重塑为2D周期矩阵
            out = out.reshape(B, length // period, period, N).permute(0, 3, 1, 2).contiguous()
            
            # 2D卷积操作
            out = self.conv(out)
            
            # 重塑回原始形状
            out = out.permute(0, 2, 3, 1).reshape(B, -1, N)
            res.append(out[:, :(self.seq_len + self.pred_len), :])
        
        # 加权聚合多个周期特征
        res = torch.stack(res, dim=-1)
        period_weight = F.softmax(period_weight, dim=1).unsqueeze(1).unsqueeze(1).repeat(1, T, N, 1)
        res = torch.sum(res * period_weight, -1)
        
        # 残差连接
        res = res + x
        return res

多任务统一框架

TimesNet通过统一的架构支持多种时序任务,只需修改输出层和损失函数:

  • 预测任务:添加预测线性层和投影层
  • 填补任务:使用掩码处理缺失值
  • 异常检测:重构输入序列并计算重构误差
  • 分类任务:添加分类头和softmax层

详细实现:tutorial/TimesNet_tutorial.ipynb

实战指南:快速上手TimesNet

环境准备

  1. 克隆仓库:
git clone https://gitcode.com/GitHub_Trending/ti/Time-Series-Library
cd Time-Series-Library
  1. 安装依赖:
pip install -r requirements.txt

数据准备

Google Drive百度网盘下载预处理数据集,放置在./dataset目录下。

训练模型

TSLib提供了所有基准测试的实验脚本,位于./scripts/目录下。以下是使用TimesNet进行长期预测的示例:

# 长期预测
bash ./scripts/long_term_forecast/ETT_script/TimesNet_ETTh1.sh
# 短期预测
bash ./scripts/short_term_forecast/TimesNet_M4.sh
# 缺失值填补
bash ./scripts/imputation/ETT_script/TimesNet_ETTh1.sh
# 异常检测
bash ./scripts/anomaly_detection/PSM/TimesNet.sh
# 分类
bash ./scripts/classification/TimesNet.sh

脚本示例scripts/long_term_forecast/ETT_script/TimesNet_ETTh1.sh

关键参数说明

以长期预测脚本为例,关键参数包括:

# 任务设置
--task_name long_term_forecast  # 任务类型
--is_training 1                 # 训练模式
--model TimesNet                # 模型名称

# 数据设置
--root_path ./dataset/ETT-small/ # 数据根目录
--data_path ETTh1.csv           # 数据文件名
--data ETTh1                    # 数据集名称
--features M                    # 特征类型(M:多变量预测多变量)

# 序列长度设置
--seq_len 96                    # 输入序列长度
--label_len 48                  # 标签序列长度
--pred_len 96                   # 预测序列长度

# 模型参数
--e_layers 2                    # 编码器层数
--d_model 16                    # 嵌入维度
--d_ff 32                       # 前馈网络维度
--top_k 5                       # 提取的主要周期数

模型选择指南

根据不同任务和数据特点,选择合适的模型:

按任务选择

  • 长期预测:优先选择TimeXer、iTransformer、TimeMixer
  • 短期预测:推荐TimesNet、Non-stationary Transformer、FEDformer
  • 缺失值填补:TimesNet、Non-stationary Transformer、Autoformer表现最佳
  • 异常检测:TimesNet、FEDformer、Autoformer效果较好
  • 分类任务:TimesNet、Non-stationary Transformer、Informer性能领先

按数据特点选择

  • 高维数据:优先选择线性模型如DLinear、LightTS
  • 长周期数据:推荐使用TimesNet、FEDformer(傅里叶变换)
  • 非平稳数据:Non-stationary Transformer、Koopa更有优势
  • 实时性要求高:Mamba、TSMixer等高效模型

扩展与定制

TSLib设计灵活,方便添加新模型。要开发自己的模型,只需:

  1. ./models/目录下添加模型文件,参考models/Transformer.py
  2. ./exp/exp_basic.pyExp_Basic.model_dict中注册新模型
  3. ./scripts/目录下创建相应的实验脚本

模型开发指南tutorial/TimesNet_tutorial.ipynb

总结与展望

Time-Series-Library为时序分析研究者提供了全面的模型库和统一的实验框架。通过本文介绍的排行榜和实战指南,你可以快速找到适合自己任务的模型并上手使用。

随着深度学习的发展,时序模型正朝着更高效、更鲁棒的方向演进。TSLib将持续更新最新模型和基准测试结果,助力时序分析领域的研究与应用。

如果你有优秀的模型想要加入排行榜,欢迎提交PR或联系维护团队。

项目地址:GitHub_Trending/ti/Time-Series-Library

点赞收藏本文,关注项目更新,不错过最新的时序模型进展!

登录后查看全文
热门项目推荐
相关项目推荐