O Perigo da Multicolinearidade em Machine Learning: Como Identificar e Resolver

O que é Multicolinearidade?

Tipos de Multicolinearidade

Por que a Multicolinearidade é um Problema?

Exemplo Prático: O Problema na Predição de Preços de Casas

Como Detectar a Multicolinearidade?

1. Matriz de Correlação

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# Exemplo de DataFrame com variáveis correlacionadas
dados = {
    "area_total": [50, 60, 70, 80, 90],
    "area_construida": [45, 55, 65, 75, 85],
    "numero_de_quartos": [1, 2, 3, 3, 4],
    "numero_de_banheiros": [1, 1, 2, 2, 3]
}

df = pd.DataFrame(dados)

# Matriz de correlação
plt.figure(figsize=(6,4))
sns.heatmap(df.corr(), annot=True, cmap="coolwarm", fmt=".2f")
plt.title("Matriz de Correlação")
plt.show()

2. Variance Inflation Factor (VIF)

from statsmodels.stats.outliers_influence import variance_inflation_factor
import numpy as np

# Cálculo do VIF
X = df.drop(columns=["numero_de_banheiros"])  # Excluímos a variável alvo
vif_data = pd.DataFrame()
vif_data["variavel"] = X.columns
vif_data["VIF"] = [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]

print(vif_data)
            variavel           VIF
0         area_total  17442.000000
1    area_construida  20119.000000
2  numero_de_quartos     17.333333

Como Resolver a Multicolinearidade?

1. Remover Variáveis Redundantes

2. Criar Novas Variáveis

df["proporcao_area_construida"] = df["area_construida"] / df["area_total"]
df.drop(columns=["area_construida"], inplace=True)

3. Usar Modelos Menos Sensíveis à Multicolinearidade

4. Aplicar Regularização (Lasso e Ridge)

from sklearn.linear_model import Ridge

modelo = Ridge(alpha=1.0)  # Aumente alpha para uma penalização maior
modelo.fit(X, df["numero_de_banheiros"])

Conclusão

Resumo das principais dicas:

  1. Mãos à obra aprendizado de máquina com Scikit-Learn, Keras & TensorFlow: conceitos, ferramentas e técnicas para a construção de sistemas inteligentes.
  2. Python para análise de dados
  3. Estatística Prática Para Cientistas de Dados: 50 Conceitos Essenciais
  4. An Introduction to Statistical Learning (Python e R)

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima
×