Projet de Fin d'Études (PFE)
Étude comparative des méthodes de sélection de variables et des algorithmes de Machine Learning pour la prédiction de la dépression.
Ce projet a pour objectif de prédire la dépression (DEPRESSED) à partir de données socio-démographiques et comportementales.
Il propose une approche complète et comparative combinant :
- 🔍 7 méthodes de sélection de variables
- 🤖 12 algorithmes de Machine Learning
- ⚖️ Gestion du déséquilibre des classes (SMOTE / SMOTE-NC)
- 🔢 Différentes stratégies d'encodage
Meilleur résultat : Logistic Regression + Boruta → Accuracy 93.08% · F1 92.81% · AUC-ROC 0.98
Données brutes → EDA → Prétraitement → Encodage → SMOTE → Sélection de variables → Modélisation → Évaluation
| Attribut | Détail |
|---|---|
| Variable cible | DEPRESSED (0 = Non déprimé, 1 = Déprimé) |
| Type de données | Socio-démographiques et comportementales |
| Variables | Âge, genre, éducation, stress financier, sommeil, tabac, alcool, anxiété, insomnie, état de santé |
- Gestion des valeurs manquantes (médiane / mode)
- Normalisation des données
- Encodage : One-Hot, Label Encoding, hybride
- SMOTE et SMOTE-NC (données mixtes)
| # | Méthode | Type | Nb variables sélectionnées |
|---|---|---|---|
| 0 | Sans méthode | — | — |
| 1 | RFE | Wrapper | 10 |
| 2 | RFECV | Wrapper | 32 |
| 3 | Stability Selection (Lasso) | Embedded | 26 |
| 4 | SelectKBest (Chi²) | Filtre | 9 |
| 5 | mRMR | Filtre | 10 |
| 6 | Boruta | Wrapper | 31 |
Boruta s'est révélé la méthode la plus efficace, sélectionnant 31 variables pertinentes tout en améliorant les performances sur tous les modèles.
Classiques : Logistic Regression, Decision Tree, Random Forest, SVM, KNN, Naive Bayes
Ensemble : AdaBoost, Gradient Boosting, XGBoost, Bagging, Voting Classifier
| Méthode de sélection | Meilleur modèle | Accuracy | Sensitivity | Precision | F1-score | AUC-ROC |
|---|---|---|---|---|---|---|
| Sans méthode | Logistic Regression | 91.19% | 88.31% | 93.15% | 90.67% | 97.96% |
| Filtre de sélection | LR / AdaBoost | 93.08% | 90.91% | 94.59% | 92.72% | 98.17% |
| RFE | AdaBoost | 91.82% | 89.61% | 93.24% | 91.39% | 96.89% |
| RFECV | AdaBoost | 92.45% | 92.21% | 92.21% | 92.21% | 98.30% |
| Stability Selection | Logistic Regression | 92.45% | 89.61% | 94.52% | 92.00% | 98.05% |
| SelectKBest | Logistic Regression | 91.19% | 88.31% | 93.15% | 90.67% | 97.96% |
| mRMR | Gradient Boosting | 73.58% | 67.53% | 75.36% | 71.23% | 73.42% |
| Boruta | LR / AdaBoost | 93.08% | 92.21% | 93.42% | 92.81% | 98.24% |
⚠️ mRMR affiche des performances nettement inférieures — ce comportement est analysé dans le notebook.
| Après SMOTE (Logistic Regression + Boruta) | Sans SMOTE-NC (Logistic Regression + Boruta) |
![]() |
![]() |
Lecture :
- ✅ 77 vrais négatifs (non déprimés correctement classés)
- ✅ 71 vrais positifs (déprimés correctement détectés)
- ❌ 5 faux positifs / 6 faux négatifs (après SMOTE)
Le modèle est équilibré entre précision et recall — crucial en santé mentale pour ne pas rater de cas réels.
| Logistic Regression + Boruta (avec SMOTE) | Logistic Regression + Boruta (sans SMOTE-NC) |
![]() |
![]() |
AUC = 0.98 → le modèle distingue quasi-parfaitement les cas déprimés des non-déprimés.
La courbe monte très vite vers le coin supérieur gauche, signe d'un excellent classifieur.
L'analyse comparative révèle que Logistic Regression + Boruta est le pipeline optimal :
| Critère | Évaluation |
|---|---|
| 🎯 Performance | Accuracy 93.08%, F1 92.81%, AUC 0.98 |
| 🔒 Stabilité | Résultats reproductibles sur plusieurs runs |
| 🔍 Interprétabilité | Essentielle pour les applications en santé mentale |
| ⚡ Efficacité | Temps d'entraînement minimal vs. modèles ensemble |
# Cloner le dépôt
git clone https://github.com/khalil-ghanam/depression-ml-project.git
cd depression-ml-project
# Installer les dépendances
pip install -r requirements.txt
# Lancer le notebook
jupyter notebook notebook/depression-ml-project/
│
├── notebook/
│ └── depression_prediction.ipynb # Pipeline complet
├── data/
│ └── dataset.csv
├── images/ # Visuels des résultats
│ ├── confusion_matrix_boruta_logistic.png
│ ├── confusion_matrix_boruta_adaboost.png
│ ├── roc_boruta_logistic.png
│ └── roc_boruta_adaboost.png
├── README.md
├── requirements.txt
└── .gitignore
Khalil Ghanam
🎓 Étudiant en Intelligence Artificielle & Facteurs Humains — Université de Caen Normandie
💼 Futur Data Scientist / ML Engineer
📧 ghanamkhalil8@gmail.com
🔗 LinkedIn
Projet sous licence MIT.



