Este projeto faz parte da especialização em Machine Learning da FIAP e tem como objetivo desenvolver um sistema de detecção de fraudes para transações de Mobile Money utilizando o dataset PaySim. O PaySim é um simulador de pagamentos móveis baseado em uma amostra de transações reais extraídas de logs financeiros de uma implementação de mobile money.
- Objetivo Principal: Desenvolver um modelo de Machine Learning capaz de detectar fraudes em transações financeiras com alta precisão (≥90%) e recall satisfatório (≥80%)
- Objetivo Secundário: Superar a regra atual (
isFlaggedFraud) que apresenta recall extremamente baixo (~0,2%) - Objetivo Operacional: Criar um pipeline de detecção que possa ser implementado em ambiente de produção
O dataset contém 2.770.409 transações com as seguintes características:
- CASH_IN: Depósito de dinheiro
- CASH_OUT: Saque de dinheiro (
⚠️ associado a fraudes) - DEBIT: Débito em conta
- PAYMENT: Pagamento
- TRANSFER: Transferência (
⚠️ associado a fraudes)
step: Unidade de tempo (1 step = 1 hora, simulação de 30 dias = 744 steps)type: Tipo da transaçãoamount: Valor da transaçãonameOrig: ID do cliente que originou a transaçãooldbalanceOrg: Saldo inicial da conta origemnewbalanceOrig: Saldo final da conta origemnameDest: ID do cliente destinatáriooldbalanceDest: Saldo inicial da conta destinonewbalanceDest: Saldo final da conta destinoisFraud: Target - Indica se a transação é fraudulentaisFlaggedFraud: Flag da regra atual de detecção
- Recall crítico: Apenas 16 fraudes detectadas de 8.213 fraudes reais (~0,2%)
- Cobertura insuficiente: A regra atual não é adequada como gate de fraude
- Concentração por tipo: Fraudes ocorrem predominantemente em
TRANSFEReCASH_OUT - Padrão temporal: Maioria das transações ocorre em step = 1 hora
- Cadeias suspeitas: Padrão
TRANSFER → CASH_OUTpara o mesmo destinatário
- Treino: 2.063.665 transações
- Teste: 706.744 transações
Logistic Regression
- ROC AUC: 0,9812
- PR AUC: 0,6775 (métrica principal para classe desbalanceada)
Random Forest @ threshold 0,5
- Precision: 95,15%
- Recall: 83,62%
- F1-Score: 89,01%
- Matriz de Confusão: TN=702.067, FP=191, FN=735, TP=3.751
- Logistic Regression: threshold ≈ 0,9961, recall ≈ 46,08%
- Random Forest: threshold ≈ 0,3093, recall ≈ 85,33% ✅
- Implementação de modelos baseline (LR, RF)
- Definição de métricas (PR AUC como principal)
- Ajuste de threshold para precision ≥ 90%
- Análise de erros por valor da transação
- Relatório dos top 20 falsos negativos de maior valor
- Deltas de balanço: Inconsistências entre saldos
- Relações com saldo: Proporções amount/saldo
- Janelas temporais: Agregações por entidade (24h/48h/72h)
- Padrões de cadeia: Detecção TRANSFER → CASH_OUT
- Sinais de rede: Análise de grafos (opcional)
- Teste de modelos (LightGBM, XGBoost, BalancedRandomForest)
- Calibração de probabilidades (Isotonic/Platt)
- Validação temporal robusta
- Otimização de threshold por custo
- Transformar
isFlaggedFraudem feature - Implementar listas de observação
- Sistema de priorização para revisão humana
- Pipeline de produção
- Painel de monitoramento
- Detecção de drift
- A/B testing de thresholds
- Sistema de explainability
- Python 3.13.2
- Pandas: Manipulação de dados
- Scikit-learn: Modelos de Machine Learning
- NumPy: Computação numérica
- Matplotlib/Seaborn: Visualização
- Jupyter Notebook: Desenvolvimento e análise
fraudDetection/
├── AIML Dataset.csv # Dataset PaySim
├── EDA_Fraude_MobileMoney_PaySim.ipynb # Notebook principal de análise
├── README.md # Este arquivo
└── .venv/ # Ambiente virtual Python
- Clone o repositório
git clone [repository-url]
cd fraudDetection- Configure o ambiente Python
# O ambiente virtual já está configurado
C:/Users/argus/workspace/fraudDetection/.venv/Scripts/python.exe --version- Instale as dependências
pip install pandas numpy scikit-learn matplotlib seaborn jupyter- Execute o notebook
jupyter notebook EDA_Fraude_MobileMoney_PaySim.ipynb- PR AUC: Área sob a curva Precision-Recall (ideal para classes desbalanceadas)
- Precision ≥ 90%: Minimizar falsos positivos
- Recall ≥ 80%: Capturar a maioria das fraudes
- F1-Score: Harmônica entre precision e recall
- ROC AUC: Para comparação com literatura
- Matriz de Confusão: Análise detalhada de erros
- PR AUC é mais informativa que ROC AUC para dados desbalanceados
- Threshold padrão (0,5) raramente é ótimo - necessário ajuste por custo
- Random Forest supera Logistic Regression no trade-off precision/recall
- Fraudes concentram-se em tipos específicos (TRANSFER/CASH_OUT)
- Regra atual deve ser feature, não decisor devido ao baixo recall
Projeto desenvolvido como parte da especialização em Machine Learning da FIAP.
- PaySim Dataset Documentation
- PR AUC vs ROC AUC for Imbalanced Classes
- Threshold Selection and Cost-Sensitive Learning
Este projeto é desenvolvido para fins acadêmicos como parte da especialização em Machine Learning da FIAP.
Status: 🔄 Em desenvolvimento | Fase Atual: Baseline implementado | Próxima: Feature Engineering