Métriques multi-classe simples

Comment évaluer un modèle qui prédit plus de deux classes possibles ? ll existe une façon simple d’aborder l’évaluation de la classification multi-classe, avec trois approches possibles : per-class, macro et micro.
multiclass simple - exemple prediction
Sommaire

Comment évaluer un modèle qui prédit trois événements possibles ou davantage ? Le plus souvent, on évalue des modèles prédisant deux alternatives (santé/maladie, transaction frauduleuse/normale etc.), c’est-à-dire des modèles de “classification binaire”. Pour évaluer ces modèles, la matrice de confusion à deux classes est bien connue et l’ensemble des métriques qui en découlent aussi (Precision, Recall, Specificity etc.).

Alors comment adapter les méthodes de la classification binaire lorsqu’il s’agit de prédire plus de deux issues possibles ? Par exemple dans un modèle qui indique si un client va garder son contrat / le résilier / ouvrir un contrat supplémentaire ?

Nous expliquons dans cet article la différence entre classification binaire (binary classification) et multi-classe (multi-class classification), et présentons trois approches pour évaluer un modèle multi-classe, avec leurs avantages et leurs limites.

Différence entre classification binaire et multi-classe

Les problèmes de classification peuvent se séparer en deux catégories :

  • La classification binaire, par exemple la prédiction de la résiliation des clients d’une entreprise.
  • La classification multi-classe où l’objectif est de prédire correctement une classe parmi $n_{class}$. A titre d’exemple dans cet article nous utilisons la prédiction de la météo à partir d’une photo (données disponible ici) entre plusieurs possibilités :
    • Couvert
    • Pluvieux
    • Ensoleillé
    • Lever du soleil
  • Dans ce cas, $n_{class} = 4$. Nous utilisons dans cet article un réseau de neurones convolutionnel de type ResNet-18 pour réaliser les prédictions.
multiclass simple - exemple classes

Figure 1. Exemple de classification multi-classes pour prédire la météo sur une image.

Pour la présentation des métriques de classification, nous avons considéré le cas binaire jusqu’ici car c’est le cadre de référence pour la classification. Le cas multi-classe diffère du cas binaire sur les points suivants :
  • Probabilités prédites :
    • Cas binaire : le modèle prédit une probabilité d’être positif. Exemple : chaque client a une certaine probabilité de résiliation.
    • Cas multi-classe : une probabilité est prédite pour chaque classe. Exemple : chaque image a une certaine probabilité d’être couvert, une probabilité d’être pluvieux, une probabilité d’être ensoleillé et une probabilité d’être lever de Soleil.
  • Le cas binaire peut aussi être vu de façon multi-classe. Pour chaque client, on prédit 2 probabilités : la probabilité de résiliation et la probabilité de rétention. Par défaut, la probabilité de rétention vaut 100% – la probabilité de résiliation.
  • Labels prédits :
    • Cas binaire : si la probabilité d’être positif dépasse $q%$ alors l’individu est prédit positif. $q%$ est appelé le seuil de classification et est le plus souvent choisi par des experts du domaine. Exemple : le client C a une probabilité de résiliation de plus de 75% alors le label qui lui est prédit est : résiliation.
    • Cas multi-classe : le label prédit est celui dont la probabilité est la plus élevée. Dans l’exemple de la figure ci-dessous, la probabilité la plus élevée pour la première image est couvert, le label prédit est donc couvert.
  • A nouveau, le cas binaire peut être vu de façon multi-classe. Si la probabilité de résiliation pour le client C est plus grande que sa probabilité de rétention, le label prédit pour ce client est : résiliation.
multiclass simple - exemple prediction

Figure 2. Deux exemples de prédiction de labels dans le cas multi-classe pour la météo.
La première image est prédite dans la classe couvert car 40% est la probabilité la plus élevée prédite par le modèle pour cette image.
La seconde image est prédite dans la classe ensoleillé avec une probabilité de 50% prédite par le modèle.

En quoi la prédiction des labels multi-classes diffère–t-elle de la prédiction binaire ? La principale différence vient du fait qu’on ne peut pas appliquer un seuil de classification aux probabilités multi-classes pour prédire les labels comme on le fait dans le cas binaire.

En effet si l’on voulait choisir un seuil de classification $q$ dans l’exemple ci-dessus, il devrait respecter certaines contraintes :

  1. Pour l’image couvert :
    1. $ q < 40% $ pour que le modèle prédise couvert.
    2. $ q > 30% $ pour que le modèle ne prédise pas pluvieux.
  2. Pour l’image ensoleillé :
    1. $ q < 50% $ pour que le modèle prédise ensoleillé.
    2. $ q > 45% $ pour que le modèle ne prédise pas lever de Soleil.

Ces différentes contraintes sont incompatibles : il est impossible de trouver un seuil $q$ pertinent. La prédiction multi-classes n’est donc pas équivalente à la prédiction d’un label binaire.

De plus, choisir un seuil de classification n’aurait pas de sens pour la prédiction de labels dans la situation multi-classe. Imaginons par exemple appliquer un seuil à 30%. Cela signifierait que, pour chaque image, si une classe a une probabilité supérieure à 30%, alors elle serait prédite. Ce qui peut donner lieu aux situations anormales suivantes :

  • Il peut ne pas y avoir de label dont la probabilité est supérieure à 30% :
  • Si le modèle donne une probabilité de 25% à chacun des labels, alors aucun label n’est prédit.
  • Il peut y avoir plusieurs labels dont la probabilité est supérieure à 30% :
  • Si le modèle donne une probabilité de 50% à deux labels, alors les deux labels seront prédits simultanément.

La situation la plus courante est d’avoir des probabilités prédites qui somment à 100% comme dans l’exemple ci-dessus. C’est le cas notamment lors de l’utilisation de réseaux de neurones grâce à la fonction softmax. En revanche, si l’on utilise 4 modèles indépendants pour prédire la probabilité de chaque classe, il n’y aucune raison que la somme des probabilités en sortie des modèles vaille 100%.

Pour résumer, la différence majeure entre la prédiction binaire et la prédiction multi-classe est la suivante :

  • dans le cas binaire : les prédictions dépendent d’un seuil de classification (qui vaut par défaut 50%).
  • dans le cas multi-classe : la prédiction correspond directement au label de probabilité prédite la plus élevée sans l’utilisation intermédiaire d’un seuil.

Matrice de confusion multi-classe standard

Comme la prédiction multi-classe ne repose pas sur un seuil de classification, elle possède une unique matrice de confusion standard du modèle, à la différence du cas binaire où de nombreuses matrices de confusion sont possibles (selon la valeur du seuil). Cette matrice est organisée de la même façon que la matrice de confusion binaire, avec en ligne les labels prédits et en colonne les labels réels. Seulement, au lieu d’avoir 2 lignes et 2 colonnes (classes 0 et 1), la matrice de confusion multi-classe a $n_{class}$ lignes et $n_{class}$ colonnes où $n_{class}$ est le nombre de classes du problème.

multiclass simple - theoretical confusion matrix

Figure 3. Matrice de confusion multi-classe théorique pour 3 classes.

Les faux négatifs se trouvent dans les colonnes (réalité) associées à chaque classe et les faux positifs se trouvent dans les lignes (prédiction) associées à chaque classe. Un individu dont la classe réelle est A sera soit un Vrai Positif A soit un Faux Négatif A. Dans le cas d’un Faux Négatif A, selon la prédiction cet individu sera aussi un Faux Positif B ou un Faux Positif C.

En utilisant cet outil sur l’exemple de prédiction de la météo, on obtient :

multiclass simple - exemple confusion matrix

Figure 4. Matrice de confusion pour la prédiction météo.
Les lignes correspondent aux prédictions du modèle et les colonnes correspondent à la réalité.

La classe lever de Soleil (Sunrise) est la mieux détectée par le modèle avec :

  • 68 images correctement détectées : les vrais positifs lever de Soleil
  • 2 images pour lesquelles la prédiction est fausse : les faux négatifs lever de Soleil. Dont :
    • une image prédite couvert (Cloudy), c’est-à-dire un faux positif couvert
    • une image prédite ensoleillé (Shine),c’est-à-dire un faux positif ensoleillé

Maintenant que la matrice de confusion standard pour un problème multi-classes est bien définie, utilisons-la pour évaluer le modèle.

Généralisation des métriques de classification binaire au cas multi-classes

Les métriques de classification usuelles sont définies dans le cas binaire à partir de la matrice de confusion binaire. Comment utiliser la matrice de confusion multi-classes pour généraliser les métriques binaires ? Nous allons voir les 3 méthodes classiques :

  • L’approche “per class”, pour laquelle on s’intéresse à $n_{class}$ problèmes de classification binaire indépendamment. Cette approche permet de s’intéresser à chaque classe individuellement mais il est difficile d’en tirer une synthèse car on obtient une métrique par classe.
  • L’approche “macro” qui permet de résumer les métriques obtenues avec l’approche “per class”. Il existe 2 variantes “macro”, une variante classique robuste au déséquilibre de classe et une variante pondérée, plus représentative des données.
  • L’approche “micro”, qui utilise directement les valeurs de la matrice de confusion multi-classe pour produire une métrique qui résume la performance du modèle. Cette approche présente des limites, que nous détaillerons, liées à la structure de la matrice de confusion.

Métriques “per class”

L’approche “per class” consiste à diviser une classification multi-classes en $n_{class}$ classification binaire. On évalue ensuite chaque classification binaire séparément.

Pour bien comprendre, reprenons notre exemple et calculons le recall par classe.

Pour ce faire, nous commençons par établir chaque matrice de confusion en repartant de la matrice de confusion multi-classe standard :

multiclass simple - multiclass matrix per class conversion

Figure 5. Passage de la matrice de confusion multi-classe à la matrice de confusion binaire lever de Soleil. Les rectangles de couleurs représentent les mêmes individus à gauche et à droite.

Pour construire la matrice de confusion lever de Soleil, on identifie dans la colonne et la ligne Sunrise les vrais positifs, faux négatifs et faux positifs. Les autres cases sont des vrais négatifs.

En appliquant cette transformation pour chaque classe, on obtient les 4 matrices de confusion binaires suivantes :

multiclass simple - per class confusion matrix

Figure 6. Matrices de confusion des 4 classes séparées : pluvieux, couvert, ensoleillé et lever de Soleil.
En considérant la prédiction de chaque classe indépendamment, on construit des matrices de confusion binaires classiques.

On s’est donc ramené à quatre problèmes de classification binaire, pour lesquels on peut calculer toutes les métriques dérivées de la matrice de confusion. On obtient pour chaque métrique 4 valeurs, correspondant aux 4 classes.

En prenant l’exemple du recall, on obtient les 4 recall suivants :

\begin{equation*} \text{Recall} = \frac{TP}{TP+FN} \end{equation*}

  • Couvert : 65%
  • Pluvieux : 59%
  • Ensoleillé : 54%
  • Lever de soleil : 97%

Les images lever de Soleil ont été quasiment toutes détectées par le modèle alors que seulement la moitié des situations ensoleillées ont été détectées.

Les métriques “per class” permettent de comprendre le détail des performances du modèle sur chaque classe individuellement.  Dans certains cas cependant, on peut préférer une métrique qui résume les performances sur l’ensemble des classes, pour comparer des modèles entre eux par exemple. L’approche “per class” est alors insuffisante et il est nécessaire de faire appel aux méthodes “macro” et “micro”.

Métrique “macro”

L’approche “macro” se base sur les métriques obtenues avec l’approche “per class” pour les résumer en une seule valeur. On peut décomposer cette approche en 2 étapes :

  1. Le calcul des métriques “per class”. Par exemple, on calcule le recall pour les 4 classes météo.
  2. Le résumé des métriques “per class” en calculant une moyenne. Par exemple : le macro-recall sera une moyenne des recalls de chaque classe.

Ce résumé peut se faire de 2 façons :

  • La métrique “macro” classique : robuste aux données déséquilibrées
  • La métrique “macro” pondérée : plus représentative de la distribution des classes

Métrique “macro” classique

La métrique “macro” classique revient à faire la moyenne des métriques “per class”. En termes mathématiques, on obtient la formule suivante :

\begin{equation*}
\text{macro-metric} = \frac{1}{n_{class}} \sum_{i=1}^{n_{class}} \text{metric}_{class_i}
\end{equation*}

Reprenons l’exemple du calcul du recall, on obtient le macro-recall suivant :

\begin{align*}
\text{macro-recall} &= \frac{ \text{recall}_{cloudy} + \text{recall}_{rain} + \text{recall}_{shine} + \text{recall}_{sunrise} }{4} \\
&= \frac{ 65\% + 59\% + 54\% + 97\% }{4} = 68\%
\end{align*}

Le macro-recall est donc la moyenne des recalls de chaque classe.

La métrique macro classique accorde autant d’importance à chacune des classes, peu importe la proportion d’individus qu’elles contiennent. Cela permet de ne pas négliger une classe qui serait sous-représentée dans nos données et rend cette métrique robuste au déséquilibre des classes.

Métrique “macro” pondérée

La variante “macro” pondérée revient à faire la moyenne pondérée des métriques “per class”. Chaque métrique a une importance proportionnelle à la proportion d’individus dans la classe correspondante. Mathématiquement, cela se traduit par la formule suivante :

\begin{equation*}
\text{macro-weighted-metric} = \sum_{i=1}^{n_{class}} \text{prop}_i \text{metric}_{class_i}
\end{equation*}

où :

  • $ \text{prop}_i = \frac{n_i}{\sum_{i=1}^{n_{class}} n_i} $
  • $n_i$ désigne le nombre d’individus dans la classe $i$.

Le calcul du macro-weighted-recall dans notre exemple est le suivant :

\begin{align*}
\text{macro-weighted-recall} =& \text{prop}_{cloudy} \times \text{recall}_{cloudy} + \text{prop}_{rain} \times \text{recall}_{rain} \\
& + \text{prop}_{shine} \times \text{recall}_{shine} + \text{prop}_{sunrise} \times \text{recall}_{sunrise} \\
=& 27\% \times 65\% + 17\% \times 59\% + 25\% \times 54\% + 31\% \times 97\% \\
=& 71\%
\end{align*}

Le macro-weighted-recall est la proportion d’individus correctement détectés. Ici, 71% des individus ont été correctement détectés.

La métrique macro-weighted accorde une importance plus grande aux classes les plus nombreuses dans les données, ce qui la rend plus représentative.

C’est un avantage lorsque les classes jouent le même rôle. Cependant si une classe a un rôle particulier et qu’elle est sous-représentée dans les données, une métrique macro-weighted ne permettra pas de détecter des changements de performance sur cette classe particulière.

Comparaison des 2 variantes “macro”

Quelle variante macro faut-il privilégier ? Le paramètre qui détermine le choix entre macro classique et macro-weighted est le déséquilibre des données :

  • Pour des données équilibrées, la proportion de chaque classe est environ $\frac{1}{n_{class}}$ et les deux variantes sont équivalentes. Pour 4 classes, ces proportions valent toutes 25%.
  • Pour des données déséquilibrées, les deux variantes ne seront pas équivalentes. Imaginons que nos images météo soient déséquilibrées :
    • 90% d’images couvert
    • 4% d’images pluvieux
    • 3% d’images ensoleillé
    • 3% d’images lever de Soleil

Dans ce cas, la métrique macro-weighted accorde une importance très forte à la classe couvert, qui a la proportion la plus grande.

En s’intéressant à un modèle simpliste qui prédit tout le temps la classe majoritaire (couvert), on voit que le macro-weighted recall lui donne une performance élevée alors même qu’il n’a pas extrait d’informations des données :

multiclass simple - comparison macro imbalanced data

Figure 7. Valeurs des métriques macro pour un modèle simpliste, en fonction du déséquilibre des données. Le modèle simpliste (qui prédit pour tous les individus la classe majoritaire) obtient une performance faible (25%) dans tous les cas, sauf lorsque les données sont déséquilibrées et qu’on utilise le macro-weighted-recall.

Dans la plupart des cas on privilégiera donc la métrique macro classique car :

  • on obtient un résultat similaire à la métrique macro-weighted quand les données sont équilibrées
  • on obtient un résultat plus robuste quand les données sont déséquilibrées.

La différence entre les approches macro et macro-weighted est similaire à celle entre Accuracy et Balanced Accuracy, que nous avons discutée dans l’article Balanced Accuracy Weighted.

Métrique micro 

L’approche “micro” utilise directement la matrice de confusion multi-classe pour faire une matrice de confusion “synthétique”. Elle reprend les termes de la matrice de confusion binaire : True Positive (TP), True Negative (TN), False Positive (FP) et False Negative (FN). Ces termes sont calculés de la manière suivante :

  • $ TP = \sum_{i=1}^{n_{class}} TP_i $ 
  • $ TN = 0 $ 
  • $ FP = \sum_{i=1}^{n_{class}} FP_i $ 
  • $ FN = \sum_{i=1}^{n_{class}} FN_i $
multiclass simple - micro confusion matrix

Figure 8. Valeurs utilisées pour le calcul des métriques micro.

En classification multi-classe, il n’y a pas de classe “négative” et par conséquent le terme des vrais négatifs est nul : $TN = 0$.

Dans un problème multi-classe, toutes les prédictions fausses (cases rouges) sont à la fois un faux positif et un faux négatif. Par conséquent $ FP = \sum_{i=1}^{n_{class}} FP_i = \sum_{i=1}^{n_{class}} FN_i = FN $. On fera donc attention à ne pas sommer $FP$ et $FN$ lorsque l’on calcule les métriques.

Nous retrouvons à nouveau une matrice de confusion binaire à partir de laquelle on peut calculer les différentes métriques de classification.

L’approche “micro” s’intéresse à des proportions d’individus, car chaque somme se fait en nombre d’individus. L’approche macro-weighted, qui pondère par le nombre d’individus dans chaque classe, donne aussi des métriques représentatives de la proportion d’individus même si celles-ci diffèrent, on pourra retrouver des points communs entre ces deux approches.

Prenons l’exemple du calcul du micro-recall pour bien comprendre. On construit la matrice de confusion “micro” suivante :

multiclass simple - micro confusion matrix example

Figure 9. Matrice confusion micro sur l’exemple météo.

Le calcul du micro-recall est le suivant :

\begin{align*}
\text{micro-recall} &= \frac{ \sum_{i=1}^{n_{class}} TP_{class_i} }{ \sum_{i=1}^{n_{class}} TP_{class_i} + \sum_{i=1}^{n_{class}} FN_{class_i} } \\
&= \frac{ 39 + 23 + 30 + 68 }{ 160 + 65 } = \frac{ 160 }{ 160 + 65 } = 71\%
\end{align*}

Cela signifie que dans notre exemple, 71% des individus ont été correctement détectés.

On obtient le même résultat que pour le macro-weighted-recall car dans le cas du recall, la pondération de l’approche macro-weighted compense le dénominateur. Pour les autres métriques, le dénominateur est différent et les approches micro et macro-weighted diffèrent.

Limites de la métrique micro

L’approche micro étant représentative des proportions d’individus comme les métriques macro-weighted, on retrouve en présence de données déséquilibrées la limite qui a déjà été développée lors de la comparaison entre macro classique et macro-weighted. L’approche micro accorde une faible importance aux classes minoritaires.

La deuxième limite de l’approche micro vient du fait que chaque individu dont la prédiction est fausse est à la fois un faux positif de sa classe prédite et un faux négatif de sa classe réelle. Par conséquent, $FP = FN$ et l’approche micro ne différencie pas les métriques. La micro-precision, le micro-recall, la micro-accuracy et le micro-F1-score sont tous égaux.

Vérifions-le sur notre exemple :

\begin{align*}
\text{micro-precision} &= \frac{ TP }{ TP + FP }  \frac{ 160 }{ 160 + 65 } = 71\% \\
\text{micro-recall} &= \frac{ TP }{ TP + FN }  \frac{ 160 }{ 160 + 65 } = 71\% \\
\text{micro-accuracy} &= \frac{ TP }{ TP + FP (+ FN) + TN  }  \frac{ 160 }{ 160 + 65 } = 71\% \\
\text{micro-f1-score} &= H(\text{micro-precision}, \text{micro-recall}) = H(71\%, 71\%) = 71\% \\
\end{align*}

où $H$ est l’opérateur moyenne harmonique et $(+FN)$ signifie que l’on ne prend pas en compte $FN$ dans la somme, car c’est un doublon de $FP$.

Pour la prédiction de la météo, la micro-precision, le micro-recall, la micro-accuracy et le micro-F1-score sont bien tous égaux.

Implémentation Python

Pour utiliser les métriques multi-classes présentées dans cet article, sous python on peut utiliser l’implémentation du package scikit-learn. Les informations nécessaires sont détaillées dans la documentation et résumées ici :

  • La matrice de confusion se calcule comme dans le cas binaire avec sklearn.metrics.confusion_matrix. Notons que la matrice calculée par scikit-learn contient les classes prédites en colonnes et les classes réelles en ligne.
  • Les métriques d’accuracy, precision, recall/sensitivity et f1-score se calculent avec les mêmes fonctions que dans le cas binaire (sklearn.metrics : accuracy_score, precision_score, recall_score et f1_score). Pour choisir l’approche utilisée dans l’utilisation de ces métriques, il suffit de préciser l’argument average :
    • Per class : average=None
    • Macro : average=”macro”
    • Macro-weighted : average=”weighted”
    • Micro : average=”micro”

Conclusion

Le cas multi-classe est sensiblement différent du cas binaire pour plusieurs raisons. D’abord, la conversion des probabilités en labels se fait par simple maximum, sans dépendre d’un seuil de classification. En classification multi-classe il n’y a donc qu’une seule matrice de confusion.

Ensuite, aucune des métriques définies pour la classification binaire – à part l’accuracy – ne peut s’appliquer directement au cas multi-classe. L’utilisation de ces métriques doit passer par une méthode permettant de les généraliser.

La généralisation peut se faire de 3 façons :

  • “per class” : permet d’avoir le détail des performances sur chaque classe mais multiplie le nombre de métriques à surveiller
  • “macro” classique : résume les performances obtenues par classe en restant robuste au déséquilibre des classes
  • “macro-weighted” : résume les performances par classe en préservant les proportions des classes
  • “micro” : résume les performances obtenues par individu et prend en compte les proportions d’individus dans chaque classe
  •  

Pour avoir le détail des performances sur chaque classe, on utilise l’approche “per class”. Et si à l’inverse on a besoin de résumer les performances avec une seule valeur, l’approche à privilégier est la “macro” classique.

Le calcul de métriques plus complexes pour des modèles multi-classes, notamment les métriques à base d’AUC, est abordé dans l’article suivant.

Sommaire

Voir aussi

Voir aussi

2 réponses

  1. Bonsoir,
    je viens de lire toute la série d’article sur les métriques appliquées à la classification.
    Je vous félicite pour la clarté des explications visant à mieux employer ses métriques.
    Actuellement étudiant chez OpenClassRooms cela m’apporte un réel confort.
    Bonne continuation et à bientôt chez DataCraft

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *