Detecção de Fraudes em Transações com Machine Learning
- #Python
#Python #DetecçãoDeFraudes #XGBoost #RandomForest #SMOTE #SHAP #Pipeline #sklearn
O problema: dados desbalanceados e Feature Engineering
A detecção de fraudes bancárias é um problema real de Machine Learning com dados extremamente desbalanceados — no dataset creditcard.csv, fraudes representam menos de 0,2% das transações. Um modelo ingênuo que classifica tudo como 'normal' atinge 99,8% de acurácia, mas tem Recall zero para fraudes — completamente inútil. O primeiro passo é o Feature Engineering: criar Amount_log com np.log1p() reduz a escala de valores muito altos; StandardScaler padroniza os dados com média zero e desvio padrão 1. train_test_split com stratify=y garante que a proporção de fraudes seja mantida nos conjuntos de treino e teste.
Avaliação real do modelo: curva ROC e Precision-Recall
Após treinar uma Regressão Logística base, classification_report() revela a verdadeira performance por classe. A Acurácia de 100% é enganosa — os valores de Precisão, Recall e F1-Score para a classe de fraudes mostram a realidade. A Curva ROC (roc_curve) plota a taxa de Verdadeiros Positivos contra Falsos Positivos em diferentes limiares. O AUC (roc_auc_score) resume em um único número: quanto mais próximo de 1, melhor o modelo discrimina. A Curva Precision-Recall é ainda mais informativa em dados desbalanceados: à medida que o Recall aumenta (mais fraudes detectadas), a Precisão cai (mais falsos alarmes). O equilíbrio correto depende do custo de negócio.
Técnicas de balanceamento: Undersampling e SMOTE
Para lidar com o desbalanceamento extremo, duas técnicas são aplicadas:
- Undersampling reduz a classe majoritária (transações normais) para o tamanho da classe minoritária (fraudes), usando df.sample(len(fraudes));
- Oversampling com SMOTE (Synthetic Minority Over-sampling Technique) cria exemplos sintéticos da classe de fraudes usando a biblioteca imblearn: smote.fit_resample(X, y) retorna um dataset balanceado.
A escolha entre as duas depende do volume de dados disponível: Undersampling perde informação; SMOTE pode introduzir ruído. Na prática, SMOTE combinado com modelos robustos gera os melhores resultados.
Modelos avançados: Random Forest, XGBoost e Explicabilidade com SHAP
O Random Forest com class_weight='balanced' e max_depth=10 para evitar overfitting atinge Recall de 76% na detecção de fraudes. Um Pipeline do sklearn organiza o fluxo: StandardScaler → LogisticRegression, garantindo que o escalonamento seja aplicado corretamente a treino e teste.
O Threshold ajustável (threshold=0.3) torna o modelo mais sensível: valores de probabilidade acima de 0.3 são classificados como fraude.
O XGBoost com scale_pos_weight eleva o Recall para 78% com 93% de Precisão.
GridSearchCV com scoring='recall' testa automaticamente combinações de hiperparâmetros.
Por fim, a biblioteca SHAP gera gráficos de importância de variáveis interpretáveis, mostrando quais features mais influenciaram cada previsão individual — essencial para auditoria, regulamentação e transparência em sistemas antifraude.


