Système de détection de fraudes bancaires basé sur le Machine Learning, utilisant des algorithmes avancés (Random Forest et XGBoost) pour identifier automatiquement les transactions frauduleuses. Le projet met l'accent sur la gestion efficace des données déséquilibrées et l'interprétabilité des résultats.
Le système intègre des techniques avancées de feature engineering temporel, une gestion robuste des valeurs aberrantes, et une optimisation automatique des hyperparamètres. Le pipeline de données est entièrement automatisé, de l'ingestion à la prédiction.
-
Preprocessing Avancé
- Normalisation robuste des features numériques
- Gestion intelligente des valeurs manquantes
- Exclusion automatique des colonnes sensibles du preprocessing
-
Feature Engineering Sophistiqué
- Features temporelles (heure, jour, mois)
- Z-score et déviations par montant
- Analyse de fréquence des transactions
- Scores de risque basés sur l'historique
-
Gestion du Déséquilibre
- Technique SMOTE pour le rééchantillonnage
- Validation stratifiée pour préserver les proportions
- Métriques adaptées aux classes déséquilibrées
-
Performance et Production
- Pipeline de données automatisé
- API REST pour les prédictions en temps réel
- Sauvegarde des transformations pour la production
- Monitoring des performances
- Clonez le repository :
git clone https://github.com/codeGeekPro/fraud-detection-ml.git
cd fraud-detection-ml- Créez un environnement virtuel :
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows- Installez les dépendances :
pip install -r requirements.txt- Préparez l'environnement :
# Créez les dossiers nécessaires
mkdir -p data/raw data/processed models/trained logs
# Téléchargez le dataset (si vous avez Kaggle CLI configuré)
kaggle datasets download -d mlg-ulb/creditcardfraud -p data/raw/
unzip data/raw/creditcardfraud.zip -d data/raw/- Configurez le projet :
# Vérifiez et ajustez la configuration dans config/config.yaml
# Les paramètres par défaut sont optimisés pour les performances
## 💻 Structure du Projet
fraud-detection-ml/
├── config/ # Fichiers de configuration
│ └── config.yaml # Configuration centralisée
├── data/ # Données du projet
│ ├── external/ # Données externes complémentaires
│ ├── processed/ # Données préprocessées
│ └── raw/ # Données brutes
├── logs/ # Journaux d'exécution
├── models/ # Modèles et transformations
│ ├── metadata/ # Métadonnées des modèles
│ └── trained/ # Modèles entraînés
├── notebooks/ # Notebooks Jupyter pour l'analyse
│ ├── 01_eda_fraud_analysis.ipynb # Analyse exploratoire
│ ├── 02_feature_engineering.ipynb # Développement features
│ ├── 03_model_training.ipynb # Tests des modèles
│ └── 04_model_evaluation.ipynb # Évaluation détaillée
├── scripts/ # Scripts d'exécution
│ ├── run_all.py # Script principal pour tout lancer
│ ├── predict.py # Prédictions en production
│ └── train_models.py # Entraînement des modèles
├── src/ # Code source principal
│ ├── api/ # API REST
│ │ ├── app.py # Application FastAPI
│ │ └── prediction_service.py
│ ├── data/ # Gestion des données
│ │ ├── data_loader.py
│ │ ├── feature_engineer.py
│ │ └── preprocessor.py
│ ├── models/ # Implémentation modèles
│ │ ├── base_model.py
│ │ ├── ensemble_model.py
│ │ ├── random_forest_model.py
│ │ └── xgboost_model.py
│ └── utils/ # Utilitaires
│ ├── helpers.py
│ ├── metrics.py
│ └── visualization.py
└── tests/ # Tests automatisés
├── test_api.py
├── test_data_processing.py
└── test_models.py# Pipeline complet en une commande
python scripts/run_all.py --all
# Avec l'API
python scripts/run_all.py --all --api
# Vérification de l'environnement
python scripts/run_all.py --checkpython scripts/run_all.py --checkVérifie Python 3.8+, les dépendances, et les fichiers essentiels.
python scripts/run_all.py --trainLance l'entraînement complet avec Random Forest et XGBoost.
python scripts/run_all.py --evaluateÉvalue les modèles et génère les rapports de performance.
python scripts/run_all.py --allExécute entraînement + évaluation + génération de rapports.
# API seule
python scripts/run_all.py --api
# API sur un port spécifique
python scripts/run_all.py --api --host 127.0.0.1 --port 8080python scripts/run_all.py --all --strictArrête le pipeline en cas d'erreur (utile pour CI/CD).
python scripts/run_all.py --all --verboseAffiche tous les détails d'exécution.
# Évaluation seulement
python scripts/run_all.py --evaluate
# Entraînement + rapport seulement
python scripts/run_all.py --train --report
# Tout sauf l'API
python scripts/run_all.py --allExplorez les caractéristiques des transactions et la distribution des fraudes :
jupyter notebook notebooks/01_eda_fraud_analysis.ipynbDéveloppez et testez de nouvelles features :
jupyter notebook notebooks/02_feature_engineering.ipynbLancez l'entraînement complet avec validation croisée :
python scripts/train_models.pyAnalysez les performances détaillées des modèles :
jupyter notebook notebooks/04_model_evaluation.ipynbLancez l'API pour les prédictions en temps réel :
python src/api/app.pyimport requests
# Préparez les données de la transaction
transaction = {
"amount": 123.45,
"time": 43200, # 12:00 (midi)
"v1": -1.3598071336738172,
"v2": -0.0727811733098497,
"v3": 2.536346738618042,
# ... autres features V1-V28
}
# Envoyez la requête
response = requests.post(
"http://localhost:8000/predict",
json={"transaction": transaction}
)
# Analysez la réponse
result = response.json()
print(f"Probabilité de fraude : {result['fraud_probability']:.2%}")
print(f"Prédiction : {'Frauduleuse' if result['is_fraud'] else 'Légitime'}")
print(f"Temps de réponse : {result['response_time_ms']:.2f}ms")Les modèles ont été évalués en utilisant la validation croisée à 5 plis :
- Precision-Recall AUC : 0.9999992 ± 0.0000011
- Excellente gestion des classes déséquilibrées
- Robuste aux outliers
- Precision-Recall AUC : 0.9999869 ± 0.0000147
- Performance légèrement inférieure au Random Forest
- Temps d'entraînement plus court
Les contributions sont les bienvenues ! Consultez CONTRIBUTING.md pour les directives.
- Python 3.8+ - Langage de programmation principal
- scikit-learn - Algorithmes de ML et preprocessing
- XGBoost - Modèle de boosting
- pandas - Manipulation de données
- numpy - Calculs numériques
- FastAPI - API REST
- pytest - Tests unitaires
- black - Formatage de code
- mypy - Vérification des types
- logging - Journalisation structurée
- YAML - Configuration externalisée
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
Code Geek Pro - GitHub
Lien du projet : https://github.com/codeGeekPro/fraud-detection-ml