Skip to content

About

Projet de data science appliqué à la prédiction de la dépression avec optimisation des modèles et des variables

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧠 Prédiction de la Dépression par Machine Learning

Python Scikit-learn XGBoost Accuracy AUC--ROC License

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.


🎯 Aperçu du projet

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


⚙️ Pipeline du projet

Données brutes → EDA → Prétraitement → Encodage → SMOTE → Sélection de variables → Modélisation → Évaluation

📊 Dataset

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é

🔬 Méthodologie

1. Prétraitement des données

  • Gestion des valeurs manquantes (médiane / mode)
  • Normalisation des données
  • Encodage : One-Hot, Label Encoding, hybride

2. Gestion du déséquilibre des classes

  • SMOTE et SMOTE-NC (données mixtes)

3. Sélection de variables

# 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.

4. Modèles testés

Classiques : Logistic Regression, Decision Tree, Random Forest, SVM, KNN, Naive Bayes

Ensemble : AdaBoost, Gradient Boosting, XGBoost, Bagging, Voting Classifier


📈 Résultats

Tableau comparatif complet (meilleur pipeline par méthode)

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.


🏆 Meilleur pipeline : Logistic Regression + Boruta

Matrice de confusion

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.


Courbe ROC (AUC = 0.98)

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.


📌 Conclusion

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

🚀 Installation & Utilisation

# 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/

📁 Structure du projet

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

🛠️ Technologies utilisées

Python Pandas NumPy Scikit-learn XGBoost Jupyter


👤 Auteur

Khalil Ghanam
🎓 Étudiant en Intelligence Artificielle & Facteurs Humains — Université de Caen Normandie
💼 Futur Data Scientist / ML Engineer
📧 ghanamkhalil8@gmail.com
🔗 LinkedIn


📜 Licence

Projet sous licence MIT.

About

Projet de data science appliqué à la prédiction de la dépression avec optimisation des modèles et des variables

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages