Por Derrick Mwiti, Data Analyst

Image

Editor’s note: Este tutorial ilustra como começar a prever séries temporais com modelos LSTM. Os dados da bolsa de valores são uma ótima escolha para isso, pois são bastante regulares e estão amplamente disponíveis para todos. Por favor, não tome isto como um conselho financeiro ou use-o para fazer qualquer negociação própria.

Neste tutorial, vamos construir um modelo de aprendizagem profunda Python que irá prever o comportamento futuro dos preços das acções. Nós assumimos que o leitor está familiarizado com os conceitos de aprendizagem profunda em Python, especialmente Memória Longa de Curto Prazo.

Embora prever o preço real de uma ação seja uma subida, podemos construir um modelo que irá prever se o preço irá subir ou descer. Os dados e o caderno usado para este tutorial podem ser encontrados aqui. É importante notar que existem sempre outros factores que afectam os preços das acções, tais como a atmosfera política e o mercado. No entanto, não vamos focar nesses factores para este tutorial.

Introdução

LSTMs são muito poderosos em problemas de previsão de sequência porque são capazes de armazenar informação passada. Isto é importante no nosso caso porque o preço anterior de uma ação é crucial na previsão de seu preço futuro.

Vamos começar importando NumPy para computação científica, Matplotlib para plotagem de gráficos, e Pandas para auxiliar no carregamento e manipulação de nossos conjuntos de dados.

Loading the Dataset

O próximo passo é carregar em nosso conjunto de dados de treinamento e selecionar as colunas Open e High que usaremos em nossa modelagem.

Verificamos o cabeçalho do nosso conjunto de dados para nos dar um vislumbre do tipo de conjunto de dados com que estamos a trabalhar.

A coluna Open é o preço inicial enquanto que a coluna Close é o preço final de uma ação em um determinado dia de negociação. As colunas High e Low representam os preços mais altos e mais baixos para um determinado dia.

Escalonamento de características

A partir da experiência anterior com modelos de aprendizagem profunda, sabemos que temos de escalar os nossos dados para um desempenho óptimo. No nosso caso, vamos usar o Scikit- Learn’s MinMaxScaler e escalar nosso conjunto de dados para números entre zero e um.

Creating Data with Timesteps

LSTMs esperam que nossos dados estejam em um formato específico, geralmente um array 3D. Nós começamos criando dados em 60 faixas de tempo e convertendo-os em um array usando NumPy. Em seguida, convertemos os dados em um array de dimensão 3D com X_train amostras, 60 timestamps, e um recurso em cada etapa.

Construindo o LSTM

Para construir o LSTM, precisamos importar um par de módulos do Keras:

  1. Sequential para inicializar a rede neural
  2. Dense para adicionar uma camada de rede neural densamente ligada
  3. LSTM para adicionar a camada de Memória de Curto Prazo Longo
  4. Dropout para adicionar camadas que evitam o sobreajuste

Adicionamos a camada LSTM e mais tarde adicionamos algumas Dropout camadas para evitar o sobreajuste. Adicionamos a camada LSTM com os seguintes argumentos:

  1. 50 unidades que é a dimensionalidade do espaço de saída
  2. return_sequences=True que determina se devemos retornar a última saída na seqüência de saída, ou a seqüência completa
  3. input_shape como a forma do nosso conjunto de treinamento.

Ao definir as Dropout camadas, especificamos 0,2, o que significa que 20% das camadas serão descartadas. Em seguida, adicionamos a camada Dense que especifica a saída de 1 unidade. Depois disso, compilamos nosso modelo usando o popular otimizador adam e definimos a perda como a mean_squarred_error. Isto irá computar a média dos erros ao quadrado. Em seguida, nós ajustamos o modelo para rodar em 100 épocas com um tamanho de lote de 32. Tenha em mente que, dependendo das especificações do seu computador, isso pode levar alguns minutos para terminar de executar.

Previsão de Estoque Futuro usando o Test Set

Primeiro precisamos importar o conjunto de teste que usaremos para fazer nossas previsões.

A fim de prever os preços futuros das ações precisamos fazer algumas coisas depois de carregar no conjunto de teste:

  1. Fundir o conjunto de treinamento e o conjunto de teste no eixo 0.
  2. Definir o passo do tempo como 60 (como visto anteriormente)
  3. Utilizar MinMaxScaler para transformar o novo conjunto de dados
  4. Reforma o conjunto de dados como feito anteriormente

Depois de fazer as previsões usamos inverse_transform para recuperar os preços das acções em formato legível normal.

Plotando os Resultados

Finalmente, usamos o Matplotlib para visualizar o resultado do preço previsto da ação e o preço real da ação.

Do gráfico podemos ver que o preço real da ação subiu enquanto nosso modelo também previu que o preço da ação subirá. Isto mostra claramente como os LSTMs são poderosos para analisar séries temporais e dados sequenciais.

Conclusão

Existem um par de outras técnicas de previsão de preços de ações como médias móveis, regressão linear, K-Nearest Neighbours, ARIMA e Prophet. Estas são técnicas que se pode testar por si só e comparar o seu desempenho com o Keras LSTM. Se você deseja aprender mais sobre Keras e aprender mais profundamente você pode encontrar meus artigos sobre isso aqui e aqui.

Discutam este post em Reddit e Hacker News.

Bio: Derrick Mwiti é um analista de dados, um escritor e um mentor. Ele é guiado por entregar grandes resultados em cada tarefa, e é um mentor na Lapid Leaders Africa.

Original. Reportado com permissão.

Related:

  • Introduction to Deep Learning with Keras
  • Introduction to PyTorch for Deep Learning
  • The Keras 4 Step Workflow

Articles

Deixe uma resposta

O seu endereço de email não será publicado.