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