• Nenhum resultado encontrado

5.2 Aprendizado de Máquina

5.2.2 Modelo de aprendizado supervisionado utilizando RNA

A necessidade de modelos de previsão mais complexos e com uma maior precisão, incentivou o desenvolvimento de diferentes técnicas e abordagens mais complexas, baseadas na capacidade computacional e em modelos matemáticos mais complexos, permitindo um melhor desempenho em casos complexos de previsão.

Dentre os métodos de previsão de séries temporais estão as RNA, com suas diferentes estruturas e topologias. Este tipo de modelos de previsão possui relações não lineares de elevada complexidade entre os dados de entrada e de saída (HYNDMAN; ATHANASOPOULOS, 2018).

Para o desenvolvimento de qualquer modelo de previsão de séries temporais baseado em RNA é importante seguir as etapas descritas na Figura 28. Estas seis etapas permitem a obtenção de uma Rede Neural de qualquer topologia, através das relações entre os dados de entrada e saída fornecidos.

Figura 28 – Procedimento proposto para obter um sistema de previsão baseado em Redes Neurais.

Fonte: Elaborado pelo Autor. Organização dos dados

como um problema de aprendizado supervisionado

Padronização dos

dados Validação Cruzada

Seleção de Atributos Escolha do Modelo Treinamento do modelo

Implementação do modelo obtido

Organização dos dados para o aprendizado

Para a previsão de séries temporais, foram utilizadas as Redes Neurais como um algoritmo de regressão. Sendo um modelo de aprendizado supervisionado é indispensável conhecer as entradas e as saídas do modelo, pois o objetivo da Rede Neural será a aproximação da função que mapeia a informação fornecida através do banco de dados. No caso de uma representação através de séries temporais, a organização dos dados segue a disposição apresentada na Tabela 1.

Tabela 1 – Disposição da série temporal como um problema de regressão. Entrada do modelo Saída do modelo

𝒚𝒕−𝒂 ⋯ 𝒚𝒕−𝟐 𝒚𝒕−𝟏 𝒚𝒕

𝒚𝒕−𝒂+𝟏 ⋯ 𝒚𝒕−𝟏 𝒚𝒕 𝒚𝒕+𝟏

𝒚𝒕−𝒂+𝒏 ⋯ 𝒚𝒕−𝟐+𝐧 𝒚𝒕−𝟏+𝐧 𝒚𝒕+𝒏 Fonte: Elaborado pelo Autor.

Nesta tabela vemos que a entrada do modelo são os dados históricos da série temporal ou das séries temporais de interesse, onde são selecionados valores que variam desde o instante 𝑡 − 𝑎 + 𝑛 até 𝑡 − 1 + 𝑛, onde a constante 𝑎 indica o número de dados históricos de interesse. A saída do modelo será o valor presente no instante de tempo 𝑡 até o instante de tempo 𝑡 + 𝑛, associado ao número de amostras correspondente ao número de filas (n) do banco de dados.

Seguindo a distribuição proposta nesta tabela podemos observar que cada fila da tabela corresponderá a um dado de treinamento para um algoritmo de aprendizado supervisionado. É importante ressaltar que o desempenho das Redes Neurais nesta tarefa dependerá da qualidade e quantidade dos dados disponíveis, considerando que este modelo tentará fazer um mapeamento das entradas e saídas do modelo, aproximando os mesmos a uma função correlacionada a estes dados.

Dando continuidade as etapas descritas na Figura 28, a próxima etapa, descrita a seguir, é a padronização dos dados, tópico que já foi discutido anteriormente no capítulo de Ciência e Análise de Dados.

Validação Cruzada

A qualidade de um modelo está restringida à natureza, qualidade e quantidade dos dados disponíveis para o aprendizado. A complexidade dos modelos matemáticos e o nível de sobreajuste (overfitting) do modelo são fatores considerados como determinantes para a análise. Os fatores descritos são fatores fortemente correlacionados, considerando que em função da quantidade e qualidade dos dados, maior a complexidade do modelo necessário, e o sobreajuste deste modelo poderá ser bem maior. Entretanto, caso o modelo apresente um sobreajuste muito grande, o mesmo perderá sua capacidade de generalização ou de predizer valores desconhecidos.

A técnica da validação cruzada é utilizada para reduzir o sobreajuste, melhorando assim a capacidade de generalização dos modelos de aprendizado supervisionado. Esta técnica separa os dados disponíveis em diferentes conjuntos, para assim descobrir a capacidade de generalização do modelo através de seu desempenho em relação a um conjunto de dados desconhecidos.

Para atingir o objetivo da validação cruzada é necessário a separação dos dados em diferentes conjuntos, mutuamente disjuntos. Geralmente podemos separar estes dados em três conjuntos de dados que contemplem os objetivos definidos a seguir:

1) Treinamento: são os dados utilizados para o ajuste ou treinamento do modelo.

2) Validação: não é utilizado durante o treinamento, sendo utilizado para o ajuste dos hiper- parâmetros ou constantes previamente selecionadas e requeridas no início do processo de treinamento do modelo.

3) Teste: é o conjunto de dados nunca vistos pelo modelo, e que permitem uma avaliação do desempenho do modelo diante de situação desconhecida.

Dentre as principais metodologias utilizadas para a validação cruzada podemos destacar os métodos holdout, k-folds e leave-one-out. O método holdout é amplamente conhecido por sua simplicidade de implementação e utilização.

O método holdout tenta separar o banco de dados, com um número conhecido de amostras em três conjuntos mutuamente disjuntos, treinamento, validação e teste (REITERMANOVÁ, 2010), onde geralmente os itens de cada conjunto são selecionados de forma aleatória, e o tamanho de cada conjunto é escolhido de forma arbitrária, frequentemente o maior conjunto de dados utilizados é o de treinamento (70%), seguido pelo conjunto de dados de validação (20%) e de teste (10%).

A aplicação da validação cruzada para séries temporais apresenta uma maior complexidade em relação aos outros tipos de dados pelos seguintes motivos:

• Dependência temporal: é uma característica inerente das séries temporais, pois os dados apresentam uma ordem cronológica, geralmente associada com eventos ou outras caraterísticas; e

• Escolha arbitrária dos conjuntos de dados: pode ser considerado um problema, pois a ordem dos dados neste caso é fortemente relevante, e os mesmos não deverão ser escolhidos aleatoriamente, permitindo assim trabalhar com trechos inteiros de dados, que podem ser divididos em subtrechos, utilizando uma validação cruzada aninhada, dependendo das necessidades do modelo.

Neste trabalho para a previsão de séries temporais a validação cruzada será utilizada o método holdout, respeitando a dependência temporal do banco de dados, sem escolher aleatoriamente os dados na formação dos conjuntos de treinamento, validação e teste, mantendo a forma mais direta dos dados (Figura 29).

Figura 29 – Validação Cruzada para séries temporais utilizando o método holdout.

Fonte: Elaborado pelo Autor.

A Figura 29, apresenta graficamente a técnica de validação cruzada utilizada no presente trabalho, onde a somatória dos três conjuntos de dados corresponde ao total do banco de dados. Em trabalhos futuros pretende-se utilizar o método k-folds que permite uma melhor generalização do modelo de previsão.

Seleção de Atributos

O projeto de um modelo de aprendizado supervisionado, seja de regressão ou classificação, está sempre baseado na escolha de um conjunto de dados e na definição dos parâmetros de entrada e saída do sistema.

A complexidade do modelo aumenta em função do número de parâmetros de entrada, e consequentemente é imprescindível a redução do número de atributos para reduzir a complexidade computacional do modelo, permitindo assim um melhor entendimento e interpretação do modelo utilizado.

Ao mesmo tempo, é possível perceber uma melhor capacidade de generalização do modelo, reduzindo assim o problema da “maldição da dimensionalidade” ou problemas associados com espaços com muitas dimensões (atributos), e melhoria de outras caraterísticas intrínsecas ao modelo utilizado (BELLMAN, 2003; GUYON; ELISSEEFF, 2003). Para a seleção de atributos para aprendizado supervisionado são utilizados os métodos:

• Wrappers: utilizam o treinamento de um modelo para avaliar as caraterísticas do banco de dados.

• Filtragem: permite quantificar estatisticamente a relevância de cada atributo,

• Método embarcado: utiliza as técnicas de filtragem e wrapper, tornando assim mais robusta a seleção de atributos, utilizando diferentes técnicas de abordagem do problema (BEN BRAHIM; LIMAM, 2017).

Na literatura são disponibilizadas diversas referências que apresentam detalhadamente cada um destes métodos (GUYON; ELISSEEFF, 2003; SAEYS; INZA; LARRANAGA, 2007). Neste trabalho será utilizada a abordagem do método embarcado, utilizando diferentes filtros e

wrappers.

Dentre os métodos de filtragem podemos encontrar na literatura as técnicas de correlação de Pearson, o discriminante de Fisher, a informação mútua, a regressão linear, a correlação cruzada etc. Neste trabalho utilizaremos como método de filtragem: a técnica de regressão linear e o da correlação cruzada, utilizando como atributos as colunas obtidas na organização dos dados como um problema de aprendizado supervisionado.

A regressão linear com uma única variável é utilizada para testar o efeito individual de cada um dos muitos regressores disponíveis, sendo cada um deles uma variável das diferentes séries temporais para os diferentes atrasos, seguindo o uso da função f_regression e

SelectKBest da biblioteca para aprendizado automático sklearn para python (PEDREGOSA et

A correlação cruzada indica a similaridade entre dois sinais em função de um atraso aplicado a um deles, que é o indicado para a análise de séries temporais.

Os wrappers utilizam um modelo treinado para a avaliação de atributos, porém fazem uma seleção dos melhores atributos no espaço de busca disponível, sendo uma tarefa computacionalmente complexa para um elevado número de atributos utilizados para a análise (GUYON; ELISSEEFF, 2003). Para as séries temporais, qualquer modelo que consiga cumprir a tarefa de regressão pode ser um wrapper, e neste caso serão utilizadas as técnicas Random

Forest Regressor e Extra Trees Regressor, que pertencem a família das árvores de decisões,

implementadas na biblioteca para aprendizado automático sklearn para python (PEDREGOSA et al., 2011).

Ben Brahim e Limam (2017) destacam uma das técnicas de seleção de atributos utilizando o método embarcado, que apresenta a abordagem de Ensemble Aggregation, técnica que mistura os resultados de diferentes técnicas simples para seleção de atributos (Figura 30).

A frequência de ocorrência de um atributo (Feature occurrence frequency) está entre as diferentes técnicas de classificação de atributos para a abordagem de Ensemble Aggregation, que seleciona os mais promissores atributos baseado na ocorrência durante a análise dos mesmos, elaborando assim, um ranking de ocorrências, onde serão selecionados, os atributos que ocorrem com uma maior frequência. A técnica utilizada para a seleção de atributos neste trabalho segue a metodologia da frequência de ocorrência de atributos, utilizando os filtros e

wrappers selecionados (Figura 31).

Figura 30 – Ensemble Aggregation.

Figura 31 – Ensemble Aggregation com classificação por frequência de ocorrência.

Fonte: Elaborado pelo Autor.

Escolha do Modelo

Numa RNA existem diferentes tipos e estruturas de acordo com o tipo de neurônios, camadas da rede, número de neurônios por camada etc. Cada tipo e estrutura de uma rede neural com seus diferentes tipos de neurônios possibilita diferentes propriedades para trabalhar com diferentes tipos de dados, tais como imagens, texto, séries temporais etc. Na bibliografia é possível encontrar diferentes abordagens para a previsão de séries temporais com redes neurais para a previsão da demanda e geração e distribuição de fontes de energia renovável (ALMALAQ; ZHANG, 2020; HASSANI; SILVA, 2015).

Neste trabalho de pesquisa foram selecionados diferentes tipos de Redes Neurais para a previsão de séries temporais, tais como o Perceptron Multicamada do tipo Feedforward, a Aprendizagem Profunda (Deep Learning), as Redes Neurais Recorrentes do tipo Long-Short

Term Memory (LSTM), Aprendizagem Profunda com neurônios do tipo LSTM, e Redes

5.2.2.4.1 Perceptron Multicamada

O Perceptron Multicamada ou Multilayer Perceptron (MLP) apresenta uma estrutura do tipo feedforward que permite a conexão de todos os neurônios de uma camada com os seguintes. Cada neurônio pode apresentar uma ou múltiplas entradas que serão ponderadas e somadas algebricamente, passando depois o resultado obtido através de uma função de ativação, que fornecerá o resultado do neurônio. A função de ativação é geralmente uma função não linear de tipo sigmoide, como por exemplo a tangente hiperbólica, a função logística ou outras (MEHDIYEV et al., 2017). Na Figura 32 é mostrada a estrutura de um neurônio (MORARIU; IANCU; VLAD, 2009; STAUDEMEYER; MORRIS, 2019).

Figura 32 – Estrutura de um Neurônio.

Fonte: Elaborado pelo Autor, baseado em Staudemeyer e Morris (2019).

Ao utilizar diferentes neurônios organizados em camadas podemos obter um MLP, que permite a realização de tarefas mais complexas em relação a utilização de um único neurônio, pois este modelo permitirá o mapeamento de diferentes não linearidades do sistema, conseguindo assim efetuar tarefas de regressão ou classificação de acordo com os tipos de neurônios selecionados e função de custo utilizada. A estrutura do MLP é apresentada na Figura 33, que apresenta 𝑁 entradas, duas camadas com 𝐿1 e 𝐿2 neurônios, e 𝐿3 saídas.

Figura 33 – Estrutura de uma MLP.

Fonte: Elaborado pelo Autor.

O processo de aprendizado de uma rede neural a ser utilizado nesse trabalho será baseado numa função de custo que definirá o tipo de tarefa realizada pela rede neural. No caso da regressão, que utilizaremos neste trabalho de pesquisa, a função de custo corresponderá ao erro quadrático médio, definido no capítulo 4 deste trabalho. Posteriormente, após de obter o valor do erro, é realizada a tarefa de atualização dos pesos W associado aos neurônios, permitindo assim, o aprendizado da rede. A retropropagação (backpropagation) e o método do gradiente são os métodos mais utilizados para a atualização dos pesos do modelo (STAUDEMEYER; MORRIS, 2019).

5.2.2.4.2 Aprendizagem Profunda ou Deep Learning

Deep Learning ou Aprendizagem Profunda é uma técnica da aprendizagem de

máquina baseada na utilização das redes neurais artificiais, como é o caso da MLP. A principal a diferença concerne a utilização de um maior número de camadas, melhorando assim, a capacidade computacional e o desenvolvimento de GPUs (Graphics Processing Units) aplicados para o desenvolvimento do aprendizado de máquina.

A principal vantagem na utilização do Deep Learning é a possibilidade de detecção de padrões mais complexos, associado a um maior número de camadas e uma maior capacidade de análise. Dentre as principais aplicações desta técnica podemos destacar a classificação e geração de imagens e textos, análise de textos, voz e séries temporais, extração de caraterísticas latentes para bases de dados etc.

Deep Learning é muito utilizado em séries temporais para na previsão e classificação

de dados, sendo especialmente utilizado na área de finanças, economia, processos industriais, previsão de demanda e geração elétrica (ALMALAQ; ZHANG, 2020; BROWNLEE, 2018; MEHDIYEV et al., 2017; TADDY, 2019; TORRES et al., 2017).

5.2.2.4.3 Redes Neurais Recorrentes

As Redes Neurais Recorrentes (RNN) são um tipo de rede neural equivalentes a um sistema dinâmico, com um estado interno associado a cada instante de tempo. A vantagem das RNN em relação as MLP, é que as mesmas apresentam conexões circulares entre os eventos atuais e passados, apresentando um tipo de memória baseada nos eventos (STAUDEMEYER; MORRIS, 2019). O aprendizado das RNN está associado ao Backpropagation ao longo do tempo (STAUDEMEYER; MORRIS, 2019).

As RNN do tipo Long Short Term Memory (LSTM) foram introduzidas por (HOCHREITER; SCHMIDHUBER, 1997), e podem ser utilizadas em diferentes aplicações, tais como a previsão de séries temporais, controle de robôs, reconhecimento de voz, aprendizado de gramática, atividades de precisão na área de controle de processos e gestão, etc.

LSTM é um tipo de RNN que melhora o problema do desaparecimento do gradiente (vanishing), reduzindo assim, a dependência de um longo período dos dados, problema encontrado no aprendizado das RNN (STAUDEMEYER; MORRIS, 2019). Na Figura 34 é apresentada uma célula do tipo LSTM.

Figura 34 – Célula LSTM.

As Eq. (17), (18) e (19) modelizam uma célula do tipo LSTM (OLAH, 2015; SAK et al., 2014). [ 𝑖𝑡 𝑓𝑡 𝑂𝑡 𝐶̂ ]𝑡 = [ 𝜎(𝑊𝑖[ℎ𝑡−1, 𝑥𝑡] + 𝑏𝑖) 𝜎(𝑊𝑓[ℎ𝑡−1, 𝑥𝑡] + 𝑏𝑓) 𝜎(𝑊𝑜[ℎ𝑡−1, 𝑥𝑡] + 𝑏𝑜) tanh(𝑊𝑔[ℎ𝑡−1, 𝑥𝑡] + 𝑏𝑔)] (17) 𝐶𝑡= (𝑓𝑡∗ 𝐶𝑡−1) + (𝑖𝑡∗ 𝐶̂ ) 𝑡 (18) ℎ𝑡 = 𝑂𝑡∗ tanh(𝐶𝑡) (19)

A Eq. (17) apresenta algumas variáveis intermediarias que correspondem a um neurônio comum como foi apresentado na Figura 32, enquanto a Eq. (18) mostra à saída dos vetores de ativação das células, e a Eq. (19) indica a saída do neurônio do tipo LSTM

A função de ativação sigmoide (𝜎) e a tangente hiperbólica (tanh) possui pesos W, bias b, e entradas ℎ𝑡−1 que é a saída do neurônio no anterior instante de tempo, e 𝑥𝑡 que é a entrada do neurônio no instante de tempo atual. Por outro lado, 𝑖𝑡 corresponde à comporta de entrada (input), 𝑓𝑡 corresponde à porta esqueço (forget), 𝑂𝑡 corresponde à porta saída (output) e 𝐶̂ corresponde ao vetor de candidatos ou vetor porta, e 𝐶𝑡 𝑡 apresenta à saída dos vetores de ativação das células, e ℎ𝑡 indica a saída do neurônio do tipo LSTM.

A interação de uma célula do tipo LSTM com dados passados e futuros do sistema segue a lógica apresentada na Figura 35.

Figura 35 – Célula LSTM interagindo com um estado passado e futuro.

Num dos exemplos de validação apresentado neste trabalho, as LSTM foram utilizadas em diferentes estruturas para a previsão de diferentes séries temporais associadas com fatores climáticos e demanda energética de uma cidade. A versatilidade do modelo permitiu obter a previsão de dados até a geração de texto automático, o que mostra a ampla aplicação e robustez dos modelos baseados em LSTM.

5.2.2.4.4 Aprendizagem Profunda do tipo LSTM

O Deep LSTM ou aprendizagem profunda do tipo LSTM é uma arquitetura, que da mesma maneira que as Redes Neurais Profundas são um conjunto de MLP com múltiplas camadas, ou seja, o Deep LSTM são múltiplas camadas de LSTMs.

Esta topologia de múltiplas camadas permite um melhor desempenho que as LSTMs de uma única camada, pois estas possuem uma maior quantidade de parâmetros de ajuste distribuído em diferentes camadas. Esta estrutura permitirá realizar com êxito aplicações de reconhecimento de voz e de caligrafia, modelagem de fonemas de uma linguagem, e a previsão com sucesso de diferentes tipos de séries temporais (SAK et al., 2014).

5.2.2.4.5 Redes Neurais Bidirecionais do tipo LSTM

As RNN convencionais analisam os dados de entrada unicamente observando o passado do modelo obtido, que representa um fator de limitação para o desenvolvimento de um modelo. As Redes Neurais Bidirecionais exploram a possibilidade de analisar o passado e futuro do modelo em estudo (STAUDEMEYER; MORRIS, 2019). Ao comparar as estruturas LSTM tradicionais com as Bidirecionais, estas últimas apresentam algumas vantagens, em casos onde ocorrem a classificação de fonemas, tradução, reconhecimento manuscrito, previsão de estrutura de proteínas etc.

Treinamento do Modelo

O processo de aprendizado das Redes Neurais é baseado na otimização de uma função de custo definida pelo usuário, que se refere ao desempenho do modelo. Para otimizar uma função de custo, geralmente é utilizada a técnica do gradiente de forma iterativa, utilizando o processo de backpropagation (ou backpropagation ao longo do tempo no caso das RNN), onde os pesos das redes neurais são atualizados como resultado do processo de otimização, permitindo assim, o processo de aprendizado.

Para o treinamento das Redes Neurais existem hiper-parâmetros, que são parâmetros selecionados pelo usuário antes do treinamento das Redes Neurais e afetam a convergência do algoritmo (KATANFOROOSH; KUNIN; MA, 2019). Dentre os hiper-parâmetros encontrados para o treinamento de uma Rede Neural podemos destacar: a inicialização dos pesos dos neurônios, a taxa de aprendizagem, o decaimento da taxa de aprendizagem e o tamanho dos dados (batch) (KATANFOROOSH; KUNIN; MA, 2019).

O método clássico utilizado é o do decaimento da função gradiente, entretanto existem m métodos alternativos, que poderão ser utilizados para a otimização das redes neurais, que influenciarão na velocidade e convergência do algoritmo. Dentre os otimizadores mais utilizados (KATANFOROOSH; KUNIN; MA, 2019) podemos destacar: o decaimento estocástico do gradiente (SGD), Momentum, RMSprop, Adam (KINGMA; BA, 2015), etc. (KATANFOROOSH; KUNIN; MA, 2019).

Para treinamento e desenvolvimento de Redes Neurais foram utilizadas bibliotecas ou frameworks especializados, que embarcam completamente o processo. Na linguagem Python, os frameworks mais utilizados são Keras, Tensorflow e Pytorch. Neste trabalho de pesquisa foi utilizado o framework Keras, que é compatível com GPU, e utiliza o Tensorflow como back-

end.

Implementação do modelo obtido

A seleção do melhor modelo deve passar pela análise e avaliação dos modelos de previsão obtidos, utilizando as métricas descritas no capítulo anterior deste trabalho. Dentre as métricas mais relevantes podemos destacar: o Erro Quadrático Médio (EQM), a Raiz do EQM (REQM), Erro Médio Absoluto (EMA) e Coeficiente de Determinação ou R2. Estas métricas foram utilizadas neste trabalho para comparar os diferentes modelos obtidos, sendo escolhido, o modelo com melhores métricas de acordo com as necessidades do projeto.

O modelo selecionado deverá apresentar uma boa capacidade de generalização, e estará pronto para produção. Os modelos de produção, que utilizam redes neurais, estão baseados nos diferentes frameworks que permitem a possibilidade de salvar um arquivo com a estrutura da Rede Neural e os pesos dos neurônios. O modelo poderá ser implementado em

pipelines, que são um único processo que recebe o banco de dados, tendo como saída o resultado

da rede neural nas grandezas desejadas. O pipeline poderá ser utilizado como um serviço de tipo web ou API, permitindo assim, uma melhor implementação em processo de produção.

Utilizando como referência a Figura 28, que mostra as diferentes etapas e transformações necessárias para o desenvolvimento de uma Rede Neural, algumas transformações deverão ser realizadas. Na Figura 36 é mostrado o processo para a implementação da Rede Neural visando um processo de produção.

Figura 36 – Proposta de implementação de uma Rede Neural para produção.

Fonte: Elaborado pelo Autor.