Índice
1. O que é previsão de série temporal?
2. Introdução à Rede Neural Recorrente (RNN)
3. Preparação e pré-processamento de dados
4. Construa um modelo de previsão do preço das ações
5. Treinamento e ajuste de modelo
7. Aplicações práticas de previsão de séries temporais
introdução
A previsão de dados de séries temporais sempre foi um desafio importante na ciência de dados e nas finanças. A previsão do preço das ações é uma das tarefas de alto nível que possui imenso valor para investidores e traders. Redes Neurais Recorrentes (RNN) em tecnologia de aprendizagem profunda têm bom desempenho na previsão de séries temporais.Este blog explorará em profundidade como usar a linguagem R e RNN para prever preços de ações.
1. O que é previsão de série temporal?
Uma série temporal é uma série de pontos de dados organizados em ordem temporal. A previsão de séries temporais visa prever valores futuros com base em observações passadas. Um exemplo clássico é uma série temporal de preços de ações, em que cada ponto de dados representa o preço das ações durante um período de tempo. Prever alterações nos preços das ações pode ajudar os investidores a tomar decisões, mas também é uma tarefa desafiadora porque os preços das ações são afetados por muitos fatores.
2. Introdução à Rede Neural Recorrente (RNN)
RNN é um modelo de aprendizado profundo adequado para dados sequenciais. Possui uma estrutura de loop interno e pode lidar com sequências de entrada de comprimento variável. RNN tem um bom desempenho na previsão de séries temporais porque é capaz de capturar as dependências temporais na sequência e ajuda a compreender tendências e padrões na sequência.
3. Preparação e pré-processamento de dados
Antes de iniciarmos a modelagem, precisamos preparar e pré-processar os dados da série temporal dos preços das ações. Isso inclui carregamento de dados, limpeza, normalização e outras etapas.
A seguir está um exemplo de preparação de dados e pré-processamento de código R:
# 安装并加载必要的R包
install.packages("quantmod")
library(quantmod)
# 下载股票价格数据
getSymbols("AAPL", from = "2000-01-01", to = "2022-01-01")
# 提取收盘价格数据
closing_prices <- Cl(AAPL)
# 归一化数据
min_price <- min(closing_prices)
max_price <- max(closing_prices)
normalized_prices <- (closing_prices - min_price) / (max_price - min_price)
4. Construa um modelo de previsão do preço das ações
A seguir, construiremos um modelo RNN para prever o preço normalizado das ações. A arquitetura de uma RNN geralmente inclui uma ou mais camadas recorrentes e uma camada de saída.
Aqui está um exemplo simplificado de modelo RNN:
# 安装并加载Keras包
install.packages("keras")
library(keras)
# 创建RNN模型
model <- keras_model_sequential() %>%
layer_lstm(units = 50, return_sequences = TRUE, input_shape = c(look_back, 1)) %>%
layer_lstm(units = 50) %>%
layer_dense(units = 1)
# 编译模型
model %>% compile(loss = "mean_squared_error", optimizer = "adam")
5. Treinamento e ajuste de modelo
O treinamento do modelo é uma etapa fundamental na previsão de séries temporais. Usaremos dados de treinamento para treinar o modelo e dados de validação para monitorar o desempenho do modelo. O processo de treinamento pode exigir várias rodadas de iteração e ajuste de parâmetros.
Aqui está um exemplo simples de treinamento de modelo:
# 分割数据集为训练集和验证集
train_size <- floor(0.67 * length(normalized_prices))
train_data <- normalized_prices[1:train_size]
test_data <- normalized_prices[(train_size + 1):length(normalized_prices)]
# 创建训练数据生成器
train_generator <- function(data, look_back) {
X <- Y <- numeric(0)
for (i in look_back:length(data)) {
X <- c(X, data[(i - look_back + 1):i])
Y <- c(Y, data[i + 1])
}
return(list(X = array(X, dim = c(length(X) / look_back, look_back, 1)), Y = Y))
}
# 训练模型
look_back <- 10
train_gen <- train_generator(train_data, look_back)
model %>% fit(train_gen$X, train_gen$Y, epochs = 100, batch_size = 1, verbose = 2)
6. Previsão e Avaliação
Após concluir o treinamento do modelo, podemos usá-lo para fazer previsões e avaliar seu desempenho. Normalmente, aplicamos o modelo ao conjunto de dados de teste e calculamos a diferença entre os valores previstos e reais.
Aqui está um exemplo simples de previsão e avaliação:
# 创建测试数据生成器
test_gen <- train_generator(test_data, look_back)
# 进行预测
predicted_prices <- model %>% predict(test_gen$X)
# 反归一化预测值
predicted_prices <- predicted_prices * (max_price - min_price) + min_price
# 计算均方根误差(RMSE)
rmse <- sqrt(mean((predicted_prices - test_data[(look_back + 1):length(test_data)])^2))
7. Aplicações práticas de previsão de séries temporais
A previsão de séries temporais é amplamente utilizada em finanças, previsão do tempo, previsão de vendas, gerenciamento de tráfego e outras áreas. A previsão do preço das ações é um dos cenários de aplicação importantes, que pode ajudar os investidores a formular estratégias de negociação e gestão de risco.