A aprendizagem por transferência (ou transfer learning) é a técnica de reutilizar um modelo previamente treinado em um novo problema. Esse conceito representa um grande avanço para a previsão de variáveis, especialmente aquelas organizadas ao longo do tempo, como séries temporais. Neste post, exploramos como usar transfer learning com Python para trabalhar com esse tipo de dado.
O que é Transfer Learning?
Transfer learning é o processo de aproveitar um modelo treinado em uma tarefa para aplicá-lo a um novo problema, geralmente relacionado. Essa abordagem é extremamente útil na ciência de dados, especialmente em situações em que não há uma grande quantidade de dados rotulados disponíveis para treinar modelos complexos.
Embora o transfer learning não seja uma técnica de aprendizado de máquina por si só, ele é uma metodologia de design muito popular, principalmente quando combinado com redes neurais profundas, que exigem grandes volumes de dados e poder computacional. Essa prática permite acelerar o treinamento de modelos e melhorar a performance quando os dados são limitados.
Como funciona?
No transfer learning, o conhecimento de um modelo treinado é transferido para um novo problema, com o objetivo de melhorar o desempenho na nova tarefa. Por exemplo, se você treinou um modelo para classificar imagens que contenham mochilas, pode usar esse modelo para identificar outros objetos, como óculos de sol. O que o modelo aprendeu na tarefa anterior (identificação de mochilas) pode ser reaproveitado para identificar objetos relacionados de maneira mais eficiente.
O conceito fundamental é que o aprendizado obtido em uma tarefa com muitos dados pode ser transferido para uma nova tarefa com menos dados, evitando a necessidade de treinar um modelo do zero. Ao aplicar esse conhecimento pré-existente, podemos melhorar a capacidade de generalização do modelo na nova tarefa.
Para que é utilizado?
Embora o transfer learning seja amplamente utilizado em áreas como Processamento de Linguagem Natural (NLP) e Visão Computacional, ele também pode ser aplicado a séries temporais. Dado que muitos dados econômicos e financeiros são naturalmente estruturados em séries temporais, essa técnica se torna uma poderosa ferramenta para previsão e análise desses dados.
Como aplicar em Séries Temporais?
Para obter o código e o tutorial deste exercício faça parte do Clube AM e receba toda semana os códigos em R/Python, vídeos, tutoriais e suporte completo para dúvidas.
O uso do transfer learning em dados de séries temporais pode ser feito com a ajuda de bibliotecas como o mlforecast
em Python. Esta biblioteca facilita a implementação dessa metodologia, permitindo que modelos treinados em conjuntos de dados relacionados sejam aplicados a novas séries temporais com maior precisão.
Passo 1: Treinamento do Modelo
datasetsforecast
.Abaixo, estão algumas das variáveis presentes no dataset da M3. É possível observar uma diferença significativa nos processos geradores de dados das séries temporais.
Para validar a precisão das previsões, realizamos a separação entre os conjuntos de treino e teste utilizando o dataset AirPassengers.
unique_id | ds | LGBMRegressor | |
---|---|---|---|
0 | AirPassengers | 1960-01-01 | 422.740112 |
1 | AirPassengers | 1960-02-01 | 399.480225 |
2 | AirPassengers | 1960-03-01 | 458.220337 |
3 | AirPassengers | 1960-04-01 | 442.960419 |
4 | AirPassengers | 1960-05-01 | 461.700500 |
Considerações
O Transfer Learning é uma metodologia de design amplamente utilizada na Ciência de Dados, especialmente nas áreas de NLP (Processamento de Linguagem Natural) e Visão Computacional, sendo fundamental quando a quantidade de dados rotulados é limitada.
O mais interessante dessa abordagem é a possibilidade de aplicar a ferramenta a diferentes tipos de dados, como séries temporais. O principal desafio está na obtenção do modelo pré-treinado, que requer uma grande quantidade de variáveis para o treinamento. Além disso, a transferência de modelos só é eficaz quando os inputs do novo problema são compatíveis com os utilizados no treinamento inicial.
Referências
Nixtla. How-to-guides: Transfer Learning. Acesso em: https://nixtlaverse.nixtla.io/mlforecast/docs/how-to-guides/transfer_learning.html
Donges, Niklas. What is Transfer Learning? Exploring the Popular Deep Learning Approach. Acesso em: https://builtin.com/data-science/transfer-learning