Plataforma Integrada de Aprendizagem de Máquina

Da Engenharia de Atributos (Feature Engineering) à Modelação de Inadimplência

Estudo de Caso Prático: Dataset Banco Alpha

Aula 1 – Introdução ao Feature Engineering

A Engenharia de Atributos consiste no processo de transformar dados brutos em variáveis preditivas para alimentar algoritmos de Machine Learning.


1. Atributos Irrelevantes / Redundantes
  • ID_Cliente / pedido_id: Apenas identificadores cadastrais sem padrão preditivo real.
  • produto_id: Redundante quando já possuímos a categoria_produto.
  • tipo_dispositivo: Pouco impacto direto na análise de risco financeiro.
2. Propostas de Novas Features
  • RendaPorLimiteCartao: Mede a proporção do limite concedido em relação aos ganhos mensais.
  • PercentualSaldo: Percentual da renda mantido como saldo em conta.
  • TempoComoCliente: Medida em anos de engajamento com a instituição.

Aula 2 – Criação e Visualização de Features (Banco Alpha)

Demonstração das transformações aplicadas via Pandas no dataset dados_banco_alpha.csv.


Tabela de Amostra dos Clientes:
ID_Cliente DataAbertura Idade RendaMensal SaldoConta LimiteCartao Status Atraso TempoCliente (anos) Renda/Limite % Saldo/Renda
201 2018-01-25 25 R$ 3.000 R$ 900 R$ 4.000 0 (Em dia) 8.10 0.750 30.00%
202 2018-03-02 57 R$ 4.500 R$ 2.100 R$ 8.000 1 (Atraso) 7.99 0.563 46.67%
203 2019-07-15 33 R$ 2.800 R$ 750 R$ 5.000 0 (Em dia) 6.63 0.560 26.79%
204 2021-05-20 42 R$ 6.500 R$ 1.500 R$ 12.000 0 (Em dia) 4.78 0.542 23.08%
205 2019-10-11 60 R$ 7.000 R$ 3.100 R$ 10.000 1 (Atraso) 6.39 0.700 44.29%

Aula 3 – Seleção de Atributos & Relevância

Análise de colinearidade, redução de redundância e importância relativa das variáveis geradas.


Features Mais Relevantes
  1. PercentualSaldo: Indicador direto do nível de comprometimento financeiro.
  2. TempoComoCliente: Histórico de retenção e estabilidade bancária.
  3. RendaPorLimiteCartao: Avalia proporcionalidade de crédito concedido.
Atributos Descartados

Variáveis brutas como SaldoConta e LimiteCartao possuem alta multicolinearidade com a renda e foram combinadas nos novos índices para evitar overfitting.

Gráfico de Importância das Features (Simulação SelectKBest / Random Forest):

Aula 4 – Modelos de Classificação Supervisionada

Treinamento e comparação entre Regressão Logística e Árvores de Decisão para predição de inadimplência.


# Roteiro de Modelagem (Classificação)
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

df = pd.read_csv('dados_banco_alpha_modificado.csv')

X = df.drop(columns=['AtrasoPagamento'])
y = df['AtrasoPagamento']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42)

# Treinamento dos Classificadores
lr_model = LogisticRegression(max_iter=1000).fit(X_train, y_train)
dt_model = DecisionTreeClassifier(max_depth=5, random_state=42).fit(X_train, y_train)

# Avaliação Inicial
print("Acurácia Regressão Logística:", accuracy_score(y_test, lr_model.predict(X_test)))
print("Acurácia Árvore de Decisão:", accuracy_score(y_test, dt_model.predict(X_test)))

Aula 5 – Métricas e Avaliação de Desempenho

Diagnóstico aprofundado com Matriz de Confusão, Precision, Recall e Curva ROC-AUC.


import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report, confusion_matrix

df = pd.read_csv('dados_banco_alpha_modificado.csv')
X = df.drop(columns=['AtrasoPagamento'])
y = df['AtrasoPagamento']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42)
model_dt = DecisionTreeClassifier(random_state=42).fit(X_train, y_train)
pred_dt = model_dt.predict(X_test)

print("=== Relatório de Classificação ===")
print(classification_report(y_test, pred_dt))

print("=== Matriz de Confusão ===")
print(confusion_matrix(y_test, pred_dt))

Aula 6 – Ensembles & Otimização de Hiperparâmetros

Aumento da capacidade preditiva com Random Forest e busca exaustiva via GridSearchCV.


import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

df = pd.read_csv('dados_banco_alpha_modificado.csv')
X = df.drop(columns=['AtrasoPagamento'])
y = df['AtrasoPagamento']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=42)

rf = RandomForestClassifier(n_estimators=50, random_state=42)
rf.fit(X_train, y_train)

importances = pd.Series(rf.feature_importances_, index=X.columns).sort_values(ascending=False)
print("=== Relevância das Variáveis no Ensemble ===")
print(importances)

Simulador Python Interativo (In-Browser)

Execução real de código Python com pandas e scikit-learn diretamente no seu navegador via WebAssembly.

Carregando motor Python e bibliotecas de Data Science... Aguarde.
Aguardando execução...

Central de Downloads & Recursos

Baixe o conjunto de dados sintetizado do Banco Alpha e notebooks para execução local.


Dataset CSV Modificado

Base com variáveis originais e calculadas (Idade, RendaMensal, PontuacaoCredito, NumEmprestimos, TaxaUsoCredito, AtrasoPagamento).

Notebook .ipynb Completo

Jupyter Notebook com todo o roteiro prático, Feature Engineering, Modelagem e Avaliação.