01 75 60 34 00 | conseil@ensae.fr | Prenez RDV |

Classification supervisée : analyse discriminante, régression logistique et arbres avec Python

MéTHODES STATISTIQUES 3 jours (18 h) Intermédiaire 1 700 € HT
Classification supervisée : analyse discriminante, régression logistique et arbres avec Python

Objectifs pédagogiques

  • Connaître et savoir mettre en œuvre les méthodes paramétriques de référence permettant de répondre au problème de discrimination (également appelé classification supervisée) : analyse discriminante, régression logistique.
  • Connaître et savoir mettre en œuvre les méthodes d’arbres (CART et random forest) dans le cadre de la classification supervisée.
  • Être capable de définir et de calculer des critères permettant de comparer les performances de modèles.

Programme détaillé

La formation traite de modèles adaptés à la prévision de phénomènes qualitatifs en fonction de variables quantitatives et qualitatives.

Présentation du problème de la classification supervisée 3h

  • Cadre statistique
  • Critères de performance
  • Approche scoring

Analyse discriminante linéaire 3h

  • Approche descriptive
  • Approche prédictive
  • Analyse discriminante quadratique
  • Applications sur cas pratiques

Régression logistique 6h

  • Présentation du modèle
  • Estimation des paramètres et tests
  • Sélection de modèle
  • Introduction aux méthodes pénalisées (ridge et lasso)
  • Applications sur cas pratiques

Arbres 6h

  • Méthodologie CART (arbres de décision)
  • Agrégation (bagging) d’arbres : forêts aléatoires
  • Applications sur cas pratiques

Public visé

Data analysts, chargés d’études statistiques, data scientists

Prérequis

Approche pédagogique

Moyens pédagogiques
Exposé théorique de concepts Applications pratiques sur ordinateur Échanges sur les pratiques et expériences des participants Temps de questions / réponses Exercices, quiz, etc.
Méthodes pédagogiques
Méthode expositive Méthode active

Classification supervisée en Python : scikit-learn ou statsmodels ?

Deux bibliothèques couvrent l’essentiel des méthodes de classification supervisée en Python, avec deux philosophies différentes : scikit-learn, pensée pour prédire, et statsmodels, pensée pour expliquer et tester. Savoir laquelle répond à la question posée évite bien des contresens.

scikit-learn : une même grammaire pour toutes les méthodes

Tous les modèles y partagent la même interface fit / predict, ce qui rend leur comparaison directe :

  • LinearDiscriminantAnalysis et QuadraticDiscriminantAnalysis pour l’analyse discriminante ;
  • LogisticRegression pour la régression logistique ;
  • DecisionTreeClassifier (arbres de type CART) et RandomForestClassifier (forêts aléatoires) ;
  • sklearn.metrics pour les critères de performance : matrice de confusion, courbe ROC, AUC.
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import roc_auc_score

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
rf = RandomForestClassifier(n_estimators=500, random_state=0).fit(X_train, y_train)
roc_auc_score(y_test, rf.predict_proba(X_test)[:, 1])

statsmodels : coefficients, écarts-types et tests

Pour lire un modèle en statisticien (significativité des coefficients, odds-ratios, comparaison de modèles emboîtés), statsmodels produit une sortie comparable à celles de R ou de SAS :

import numpy as np
import statsmodels.formula.api as smf

logit = smf.logit("defaut ~ age + revenu + C(statut)", data=df).fit()
print(logit.summary())
np.exp(logit.params)   # odds-ratios

Un piège classique

La LogisticRegression de scikit-learn applique par défaut une pénalisation L2 (paramètre C=1.0). Ses coefficients ne sont donc pas ceux du maximum de vraisemblance et diffèrent de ceux obtenus avec statsmodels, R ou SAS sur les mêmes données. Ce n’est pas un défaut : c’est un choix orienté vers la prédiction. Il rappelle que la régression logistique « classique » et ses versions pénalisées (ridge, lasso) sont deux outils voisins, à ne pas confondre au moment d’interpréter un coefficient.

Les méthodes d’agrégation par boosting et les SVM relèvent d’une autre formation : Machine learning : bagging, gradient boosting, SVM avec Python.