Projet de recherche en actuariat comparant les performances de CatBoost (Ordered Boosting) et XGBoost sur le dataset freMTPL2freq pour la tarification automobile.
Projet Catboost/
├── Import dataset.r # Téléchargement du dataset brut
├── data_cleaning.py # Nettoyage et préparation des données
├── hyperparam_tuning.py # Optimisation bayésienne (Hyperopt)
├── final_benchmark.py # Benchmark final et génération des résultats
└── README.md
# Import dataset.r
source("Import dataset.r")Télécharge le dataset freMTPL2freq depuis le package R CASdatasets.
python data_cleaning.pyApplique les règles de nettoyage actuarielles :
- Filtrage :
Exposure >= 0.01 - Clipping :
ClaimNb [0,3],DrivAge [18,90],VehAge [0,20],BonusMalus [50,150] - Transformations :
LogDensity,LogExposure(offset Poisson) - Split 80/20 Train/Test
Sorties : train_freMTPL2freq.csv, test_freMTPL2freq.csv
python hyperparam_tuning.pyRecherche bayésienne (TPE) avec validation croisée 5-Fold :
- CatBoost : Ordered Boosting + Target Statistics
- XGBoost OHE : One-Hot Encoding
- XGBoost TE : Target Encoding (K-Fold anti-fuite)
Configuration : 30 évaluations par modèle.
note :ce modèle prend du temps pour tourner, les resultats sont déja reportées dans fianl_banchmark.py, vous pouvez le relancer si vous le souhaitez mais il faudra prévoir quelques heures de calcul.
python final_benchmark.pyEntraîne les modèles avec les hyperparamètres optimaux et génère :
- Métriques : Déviance de Poisson, Gini Normalisé, Prediction Shift
- Graphiques : Courbe de Lorenz, SHAP Summary, Permutation Importance
| Modèle | CV Deviance | Hyperparamètres |
|---|---|---|
| XGBoost TE | 0.23820 | lr=0.125, depth=4, λ=9.93 |
| CatBoost | 0.23825 | lr=0.202, depth=6, L2=6.87 |
| XGBoost OHE | 0.23829 | lr=0.060, depth=6, λ=6.97 |
- BonusMalus (0.026)
- DrivAge (0.004)
- VehAge (0.002)
- Density (0.001)
catboost>=1.2
xgboost>=2.0
scikit-learn>=1.3
hyperopt>=0.2
shap>=0.44
category_encoders>=2.6
pandas>=2.0
numpy>=1.24
matplotlib>=3.7