Como selecionar variáveis para modelos de previsão no Python?

Em oposição à crença popular, grande parte dos modelos de machine learning não produzem previsões magicamente. É papel do cientista de dados executar uma boa engenharia de variáveis para não cair no clássico problema de “garbage in, garbage out” (GIGO) em aprendizado de máquina. Neste sentido, aprender a fazer uma boa seleção de variáveis é fundamental e neste artigo exploramos algumas possibilidades práticas usando o Python.

O que é seleção de variáveis?

A seleção de variáveis é uma etapa do fluxo de trabalho de modelos preditivos com objetivo de selecionar uma parte relevante do conjunto de dados para ser usada no desenvolvimento de modelos. Existem algumas razões e vantagens para efetuar a seleção de variáveis:

  • Simplifica os modelos
  • Facilita a interpretação
  • Reduz o tempo de treinamento
  • Evita o problema da alta dimensionalidade
  • Pode evitar o problema de sobreajuste

Métodos de seleção de variáveis

Existem diversos métodos de seleção de variáveis, mas os mais comuns são:

  • Eliminação recursiva de variáveis (RFE):

    Primeiro, escolhe-se um método/modelo para estimar pesos (coeficientes) para as variáveis. Em seguida, o método é estimado e os pesos são obtidos para o conjunto completo de variáveis. Então, a variável com o menor peso é eliminada do conjunto de dados. Esse procedimento é repetido recursivamente no conjunto de dados até que um número ideal de variável seja atingido.

  • Seleção sequencial de variáveis (SFS):

    Este método procura iterativamente a melhor variável a ser adicionada ao conjunto de variáveis preditoras. O método começa com zero variáveis e procura a melhor variável a ser incluída com base em alguma métrica a ser otimizada quando um modelo é estimado com apenas essa variável. Após a primeira variável ser selecionada, o procedimento é repetido e é adicionada uma nova variável ao conjunto de variáveis selecionadas. O procedimento termina quando um número ideal de variáveis é alcançado.

Como selecionar variáveis usando o método RFE no Python?

Agora vamos a um exemplo prático. Aqui vamos mostrar como aplicar o método de seleção de variáveis RFE no Python usando as bibliotecas skforecast (0.13.0) e sklearn.

Primeiro, carregamos os dados:

Em seguida, definimos um modelo/estimador a ser usado para estimar os pesos que são usados para eliminar variáveis:

================= ForecasterAutoreg ================= Regressor: RandomForestRegressor(random_state=1984) Lags: [ 1 2 3 4 5 6 7 8 9 10 11 12] Transformer for y: PowerTransformer() Transformer for exog: PowerTransformer() Window size: 12 Weight function included: False Differentiation order: None Exogenous included: False Exogenous variables names: None Training range: None Training index type: None Training index frequency: None Regressor parameters: {'bootstrap': True, 'ccp_alpha': 0.0, 'criterion': 'squared_error', 'max_depth': None, 'max_features': 1.0, 'max_leaf_nodes': None, 'max_samples': None, 'min_impurity_decrease': 0.0, 'min_samples_leaf': 1, 'min_samples_split': 2, 'min_weight_fraction_leaf': 0.0, 'monotonic_cst': None, 'n_estimators': 100, 'n_jobs': None, 'oob_score': False, 'random_state': 1984, 'verbose': 0, 'warm_start': False} fit_kwargs: {} Creation date: 2024-11-28 09:14:41 Last fit date: None Skforecast version: 0.13.0 Python version: 3.11.3 Forecaster id: None

Agora, definimos os parâmetros do método de seleção de variáveis RFE, visando selecionar pelo menos 5 variáveis ao otimizar a métrica MSE:

Por fim, aplicamos a seleção de variáveis:

Recursive feature elimination (RFECV) ------------------------------------- Total number of records available: 238 Total number of records used for feature selection: 119 Number of features available: 104 Autoreg (n=12) Exog (n=92) Number of features selected: 8 Autoreg (n=0) : [] Exog (n=8) : ['ipc_br', 'ipca_administrados', 'ipca_livres', 'ipca_nucleo_dp', 'ipca_nucleo_ex0', 'ipca_nucleo_ex1', 'inpc', 'ipca_15']

Ainda há a possibilidade de forçar a inclusão de determinadas variáveis e/ou escolher apenas um tipo de variável (consulte a documentação).

Conclusão

Em oposição à crença popular, grande parte dos modelos de machine learning não produzem previsões magicamente. É papel do cientista de dados executar uma boa engenharia de variáveis para não cair no clássico problema de “garbage in, garbage out” (GIGO) em aprendizado de máquina. Neste sentido, aprender a fazer uma boa seleção de variáveis é fundamental e neste artigo exploramos algumas possibilidades práticas usando o Python.

Tenha acesso ao código e suporte desse e de mais 500 exercícios no Clube AM!

Quer o código desse e de mais de 500 exercícios de análise de dados com ideias validadas por nossos especialistas em problemas reais de análise de dados do seu dia a dia? Além de acesso a vídeos, materiais extras e todo o suporte necessário para você reproduzir esses exercícios? Então, conheça o Clube AM clicando aqui.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Como Criar um Agente Analista para Dados da Inflação com LangGraph

Este post mostra como automatizar a análise da inflação brasileira com o uso de agentes inteligentes. Utilizando o LangGraph, integramos dados do IPCA, núcleos de inflação e grupos do índice para criar um sistema capaz de gerar análises econômicas automatizadas com base em consultas em linguagem natural.

Como Criar um Agente para Análise da Atividade Econômica com LangGraph

Este post mostra como automatizar a análise da atividade econômica brasileira com agentes inteligentes. Utilizando o framework LangGraph e dados do IBGE e Banco Central, construímos um sistema capaz de gerar respostas analíticas a partir de perguntas em linguagem natural, unindo automação de consultas SQL e interpretação econômica.

Introdução ao LangGraph

LangGraph é um framework em Python desenvolvido para gerenciar o fluxo de controle de aplicações que integram um modelo de linguagem (LLM). Com ele podemos construir Agentes de IA robustos e previsíveis.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.