Aller au contenu principal

Machine Learning 3 — Classification

:::tip Notebook Kaggle Le code complet et exécutable de ce chapitre est sur Kaggle : Ouvrir →

Versions anglaise et chinoise disponibles depuis la page d'accueil. :::

Après la régression, attaquons la classification : prédire une catégorie plutôt qu'une valeur numérique. Survie au Titanic, diagnostic médical, espèce de manchot — autant de problèmes où la sortie est discrète.

Pourquoi ce chapitre ?

Vous y découvrez :

  • le classifieur Naive Bayes et la probabilité empirique ;
  • la matrice de confusion et les métriques propres à la classification (précision, rappel, F1) ;
  • le rôle du seuil de décision et les courbes ROC et précision-rappel ;
  • les arbres de décision avec l'indice de Gini ;
  • les ensembles : forêts aléatoires et gradient boosting.

Naive Bayes

Le classifieur Naive Bayes prédit la classe en se basant sur le théorème de Bayes :

P(Y=yX)P(Y=y)P(XY=y)P(Y = y \mid X) \propto P(Y = y) \cdot P(X \mid Y = y)

Le mot « naive » vient de l'hypothèse que les variables explicatives sont indépendantes conditionnellement à la classe :

P(X1,,XdY)=j=1dP(XjY)P(X_1, \dots, X_d \mid Y) = \prod_{j=1}^d P(X_j \mid Y)

C'est faux en pratique, mais l'approximation marche étonnamment bien et le modèle est très rapide.

from sklearn.naive_bayes import BernoulliNB

model = BernoulliNB(alpha=1.0)
model.fit(X_train, y_train)
y_hat = model.predict(X_test)

La matrice de confusion

L'accuracy (taux de bonne classification) est intuitive mais trompeuse. Imaginez un détecteur de spam qui dit toujours « pas spam » : si 99 % des mails sont légitimes, son accuracy est de 99 %... et il est inutile.

Pour comprendre un modèle se trompe, nous utilisons la matrice de confusion :

undefined