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 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.

Resultado IPCA-15 - Novembro/2024

A Análise Macro apresenta os resultados do IPCA-15 de Novembro de 2024, com gráficos elaborados em Python para coleta, tratamento e visualização de dados. Todo o conteúdo, disponível exclusivamente no Clube AM, foi desenvolvido com base nos métodos ensinados nos cursos da Análise Macro, permitindo aos assinantes acesso aos códigos e replicação das análises.

Resultado PNADc Trimestral - 3° Trimestre/2024

A Análise Macro apresenta os resultados da PNADc Trimestral do 3º trimestre de 2024, com gráficos elaborados em Python para coleta, tratamento e visualização de dados. Todo o conteúdo, disponível exclusivamente no Clube AM, foi desenvolvido com base nos métodos ensinados nos cursos da Análise Macro, permitindo aos assinantes acesso aos códigos e replicação das análises.

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.