Dashboard publicada: fraud-detection-cteia.streamlit.app
Projeto acadêmico da disciplina de Projetos de IA para detecção de fraude em transações financeiras sintéticas. O foco do repositório é avaliar modelos supervisionados para classificação binária em um cenário fortemente desbalanceado, com atenção especial a:
- recall e precision da classe fraude;
- F1-score e AUPRC;
- custo operacional simulado de falsos positivos e falsos negativos;
- tempo de inferência por transação;
- qualidade probabilística após calibração.
O dataset principal é o PaySim Synthetic Financial Dataset, disponibilizado sob licença CC BY-SA 4.0 e usado como base experimental para estudar fraude financeira em um contexto sintético.
Este repositório organiza o fluxo experimental em três notebooks principais:
-
notebooks/eda_fraud_detection_refatorado.ipynb
- baixa o dataset via
kagglehub; - explora distribuição das classes;
- identifica padrões gerais de fraude e inconsistências de saldo.
- baixa o dataset via
-
notebooks/preprocessamento_fraud_detection.ipynb
- remove colunas de alto risco de leakage/cardinalidade;
- cria features derivadas como
log_amounte indicadores de erro de saldo; - aplica divisão temporal por
step; - salva os conjuntos processados em
data/processado.
-
notebooks/modelagem_fraud_detection_refatorado_limpo.ipynb
- carrega os datasets processados;
- compara baselines e modelos como Regressão Logística, Random Forest, XGBoost e LightGBM;
- compara estratégias com e sem SMOTE;
- ajusta threshold operacional;
- executa análise de calibração de probabilidade;
- salva resultados e artefatos finais em
data/modelagem.
O fluxo de modelagem foi executado com sucesso no ambiente configurado do projeto. Os resultados salvos em disco indicam que:
- o cenário operacional final é
sem_pos_transacao; - o melhor modelo por equilíbrio de custo total foi
LightGBM + SMOTE; - o melhor modelo em ranking de F1 do cenário operacional foi
LightGBM scale_pos_weight; - a calibração de probabilidade melhorou a qualidade das probabilidades para os modelos de gradient boosting.
| Artefato | Descrição |
|---|---|
resultado_modelo_final.csv |
linha final do melhor modelo escolhido pelo critério operacional |
tabela_principal_modelos.csv |
comparação detalhada entre modelos |
resultados_calibracao.csv |
análise de calibração de probabilidades |
metadata_modelagem.json |
metadados de execução e caminhos dos outputs |
melhor_modelo.joblib |
modelo treinado persistido para uso posterior |
fraud-detection/
├── README.md
├── requirements.txt
├── .gitignore
├── especificacao-formal-projeto.md
├── notebooks/
│ ├── eda_fraud_detection_refatorado.ipynb
│ ├── preprocessamento_fraud_detection.ipynb
│ └── modelagem_fraud_detection_refatorado_limpo.ipynb
├── app/
│ ├── streamlit_app.py
│ ├── pages/
│ ├── utils/
│ └── data/exemplo/
├── scripts/
│ └── exportar_artefatos_dashboard.py
├── docs/
│ ├── README.md
│ ├── 01-visao-geral.md
│ ├── 02-pipeline-execucao.md
│ ├── 03-resultados-e-artefatos.md
│ └── 04-dashboard.md
- Python 3.11
- dependências listadas em requirements.txt
- credenciais válidas do Kaggle para baixar o dataset via
kagglehub
eda_fraud_detection_refatorado.ipynbpreprocessamento_fraud_detection.ipynbmodelagem_fraud_detection_refatorado_limpo.ipynb
pip install -r requirements.txt
streamlit run app/streamlit_app.pyA dashboard consome os resultados já salvos e não treina modelos. Ela abre
mesmo sem nenhum artefato em disco, usando o seed de demonstração versionado em
app/data/exemplo e sinalizando isso na barra lateral. Assim que os notebooks
forem executados, os artefatos reais passam a ser usados automaticamente.
Para gerar os arquivos leves de curva Precision-Recall e de sweep de threshold, que habilitam o slider de threshold do simulador de custo:
python scripts/exportar_artefatos_dashboard.pyA dashboard está publicada no Streamlit Community Cloud em
fraud-detection-cteia.streamlit.app,
com os números reais da execução dos notebooks. As dependências do deploy ficam
em app/requirements.txt, sem as bibliotecas de treino.
Detalhes de arquitetura, schema dos dados, estratégia de cache e passos de publicação em docs/04-dashboard.md.
Os resultados esperados são gerados em pastas de saída temporárias e não devem ser versionadas:
data/processado/data/modelagem/notebooks/data/modelagem/quando a execução é disparada a partir do contexto do notebook
- Python
- pandas
- numpy
- scikit-learn
- XGBoost
- LightGBM
- imbalanced-learn
- matplotlib/seaborn
- joblib
- kagglehub
- Streamlit + Altair (dashboard)
O trabalho usa uma abordagem experimental em três etapas:
- exploração e diagnóstico do dataset;
- pré-processamento e split temporal;
- comparação de modelos e seleção operacional.
A avaliação prioriza métricas da classe positiva, especialmente recall, precision, F1 e AUPRC. O custo operacional também é levado em conta por meio de uma matriz de custo configurável, com foco em reduzir falsos negativos e manter tempo de inferência viável.
- o dataset é sintético;
- os resultados não equivalem a validação com dados reais do Pix ou de uma instituição financeira;
- o projeto é acadêmico e experimental;
- o cenário mais “realista” foi aproximado por split temporal, mas ainda sem contexto operacional completo de produção.
Para documentação mais aprofundada, consulte:
- docs/README.md
- docs/01-visao-geral.md
- docs/02-pipeline-execucao.md
- docs/03-resultados-e-artefatos.md
- especificacao-formal-projeto.md
| Entregável | Status |
|---|---|
| EDA | Concluído |
| Pré-processamento | Concluído |
| Modelagem e avaliação | Concluído |
| Calibração de probabilidade | Concluído |
| Dashboard/visualização final | Concluído |
| Relatório consolidado | Em consolidação |