200 lines
9.2 KiB
Markdown
200 lines
9.2 KiB
Markdown
**Source de vérité** : https://git.gregoiremureau.com/openclassroom-ai/oc-p04-credit-scoring
|
|
|
|
```bash
|
|
git clone https://git.gregoiremureau.com/openclassroom-ai/oc-p04-credit-scoring.git
|
|
git clone https://git.gregoiremureau.com/openclassroom-ai/oc-p04-credit-scoring.git
|
|
```
|
|
|
|
Dataset : voir `fetch-data.sh` (hors git si volumineux).
|
|
|
|
# Projet de Scoring Crédit - Prêt à dépenser
|
|
|
|
📘 This project is also available in [English 🇬🇧](./README.md)
|
|
|
|
## 📋 Contexte du projet
|
|
|
|
Ce projet a été réalisé pour **"Prêt à dépenser"**, une société financière spécialisée dans l'octroi de crédits à la consommation. L'entreprise souhaite mettre en place un **outil de scoring crédit** permettant d'évaluer la probabilité qu'un client rembourse son prêt et ainsi automatiser le processus de décision d'octroi de crédit.
|
|
|
|
## 🎯 Objectifs
|
|
|
|
Les objectifs principaux du projet sont :
|
|
|
|
1. **Développer un modèle de scoring** : Créer un modèle prédictif robuste capable d'évaluer le risque de défaut de paiement
|
|
2. **Optimiser le coût métier** : Minimiser les pertes financières en tenant compte du coût réel des faux positifs et faux négatifs
|
|
3. **Assurer l'interprétabilité** : Fournir des explications claires sur les décisions du modèle pour les chargés de relation client
|
|
4. **Gérer le déséquilibre des classes** : Traiter efficacement les données déséquilibrées caractéristiques du domaine du crédit
|
|
|
|
## 📊 Données
|
|
|
|
Les données proviennent du concours Kaggle **"Home Credit Default Risk"** et comprennent :
|
|
- L'historique de crédit des clients
|
|
- Les demandes de prêt précédentes
|
|
- Les informations sur les cartes de crédit
|
|
- Les données de paiement par acomptes
|
|
- Les soldes POS (Point of Sale) et cash
|
|
|
|
**⚠️ Note importante** : Les fichiers de données bruts ne sont pas inclus dans ce dépôt en raison de leur taille importante. Ils sont téléchargeables à l'adresse suivante :
|
|
- **URL** : https://www.kaggle.com/competitions/home-credit-default-risk/data
|
|
|
|
Les fichiers nécessaires incluent :
|
|
- `application_train.csv` / `application_test.csv`
|
|
- `bureau.csv`
|
|
- `previous_application.csv`
|
|
- `credit_card_balance.csv`
|
|
- `installments_payments.csv`
|
|
- `POS_CASH_balance.csv`
|
|
|
|
## 📁 Structure du projet
|
|
|
|
```
|
|
├── P4_01_notebook_analyse_exploratoire_feature_engineering.ipynb
|
|
├── P4_02_notebook_modelisation.ipynb
|
|
├── P4_03_presentation.pptx
|
|
├── explication_client_0.html
|
|
└── explication_client_2.html
|
|
```
|
|
|
|
### 1. `P4_01_notebook_analyse_exploratoire_feature_engineering.ipynb`
|
|
|
|
**Notebook d'Analyse Exploratoire des Données (EDA) et Feature Engineering**
|
|
|
|
Ce notebook contient l'ensemble de la phase de préparation des données :
|
|
|
|
**Exploration des données** :
|
|
- Chargement et analyse des différents fichiers CSV
|
|
- Étude de la distribution de la variable cible (déséquilibre des classes)
|
|
- Analyse des valeurs manquantes et des valeurs atypiques
|
|
- Étude des corrélations entre variables et avec la cible
|
|
|
|
**Enrichissement des données** :
|
|
- Fusion intelligente des différentes sources de données (bureau, previous_application, etc.)
|
|
- Agrégation d'informations provenant de multiples tables
|
|
- Création de variables métier pertinentes (ratios, moyennes, statistiques)
|
|
|
|
**Feature Engineering** :
|
|
- Création de nouvelles caractéristiques basées sur des ratios métiers
|
|
- Encodage des variables catégorielles
|
|
- Imputation des valeurs manquantes
|
|
- Normalisation et standardisation des variables
|
|
- Préparation spécifique pour les modèles tolérant les valeurs manquantes (LightGBM)
|
|
|
|
### 2. `P4_02_notebook_modelisation.ipynb`
|
|
|
|
**Notebook de Modélisation, Optimisation et Interprétation**
|
|
|
|
Ce notebook présente l'intégralité du processus de modélisation :
|
|
|
|
**Modélisation de base** :
|
|
- Régression logistique (baseline)
|
|
- Random Forest
|
|
- Évaluation avec métriques standards (AUC-ROC, précision, recall)
|
|
|
|
**Modélisation avancée** :
|
|
- Entraînement de modèles gradient boosting : XGBoost, LightGBM, CatBoost
|
|
- Gestion du déséquilibre des classes (class_weight, scale_pos_weight)
|
|
- Optimisation des hyperparamètres avec GridSearchCV
|
|
|
|
**Optimisation métier** :
|
|
- Définition d'un **score métier** intégrant le coût des faux positifs et faux négatifs
|
|
- Détermination du **seuil de décision optimal** pour minimiser les pertes financières
|
|
- Analyse de la courbe coût-seuil
|
|
|
|
**Interprétabilité** :
|
|
- **Interprétation globale** : Importance des variables avec SHAP (TreeExplainer)
|
|
- **Interprétation locale** : Explication des prédictions individuelles avec LIME
|
|
- Analyse de l'impact de chaque variable sur les décisions
|
|
|
|
**Simplification du modèle** :
|
|
- Sélection des variables les plus importantes
|
|
- Réduction du nombre de features tout en maintenant les performances (AUC)
|
|
|
|
### 3. `P4_03_presentation.pptx`
|
|
|
|
**Présentation de Soutenance**
|
|
|
|
Cette présentation synthétise :
|
|
- Le contexte métier et les enjeux du scoring crédit
|
|
- La méthodologie de préparation et d'enrichissement des données
|
|
- La comparaison des différents modèles testés
|
|
- Le choix du modèle final et son optimisation métier
|
|
- L'approche d'interprétabilité globale et locale (SHAP et LIME)
|
|
- Les recommandations et perspectives d'amélioration
|
|
|
|
### 4. `explication_client_0.html` et `explication_client_2.html`
|
|
|
|
**Rapports d'Interprétation Locale des Prédictions**
|
|
|
|
Ces rapports HTML interactifs illustrent des exemples concrets d'explications pour des clients individuels :
|
|
- Les prédictions du modèle pour chaque client (probabilité de défaut)
|
|
- Les explications SHAP et/ou LIME détaillant pourquoi le modèle a pris telle décision
|
|
- La contribution de chaque variable à la prédiction finale pour ce client spécifique
|
|
- Des visualisations permettant aux chargés de clientèle de comprendre et justifier les décisions
|
|
- Des exemples de cas d'acceptation et de refus avec leurs justifications
|
|
|
|
Ces fichiers servent de démonstration du système d'interprétabilité locale qui pourrait être déployé en production pour expliquer chaque décision de crédit.
|
|
|
|
## 🛠️ Technologies utilisées
|
|
|
|
- **Python** : Développement et analyse
|
|
- pandas, numpy : manipulation de données
|
|
- scikit-learn : modèles de base, preprocessing, métriques
|
|
- XGBoost, LightGBM, CatBoost : modèles de gradient boosting
|
|
- SHAP : interprétation globale des modèles
|
|
- LIME : interprétation locale des prédictions
|
|
- matplotlib, seaborn, plotly : visualisation
|
|
- **Jupyter Notebook** : développement et documentation
|
|
|
|
## 📈 Méthodologie
|
|
|
|
1. **Exploration et compréhension** : Analyse approfondie des données multi-sources
|
|
2. **Feature Engineering** : Création de variables métier pertinentes par agrégation et transformation
|
|
3. **Modélisation** : Test de plusieurs algorithmes avec gestion du déséquilibre
|
|
4. **Optimisation métier** : Définition et optimisation d'un score métier intégrant les coûts réels
|
|
5. **Interprétabilité** : Mise en place d'outils d'explication globale (SHAP) et locale (LIME)
|
|
6. **Validation** : Évaluation sur données test et vérification de la généralisation
|
|
|
|
## 🎯 Résultats attendus
|
|
|
|
- ✅ Dataset enrichi et prétraité avec nouvelles features métier
|
|
- ✅ Modèle de scoring optimisé selon un critère métier (minimisation des coûts)
|
|
- ✅ Seuil de décision optimal déterminé
|
|
- ✅ Rapports d'interprétabilité globale et locale
|
|
- ✅ Documentation complète pour les utilisateurs finaux
|
|
|
|
## 💡 Points clés du projet
|
|
|
|
### Gestion du déséquilibre des classes
|
|
Le dataset présente un fort déséquilibre entre les bons et mauvais payeurs. Plusieurs techniques ont été mises en œuvre :
|
|
- Utilisation de paramètres `class_weight` et `scale_pos_weight`
|
|
- Optimisation basée sur des métriques appropriées (AUC-ROC, recall, score métier)
|
|
- Ajustement du seuil de décision post-modélisation
|
|
|
|
### Score métier personnalisé
|
|
Plutôt que de se fier uniquement aux métriques classiques, un **score métier** a été défini prenant en compte :
|
|
- Le coût d'un faux positif (refus à tort d'un bon client → perte d'opportunité)
|
|
- Le coût d'un faux négatif (acceptation d'un mauvais payeur → perte financière importante)
|
|
- L'optimisation du seuil de décision pour minimiser le coût total
|
|
|
|
### Interprétabilité
|
|
Deux niveaux d'interprétation ont été implémentés :
|
|
- **Globale (SHAP)** : Quelles variables sont les plus importantes pour le modèle en général ?
|
|
- **Locale (LIME)** : Pourquoi le modèle a-t-il pris cette décision pour ce client spécifique ?
|
|
|
|
Cette double approche permet aux chargés de relation client de comprendre et d'expliquer les décisions aux demandeurs de crédit.
|
|
|
|
## 🎓 Compétences développées
|
|
|
|
- Préparation et enrichissement de données multi-sources complexes
|
|
- Feature engineering orienté métier dans le domaine financier
|
|
- Modélisation avec gestion du déséquilibre des classes
|
|
- Optimisation basée sur des critères métier (coût/bénéfice)
|
|
- Interprétabilité des modèles de machine learning (SHAP, LIME)
|
|
- Communication des résultats techniques à des audiences métier
|
|
|
|
## 👤 Auteur
|
|
|
|
**Grégoire Mureau**
|
|
|
|
---
|
|
|
|
*Ce projet illustre la démarche complète de data science appliquée au scoring crédit : de la préparation des données à l'optimisation métier, en passant par l'interprétabilité des modèles.*
|