AI 大模型之 深度学习 时间序列 LSTM/Transformer 时序建模 实践

AI人工智能阿木 发布于 2025-07-12 18 次阅读


深度学习:时间序列(LSTM/Transformer 时序建模)实践

时间序列分析是统计学和机器学习中的一个重要领域,它涉及对随时间变化的数据进行建模和分析。在金融、气象、生物信息学等领域,时间序列数据无处不在。随着深度学习技术的发展,LSTM(长短期记忆网络)和Transformer模型在时间序列预测任务中表现出色。本文将围绕这一主题,通过实践代码展示如何使用LSTM和Transformer模型进行时间序列建模。

环境准备

在开始实践之前,我们需要准备以下环境:

- Python 3.x

- TensorFlow 2.x 或 PyTorch

- NumPy

- Pandas

- Matplotlib

确保你已经安装了上述库,如果没有,可以使用以下命令进行安装:

bash

pip install tensorflow numpy pandas matplotlib


数据准备

为了演示,我们将使用一个简单的股票价格时间序列数据集。以下是如何加载数据并预处理它的示例代码:

python

import pandas as pd


import numpy as np

加载数据


data = pd.read_csv('stock_prices.csv', index_col='Date', parse_dates=True)

显示数据的前几行


print(data.head())

数据预处理


def preprocess_data(data, window_size):


X, y = [], []


for i in range(len(data) - window_size):


X.append(data[i:(i + window_size)])


y.append(data[i + window_size])


return np.array(X), np.array(y)

window_size = 5


X, y = preprocess_data(data['Close'], window_size)


LSTM模型实践

LSTM是一种特殊的循环神经网络(RNN),它能够学习长期依赖关系。以下是一个使用TensorFlow构建LSTM模型的示例:

python

import tensorflow as tf


from tensorflow.keras.models import Sequential


from tensorflow.keras.layers import LSTM, Dense

构建LSTM模型


model = Sequential()


model.add(LSTM(50, return_sequences=True, input_shape=(window_size, 1)))


model.add(LSTM(50))


model.add(Dense(1))

编译模型


model.compile(optimizer='adam', loss='mean_squared_error')

训练模型


model.fit(X, y, epochs=100, batch_size=1, verbose=2)


Transformer模型实践

Transformer模型是一种基于自注意力机制的深度神经网络架构,它在处理序列数据时表现出色。以下是一个使用PyTorch构建Transformer模型的示例:

python

import torch


import torch.nn as nn


from torch.utils.data import DataLoader, TensorDataset

定义Transformer模型


class TransformerModel(nn.Module):


def __init__(self, input_dim, d_model, nhead, num_encoder_layers, num_decoder_layers):


super(TransformerModel, self).__init__()


self.transformer = nn.Transformer(d_model, nhead, num_encoder_layers, num_decoder_layers)


self.d_model = d_model


self.fc_out = nn.Linear(d_model, 1)

def forward(self, src):


output = self.transformer(src, src)


return self.fc_out(output)

参数设置


input_dim = window_size


d_model = 512


nhead = 8


num_encoder_layers = 6


num_decoder_layers = 6

实例化模型


model = TransformerModel(input_dim, d_model, nhead, num_encoder_layers, num_decoder_layers)

训练模型


criterion = nn.MSELoss()


optimizer = torch.optim.Adam(model.parameters(), lr=0.001)

for epoch in range(100):


for src in DataLoader(X, batch_size=1):


optimizer.zero_grad()


output = model(src)


loss = criterion(output, y)


loss.backward()


optimizer.step()


结果分析

在训练完成后,我们可以使用模型对时间序列数据进行预测,并分析预测结果。以下是如何使用LSTM和Transformer模型进行预测的示例代码:

python

使用LSTM模型进行预测


predicted_prices = model.predict(X)

使用Transformer模型进行预测


predicted_prices = model(src)

绘制预测结果


import matplotlib.pyplot as plt

plt.figure(figsize=(10, 5))


plt.plot(data.index, data['Close'], label='Actual')


plt.plot(data.index[-len(predicted_prices):], predicted_prices, label='Predicted')


plt.title('Stock Price Prediction')


plt.xlabel('Date')


plt.ylabel('Price')


plt.legend()


plt.show()


结论

本文通过实践代码展示了如何使用LSTM和Transformer模型进行时间序列建模。LSTM和Transformer模型在处理时间序列数据时表现出色,能够捕捉到长期依赖关系。在实际应用中,可以根据具体任务和数据特点选择合适的模型和参数。随着深度学习技术的不断发展,相信会有更多高效的时间序列建模方法出现。