• 10 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 06/02/2024

Évaluez un algorithme de classification qui retourne des valeurs binaires

 Nous allons maintenant nous concentrer sur les modèles de classification : on utilise des données étiquetées pour prédire à quelle classe un objet appartient. Nous allons surtout parler de classification binaire, où il s'agit de distinguer si un objet appartient ou non à une classe. Par exemple, dire si une image représente une girafe ou non. Si oui, on dit que cette image est positive ; sinon, qu'elle est négative.

Prenons un algorithme qui prédit s’il y a un incendie à un endroit donné. Déclencher une alerte incendie quand il n'y a pas le feu est moins grave que de ne pas déclencher d'alerte quand l’appartement est en flamme.

Dans ce chapitre, je vais vous montrer différentes manières d'évaluer un modèle de classification.

Matrice de confusion

Prédire un incendie quand il n’y en a pas, ne pas prédire un incendie quand il y en a un, ne pas en prédire quand il n’y en a pas… On s’y perd vite ! Pour y voir plus clair, on utilise une matrice de confusion (normalement le terme fait allusion à la confusion du modèle, pas à celle du Data Scientist ;) ).

Matrice de confusion
Matrice de confusion

Appelons "positive" la classe correspondant à un incendie et "négative" l’autre. Si on prédit un incendie quand il y en a bien un, on fait une prédiction "positif" qui est correcte, c’est un vrai positif. Si par contre cette prédiction est incorrecte, il s’agit d’un faux positif. Et ainsi de suite. On appelle aussi parfois "erreur de type I" les faux positifs, et "erreur de type II" les faux négatifs.

Pour obtenir une matrice de confusion avec scikit-learn, il suffit d’utiliser la fonction confusion_matrix

metrics.confusion_matrix(y_true, y_pred)

Critères à optimiser et valeurs dérivées

À partir de la matrice de confusion on peut dériver tout un tas de critères de performance. De manière générale, on préfère donner une fraction d'erreurs à un nombre total d'erreurs (5% d'erreurs, ça parle plus que 10 erreurs, quand on ne connaît pas le nombre de points dans le jeu de test).

Voici quelques exemples de mesures de performance souvent utilisées :

Le rappel ("recall"  en anglais), ou sensibilité ("sensitivity" en anglais), est le taux de vrais positifs, c’est à dire la proportion de positifs que l’on a correctement identifiés. C’est la capacité de notre modèle à détecter tous les incendies.

$\[Rappel = \frac{TP}{TP+FN}\]$

On s’intéressera donc aussi à la précision, c’est-à-dire la proportion de prédictions correctes parmi les points que l’on a prédits positifs. C’est la capacité de notre modèle à ne déclencher d’alarme que pour un vrai incendie. 

$\[Pré cision = \frac{TP}{TP+FP}\]$

Pour évaluer un compromis entre rappel et précision, on peut calculer la "F-mesure", qui est leur moyenne harmonique.

$\[F-mesure = 2 \times \frac{Précision \times Rappel}{Précision + Rappel} = \frac{2TP}{2TP + FP + FN}\]$

Pour finir cette longue liste, on s’intéresse aussi souvent à la spécificité ("specificity" en anglais), qui est le taux de vrais négatifs, autrement dit la capacité à détecter toutes les  situations où il n’y a pas d’incendie. C’est une mesure complémentaire de la sensibilité. 

$\[Spécificité = \frac{TN}{FP + TN}\]$

Toutes ces mesures de performance sont disponibles dans le module metrics de scikit-learn.

Exemple : test clinique

Pour comprendre un peu mieux à quoi toutes ces mesures correspondent, prenons l’exemple d’un test clinique. Il s’agit ici d’une étude conduite sur 4000 femmes, âgées de 40 ans et plus, apparemment en bonne santé. On leur a fait passer deux tests de dépistage du col de l'utérus :

  • Un examen histologique, plutôt lourd, qui requiert d’être interprété par un expert, et qui servira de vérité terrain.

  • Un frottis de dépistage, qui est un examen beaucoup plus simple et moins invasif, qui sera ici l’analyse de notre algorithme d’apprentissage.

Voici les résultats de l'expérience :

 

Cancer

Pas de cancer

TOTAL

Frottis +

190

210

400

Frottis -

10

3590

3600

TOTAL

200

3800

4000

La probabilité de ne pas avoir de cancer quand le frottis est négatif est de 3590/3600 soit 99.7%, ce qui fait de ce test un bon outil de dépistage. À l’inverse, la probabilité d'avoir un cancer quand le frottis est positif est de 190/400 = 47.5%, ce qui en fait un très mauvais outil diagnostique.

Il ne tient ainsi qu'à vous de sélectionner la mesure la plus pertinente au vu de la problématique à traiter.

Cette situation est reflétée par les valeurs suivantes :

  • rappel = 95%

  • spécificité = 94.5 %

  • précision = 47.5%

Résumé

  • Toutes les erreurs ne se valent pas.

  • On peut représenter les performances d’un modèle de classification dans une matrice de confusion.

  • On peut extraire de cette matrice différentes mesures de performance, comme le rappel, la précision, la spécificité et le F-score, qui reflètent différents aspects du modèle.

Exemple de certificat de réussite
Exemple de certificat de réussite