往期精彩内容:
时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客
VMD + CEEMDAN 二次分解,Transformer-BiGRU预测模型-CSDN博客
独家原创 | 基于TCN-SENet +BiGRU-GlobalAttention并行预测模型-CSDN博客
独家原创 | BiTCN-BiGRU-CrossAttention融合时空特征的高创新预测模型-CSDN博客
基于LSTM网络的多步预测模型_pytorch transformer-CSDN博客
基于1DCNN网络的多步预测模型-CSDN博客
高创新 | CEEMDAN + SSA-TCN-BiLSTM-Attention预测模型-CSDN博客
基于Transformer网络的多步预测模型-CSDN博客
独家原创 | 超强组合预测模型!-CSDN博客
基于TCN网络的多步预测模型-CSDN博客
基于CNN-LSTM网络的多步预测模型-CSDN博客
时空特征融合的BiTCN-Transformer并行预测模型-CSDN博客
CEEMDAN +组合预测模型(CNN-Transfromer + XGBoost)-CSDN博客
独家首发 | 基于多级注意力机制的并行预测模型-CSDN博客
多步预测模型大更新_基于多尺度 1d-cnn 和注意力机制的汇率多步预测研究-CSDN博客
独家原创 | CEEMDAN-CNN-GRU-GlobalAttention + XGBoost组合预测-CSDN博客
回归预测模型 | LSTM、CNN、Transformer、TCN、串行、并行模型集合-CSDN博客
基于TCN-BiLSTM-Attention模型的不同任务预测详解,探索同一个模型和数据集,在四种不同任务上的表现
● 环境框架:python 3.9 pytorch 1.8 及其以上版本均可运行
● 使用对象:论文需求、毕业设计需求者
● 代码保证:代码注释详细、即拿即可跑通。
● 输出结果:训练过程MSE损失曲线图、测试集模型分数-MAE-MSE-RMSE报告、预测可视化、向外预测(预测未来数据)
包括完整流程数据代码处理:
单步-多步、单变量-多变量预测数据集制作、数据加载、模型定义、参数设置、模型训练、模型测试、预测可视化、多步预测、模型评估
模型整体介绍:
1. 时空卷积网络(TCN):
TCN是一种卷积神经网络结构,用于捕捉时序数据中的时序关系。它由一系列的1D卷积层组成,每个卷积层都具有相同的卷积核大小和步长。TCN中的残差连接(Residual Connections)和空洞卷积(Dilated Convolutions)用于增加网络的感受野,以便更好地捕捉时序数据中的长期依赖关系。TCN可以同时处理多个时间步的输入,这使得模型能够在多个时间步上进行并行预测。
2.短期和长期依赖关系的捕捉:
-
TCN:通过卷积操作,能够有效捕捉时间序列中的短期依赖关系,同时由于其因果卷积和扩展卷积,能够处理较长的序列依赖关系。
-
BiLSTM:双向 LSTM 能够同时处理序列的前向和后向信息,捕捉序列中的长期和双向依赖关系。
-
并行计算:TCN:卷积操作可以并行处理,相较于 RNN 的串行计算,TCN 在处理长序列时具有计算效率上的优势。
3.信息选择和权重分配:
Attention 机制:通过注意力机制,模型能够为输入序列中的不同部分分配不同的权重,从而更好地关注对预测结果有重要贡献的时间步。这有助于提高模型的预测精度和解释性。
4.稳定性和长序列处理能力:
TCN:由于使用了残差连接和扩展卷积,TCN 在处理长序列时更稳定,能够避免梯度消失和梯度爆炸问题。结合了 TCN、BiLSTM 和 Attention 的模型具有强大的表达能力,能够处理复杂的时间序列数据,并且提高预测的准确性和鲁棒性。
配有代码、文件介绍:
电力变压器数据集的详细介绍可以参考下文:
电力变压器数据集介绍和预处理-CSDN博客
1.1 导入数据
1 单变量单步预测任务
1.1 任务描述
单变量单步预测,就是只有(用)一个变量 ,用已有的数据去预测未来的数据,每次预测一步
-
输入训练集 变量: 变量var-OT
-
对应y值标签为: 变量var-OT
1.2 单变量单步预测预处理
1.3 模型定义-基于TCN-BiLSTM-Attention的单变量单步预测
1.4 设置参数,训练模型
1.5 预测结果可视化
1.6 模型评估
1.7 加载模型进行预测
2 单变量多步预测任务
2.1 任务描述
单变量多步预测,就是只有(用)一个变量 ,用已有的数据去预测未来的数据,每次预测多步
-
输入数据的形状应该是 (batch_size, window_size, input_dim)
-
输出数据的形状应该是 (batch_size, num_steps, output_dim)
解释:
-
batch_size就是批次
-
input_dim 和 output_dim 就是对应输入维度,和输出维度(如果单变量预测任务的话,就是输入输出都为1维)
-
window_size 就是输入样本序列的长度
-
num_steps 是需要预测的步长(比如:用过去 12 个步长 ,预测未来 3 个步长)
2.2 单变量多步预测预处理
2.3 模型定义-基于TCN-BiLSTM-Attention的单变量多步预测
2.4 设置参数,训练模型
2.5 预测结果可视化
每步预测单独可视化:
2.6 模型评估
2.7 加载模型进行预测
3 多变量单步预测任务
3.1 任务描述
多变量单步预测,就是有(用)多个变量的数据去预测某个目标变量未来的数据,每次预测一步
-
输入训练集 变量: 所有特征变量(多个)
-
对应y值标签为: 目标变量var-OT
3.2 多变量单步预测预处理
3.3 模型定义、训练过程、评估、可视化、向外预测不再赘述
多变量单步预测效果明显优于单变量单步预测效果,考虑到其他特征带来对目标变量预测更多的信息,其预测性能更显著!
4 多变量多步预测任务
4.1 任务描述
多变量多步预测,就是有(用)多个变量的数据去预测某个目标变量未来的数据,每次预测多步
-
输入数据的形状应该是 (batch_size, window_size, input_dim)
-
输出数据的形状应该是 (batch_size, num_steps, output_dim)
解释:
-
batch_size就是批次
-
input_dim 和 output_dim 就是对应输入维度,和输出维度(如果多变量预测任务的话,就是输入多维,输出为1维)
-
window_size 就是输入样本序列的长度
-
num_steps 是需要预测的步长(比如:用过去 12 个步长 ,预测未来 3 个步长)
4.2 多变量多步预测预处理
4.3 模型定义、训练过程、评估、可视化、向外预测不再赘述
代码、数据如下:
对数据集和代码感兴趣的,可以关注最后一行
# 加载数据
import torch
from joblib import dump, load
import torch.utils.data as Data
import numpy as np
import pandas as pd
import torch
import torch.nn as nn
# 参数与配置
torch.manual_seed(100) # 设置随机种子,以使实验结果具有可重复性
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
#代码和数据集:https://mbd.pub/o/bread/ZpaWkp5q