10 Melhorando o Modelo
Melhorar o desempenho de um modelo de regressão linear envolve diversas estratégias que ajudam a aumentar a precisão, generalização e interpretabilidade. Este capítulo explora técnicas cruciais para aprimorar modelos de regressão.
10.1 Feature Engineering
A engenharia de características é o processo de criar novas variáveis a partir de dados brutos para melhorar a capacidade preditiva do modelo.
10.1.1 Técnicas Comuns de Feature Engineering
10.1.1.1 Transformações Matemáticas
Transformações como logaritmo, raiz quadrada e potência podem ajudar a linearizar relações não lineares.
import numpy as np
df['log_feature'] = np.log(df['feature'] + 1)10.1.1.2 Interações Entre Variáveis
Criar variáveis de interação, onde múltiplas variáveis são multiplicadas entre si para capturar efeitos combinados.
df['interaction'] = df['feature1'] * df['feature2']10.1.1.3 Agrupamentos e Categorizações
Criar variáveis categóricas ou binárias a partir de variáveis contínuas.
df['binned'] = pd.cut(df['feature'], bins=5, labels=False)10.2 Regularização (Lasso e Ridge)
A regularização é uma técnica para prevenir o overfitting, adicionando uma penalidade à magnitude dos coeficientes de regressão.
10.2.1 Tipos de Regularização
10.2.1.1 Ridge Regression (Regressão Ridge)
Adiciona uma penalidade L2 à soma dos quadrados dos coeficientes. Útil para lidar com multicolinearidade.
\[\textit{Custo} = \sum (y_i - \hat{y}_i)^2 + \lambda \sum \beta_j^2\]
from sklearn.linear_model import Ridge
ridge = Ridge(alpha=1.0)
ridge.fit(x_train, y_train)10.2.1.2 Lasso Regression (Regressão Lasso)
Adiciona uma penalidade L1, que pode resultar em coeficientes exatamente zero, efetivamente selecionando características.
\[\textit{Custo} = \sum (y_i - \hat{y}_i)^2 + \lambda \sum |\beta_j|\]
from sklearn.linear_model import Lasso
lasso = Lasso(alpha=0.1)
lasso.fit(x_train, y_train)10.2.1.3 Elastic Net
Combina penalidades L1 e L2, sendo útil quando há muitas variáveis correlacionadas.
from sklearn.linear_model import ElasticNet
elastic_net = ElasticNet(alpha=1.0, l1_ratio=0.5)
elastic_net.fit(x_train, y_train)10.3 Seleção de Variáveis
A seleção de variáveis é o processo de identificar e manter as variáveis mais relevantes para o modelo, removendo aquelas que não contribuem significativamente.
10.3.1 Métodos de Seleção de Variáveis
10.3.1.1 Seleção Sequencial
Forward Selection (Seleção Progressiva): Começa com nenhum preditor e adiciona variáveis uma a uma, avaliando o modelo a cada adição.
Backward Elimination (Eliminação Regressiva): Começa com todas as variáveis e remove uma de cada vez, escolhendo a que menos impacta o modelo.
from sklearn.feature_selection import RFE
from sklearn.linear_model import LinearRegression
model = LinearRegression()
rfe = RFE(model, n_features_to_select=3)
rfe.fit(x_train, y_train)10.3.1.2 Critério de Informação de Akaike (AIC) e Critério de Informação Bayesiano (BIC)
Usados para avaliar a qualidade de modelos estatísticos, penalizando a complexidade.
10.3.1.3 Cross-Validation (Validação Cruzada)
Avalia a performance do modelo em múltiplos subconjuntos dos dados para garantir que o modelo generalize bem para novos dados.
from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, x_train, y_train, cv=5)
print("Acurácia média: ", scores.mean())10.4 Exercícios
Versão on-line destes exercícios
https://forms.gle/RQW3UWpMzJmDJRsu9.
O que é feature engineering em regressão linear?
O processo de adicionar mais dados ao conjunto de dados original.
A técnica de reduzir o número de variáveis independentes em um modelo.
O processo de criar novas variáveis a partir de dados brutos para melhorar a capacidade preditiva do modelo.
A análise de resíduos para verificar a validade do modelo.
Qual das seguintes técnicas de regularização é conhecida por poder zerar completamente alguns coeficientes, efetivamente selecionando características?
Regressão Ridge
Regressão Lasso
Regressão Linear Simples
Regressão Logística
Qual é o principal objetivo da regularização na regressão linear?
Aumentar a complexidade do modelo para que ele se ajuste melhor aos dados de treinamento.
Reduzir o erro médio absoluto (MAE) em novos conjuntos de dados.
Prevenir o overfitting penalizando coeficientes grandes e melhorando a generalização do modelo.
Substituir a análise de resíduos no processo de diagnóstico.
O que é backward elimination na seleção de variáveis?
Um método que começa com todas as variáveis e remove uma por uma, com base em testes de significância estatística.
Um processo de adicionar variáveis ao modelo, uma de cada vez.
Uma técnica de dividir dados em conjuntos de treinamento e teste.
Um método para normalizar variáveis antes do ajuste do modelo.
Por que o Elastic Net é usado em regressão linear?
Porque ele é mais rápido do que outras técnicas de regularização.
Porque combina as penalidades de L1 e L2, sendo útil para situações em que há muitas variáveis correlacionadas.
Porque é a única técnica que pode lidar com dados categóricos.
Porque elimina automaticamente todos os outliers do conjunto de dados.