Projet de Fin d'Année (Data Science) réalisé à l'ESSAI, Université de Carthage.
Ce projet estime la probabilité qu'une police d'assurance automobile soit sinistrée, à partir des caractéristiques du contrat, de l'assuré, de sa zone géographique et de son véhicule. Il suit une démarche actuarielle : tests statistiques, construction de classes de risque, puis régression logistique interprétable. Les résultats sont comparés à deux modèles ensemblistes, Random Forest et XGBoost.
Dans quelle mesure les caractéristiques d'un contrat, de l'assuré et de son véhicule permettent-elles de prédire la survenance d'un sinistre, et quels facteurs expliquent les écarts de risque entre assurés ?
| Caractéristique | Valeur |
|---|---|
| Source | Fournies par l'enseignant encadrant (PFA) |
| Observations | 58 592 polices |
| Variables | 41 (contrat, assuré, région, véhicule, équipements de sécurité) |
| Cible | claim_status : 1 si la police est sinistrée, 0 sinon |
| Taux de sinistre | 6,40 % (classes fortement déséquilibrées) |
Les données ont été fournies par l'enseignant encadrant dans le cadre du PFA. Elles sont incluses dans le dépôt, dans data/Insurance-claims-data-1copie.csv. Le jeu de données est anonymisé : il ne contient aucun nom ni aucune adresse, seulement un identifiant de police fictif et des codes régionaux.
- Contrôle qualité et analyse de la cible : analyse du déséquilibre des classes.
- Tests d'association : Chi² et V de Cramér pour les variables catégorielles ; Mann-Whitney U et Kruskal-Wallis pour les variables continues, avec correction de Benjamini-Hochberg.
- Sélection de variables : croisement des corrélations, des tests et de la pertinence métier, qui aboutit à 11 variables.
- Construction des classes de risque : discrétisation et regroupement des modalités.
- Choix des références et encodage : la modalité la plus risquée de chaque variable sert de référence, puis encodage one-hot sans cette référence (25 indicatrices).
- Modélisation : régression logistique pénalisée (L1/L2), XGBoost et Random Forest, optimisés par GridSearchCV avec une validation croisée stratifiée à 5 plis (critère : AUC-ROC).
| Modèle | AUC-ROC | Brier Score |
|---|---|---|
| Régression logistique (L1, C = 0,1) | 0,612 | 0,243 |
| XGBoost | 0,625 | 0,241 |
| Random Forest | 0,617 | 0,240 |
- Facteur dominant : l'ancienneté du contrat. Le taux de sinistre passe de 3,6 % à 8,5 % selon les classes, et l'odds ratio des contrats les plus récents vaut 0,43.
- Autres facteurs : les véhicules de plus de 2 ans, la zone R5 et les assurés de moins de 39 ans présentent un risque plus faible.
- Comparaison des modèles : XGBoost est le plus discriminant, mais la régression logistique en est très proche (–0,013 d'AUC) et reste préférable quand le tarif doit être justifié.
Limites : les probabilités ne sont pas calibrées, à cause de la pondération des classes. La base ne contient ni exposition ni variables comportementales (kilométrage, historique de sinistres, bonus-malus). Le détail figure dans les sections Discussion et Conclusion du notebook.
.
├── pfa_sinistre_rapport.ipynb # Notebook complet (rapport + code)
├── data/
│ └── Insurance-claims-data-1copie.csv # Données brutes
├── requirements.txt
├── .gitignore
└── README.md
git clone https://github.com/Asma2201/<nom-du-repo>.git
cd <nom-du-repo>
python -m venv .venv
source .venv/bin/activate # Windows : .venv\Scripts\activate
pip install -r requirements.txt
jupyter notebook pfa_sinistre_rapport.ipynbLe notebook lit les données via
PATH = "data/Insurance-claims-data-1copie.csv".
Les recherches sur grille de XGBoost et de Random Forest peuvent prendre plus de 15 minutes selon la machine.
- Calibrer les probabilités (méthode de Platt ou régression isotonique).
- Optimiser le seuil de décision selon une fonction de coût métier.
- Estimer un modèle de fréquence de Poisson avec exposition, puis un modèle de sévérité pour obtenir la prime pure.
- Interpréter les modèles ensemblistes avec les valeurs SHAP.
Asma Allaigui, élève ingénieure en Data Science à l'ESSAI GitHub : Asma2201