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

Análise de ações com IA - um guia inicial

Neste artigo, você vai aprender a integrar IA na análise de ações de forma automatizada utilizando Python. Ao final, você terá um pipeline completo capaz de coletar dados de mercado, gerar gráficos, elaborar relatórios com linguagem natural.

Quais são as ferramentas de IA?

Um aspecto crucial dos Agentes de IA é a sua capacidade de tomar ações, que acontecem por meio do uso de Ferramentas (Tools). Neste artigo, vamos aprender o que são Tools, como defini-las de forma eficaz e como integrá-las ao seu Agente por meio da System Prompt. Ao fornecer as Tools certas para o seu Agente — e ao descrever claramente como essas Tools funcionam — você pode aumentar drasticamente o que sua IA é capaz de realizar.

Otimizando um Portfólio de Investimentos com Machine Learning

A construção de portfólio ótimo refere-se ao processo de alocar eficientemente capital entre um conjunto predefinido de ativos ou títulos. O campo da construção de portfólio tem sido extensivamente estudado por acadêmicos e profissionais desde a década de 1950, quando Markowitz introduziu sua inovadora abordagem de média-variância para a construção de portfólio. Diante disso, podemos melhorar o processo de alocação de peso de um investimento em um portfólio através do Aprendizado não supervisionado com a aplicação do Hierarchical Risk Parity (HRP). Neste exercício, realizamos uma introdução ao método e mostramos os resultados de um exemplo criado através do Python.

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.