Métriques multi-classe complexes

Les approches per class, macro et micro peuvent être utilisées pour analyser en profondeur les performances d’un modèle multi-classe. Comparons leurs méthodes et leurs avantages respectifs.
multiclass complex - example curves
Sommaire

Les modèles de Machine Learning permettent de prédire des comportements complexes, à partir de probabilités converties en labels. Dans l’article précédent, nous avons vu les métriques de classification multi-classes (multi-class classification metrics) simples, obtenues avec la matrice de confusion standard. Ces approches ont des avantages, mais négligent une partie de la richesse d’information contenue dans les probabilités. Nous présentons ici des méthodes qui traduisent de façon plus exhaustive les performances du modèle.

Ces méthodes sont inspirées des courbes Precision-Recall et ROC, très documentées pour la classification binaire et que l’on peut adapter à la classification multi-classe. 

Courbes PR et ROC : binaires vs multi-classe

Lorsqu’on évalue un modèle de classification binaire, on peut tracer les courbes PR et ROC en faisant varier le seuil de classification. A partir de ces courbes, on résume la performance globale du modèle grâce à l’AUC (Area Under the Curve, ou Aire Sous la Courbe en français).

Comme nous l’avons vu avec la comparaison entre la classification binaire et multi-classe de l’article précédent, le principe du seuil de classification n’est pas naturel dans le cas multi-classe. Nous introduisons donc un seuil de classification artificiellement pour qualifier la performance globale d’un modèle multi-classe avec les outils que l’on maîtrise dans le cas binaire. Les trois méthodes principales que nous allons présenter sont :

  • Définir un seuil “per class” avec une approche OneVsAll : on évalue les classes séparément
  • Utiliser l’approche “macro” : en s’appuyant sur le seuil “per class” on résume les performances du modèle sur différentes classes
  • Définir un seuil global avec une approche “micro” : on se ramène à un problème binaire prenant en compte toutes les classes en même temps

On retrouve les mêmes termes que pour les métriques simples car les approches se ressemblent, mais attention, elles ne sont pas équivalentes.

Pour illustrer les deux méthodes d’introduction de seuil présentées dans cet article, nous utiliserons l’exemple de prédiction de la météo à partir d’une photo (données disponible ici). Nous utilisons un réseau de neurones convolutionnel de type ResNet-18 pour réaliser les prédictions.

multiclass complex - example probability

Figure 1. 2 exemples de classification multi-classe avec les labels réels cloudy et sunrise et les probabilités prédites associées à chaque image.

Si l’on s’intéresse à la prédiction standard du modèle multi-classe, il fera une prédiction correcte sur l’image cloudy, car c’est la probabilité prédite la plus élevée (40%), et une prédiction erronée sur l’image sunrise car la probabilité la plus élevée est shine (45%). Avec les métriques multi-classe complexes, nous allons pouvoir évaluer le modèle en tenant compte du fait que, même si la prédiction sur l’image sunrise est erronée, le modèle a prédit une probabilité élevée pour cette classe.

Approche per class

Comme pour l’adaptation des métriques simples binaires au cas multi-classe, une première approche consiste à s’intéresser à chaque classe une par une.

multiclass complex - probability transformation multi to per class

Figure 2. Transformation des prédictions multi-classe pour une approche per class. Les probabilités prédites pour chaque classe sont isolées et considérées dans 4 problèmes binaires (1 par classe). On récupère la classe réelle de chaque individu pour remplir par 0 ou 1 les colonnes Cloudy, Rain, Shine, Sunrise.

On appelle cette transformation OneVsAll car, pour chaque classe, le label vaut 1 si l’image appartient à cette classe et 0 si l’image appartient à une autre classe. Cette transformation est privilégiée pour sa simplicité par rapport à l’approche OneVsOne, où l’on compare les classes par couples.

Avec cette approche on se retrouve dans le cas binaire standard et on utilise un seuil de classification : si la probabilité est plus élevée que le seuil de classification alors l’individu est prédit positif, sinon négatif.

multiclass complex - 2 threshold example

Figure 3. Deux exemples de prédictions de labels per class cloudy avec deux seuils différents. Avec l’introduction du seuil per class, la prédiction de la classe cloudy ne dépend pas des autres probabilités prédites mais uniquement du seuil utilisé.

On obtient ainsi autant de classifications binaires qu’il y a de classes dans notre problème initial. Pour chacune d’elle, on peut appliquer les évaluations binaires classiques. On peut entre autres construire la courbe ROC ou la courbe Precision-Recall de chaque classe.

multiclass complex - ROC PR curves per class

Figure 4. Courbes ROC et PR pour chaque classe.
Le modèle n’a pas les mêmes performances selon les classes. Il atteint les meilleures performances pour le lever de Soleil et les moins bonnes pour la météo ensoleillée.

En utilisant l’approche per class, on réalise une évaluation de chaque classe séparément. Cela permet d’utiliser toutes les méthodes vues dans le cas binaire, mais on ne considère plus l’aspect multi-classe du modèle. Pour retrouver une vision multi-classe, on utilise les deux autres approches qui suivent, dont l’une se base sur les courbes per class (l’approche macro).

Approche macro

A partir des courbes per class, la méthode la plus courante pour déterminer la performance globale du modèle est de faire une courbe “macro” sur laquelle on calcule ensuite l’AUC.

La courbe macro consiste à faire une moyenne des courbes obtenues par classe. Pour construire la courbe Precision-Recall par exemple, chaque point est défini par :

  • une valeur de Recall $r$ entre 0% et 100%
  • une valeur de Precision qui est la moyenne des precisions de chaque classe pour un recall valant $r$
multiclass complex - ROC PR curves macro

Figure 5. Courbes ROC et PR macro et AUC macro.

En construisant la courbe moyenne par rapport aux classes, on peut calculer une aire sous la courbe pour l’ensemble du modèle. 

La courbe ainsi obtenue est robuste au déséquilibre de classes, puisque lorsque l’on fait la moyenne, on accorde autant d’importance à chaque classe, peu importe le nombre d’individus qu’elle contient.

Approche micro

La deuxième méthode pour obtenir une évaluation globale multi-classe est l’approche micro. Tandis que l’approche macro se base sur la séparation des problèmes per class, l’approche micro repart des probabilités prédites pour chaque classe et transforme les $n_{sample}$ problèmes multi-classe en $n_{sample} \times n_{class}$ questions binaires : est-ce que l’individu $i$ appartient à la classe $j$ ? Cette méthode est décrite dans la figure suivante :

multiclass complex - probability transformation multi to micro

Figure 6. Transformation des prédictions multi-classe pour une approche micro avec l’exemple de 2 individus. Dans la première ligne, on se demande si “l’individu 1 est couvert”. Le modèle a prédit une probabilité de 40% pour que cet individu soit couvert, donc la probabilité que cette affirmation soit vraie est de 40% selon le modèle. Le label réel pour l’individu 1 est couvert donc le label pour l’affirmation “l’individu 1 est couvert” est 1 (positif).

L’approche micro pour les métriques démultiplie le nombre de lignes par individu et par classe. 

Avec cette approche, on retrouve une situation de classification binaire, pour laquelle les courbes ROC et PR sont bien définies. On peut également calculer l’AUC ROC et l’AUC PR :

multiclass complex - ROC PR curves micro

Figure 7. Courbes ROC et PR micro et AUC micro.

Comparaison entre macro et micro

L’approche macro et l’approche micro résument la performance globale à l’aide d’un indicateur unique et sont donc utiles pour comparer des modèles entre eux.

Plusieurs paramètres peuvent intervenir lors de la comparaison entre ces deux approches. Intéressons-nous d’abord à la robustesse de ces métriques au déséquilibre de classe.

Robustesse au déséquilibre de classe

Pour choisir une métrique appropriée, la robustesse au déséquilibre de classe est un des critères à prendre en compte. Définissons cette robustesse comme : la stabilité d’une métrique pour un même modèle peu importe le niveau de déséquilibre des données. Concrètement, on considère qu’une métrique est robuste au déséquilibre de classe si, lorsqu’on évalue un modèle de machine learning sur des données équilibrées, on obtient la même performance que lorsqu’on évalue ce même modèle en présence d’une classe majoritaire.

La question de la robustesse des métriques macro et micro en présence de données déséquilibrées est très peu documentée et n’offre pas de consensus. Dans la documentation de l’AUC ROC de scikit-learn, on peut lire dans la définition de l’argument multi_class : “Sensitive to class imbalance even when average == ‘macro’, because class imbalance affects the composition of each of the ‘rest’ groupings” mais aucune source n’est précisée.

Pour étudier la différence de résultats entre approches macro et micro, réalisons l’expérience suivante :

multiclass complex - schema experience imbalanced data

Figure 8. Expérience d’évaluation de la robustesse au déséquilibre de classe. On indique pour chaque jeu de données la proportion d’individus dans chaque classe.

Pour cette expérience, nous entraînons un modèle de machine learning avec les proportions originales des classes, qui sont assez équilibrées (peu éloignées de 25%). Puis nous évaluons le modèle sur 2 jeux de données test avec deux équilibres de classe différents :

  • une base test avec les proportions originales
  • une base test avec la classe sunrise majoritaire. 

Calculons les AUC Precision Recall sur ces deux bases test :, mais les mêmes remarques sont valables pour l’AUC ROC.

multiclass complex - comparison macro imbalanced data

Figure 9. Résultats de l’évaluation de la robustesse au déséquilibre de classe.

L’AUC PR macro du modèle reste quasi-constant lorsqu’on déséquilibre les données (il augmente de 2%), tandis que l’AUC PR micro augmente fortement (de 23%). L’approche macro est donc plus robuste que la micro dans notre cas. 

Notons que cette différence était présente dans d’autres cas lors de nos expérimentations : 

  • Avec l’AUC ROC au lieu de l’AUC PR, on obtient les mêmes conclusions.
  • En utilisant les métriques multi-classe simples présentées dans l’article précédent, les comportements sont similaires : l’approche macro est plus robuste que l’approche micro au déséquilibre de classe.

Approche macro ou micro ?

Dans le cas où tout ce qui nous intéresse est d’avoir un indicateur unique, les approches macro et micro vont pouvoir convenir toutes les deux avec les différences majeures suivantes :

  • l’approche macro est plus interprétable (car elle est une moyenne des courbes per class) que l’approche micro, dont la définition est plus complexe
  • l’approche micro compare les probabilités d’une classe à l’autre alors que l’approche macro ne prend en compte que l’ordre des probabilités au sein d’une classe à la fois
  • l’approche macro est plus robuste au déséquilibre de classe que la micro

Pour des problèmes déséquilibrés, on préfèrera donc l’utilisation de l’approche macro.

Implémentation Python

Sous Python, on peut évaluer globalement les modèles multi-classes via deux implémentations :

  1. scikit-learn propose une implémentation de la courbe ROC multi-classe dans la fonction sklearn.metrics.roc_auc_score. Il suffit de spécifier les arguments suivants :
    • multi_class = “ovr” pour OneVsRest (équivalent de OneVsAll)
    • average = None pour l’approche per class, ou average = “macro” pour l’approche macro

L’approche micro n’est pas implémentée dans scikit-learn mais il est possible “d’aplatir” les vecteurs réel et prédit pour y appliquer ensuite le calcul de l’AUC ROC dans le cas binaire. Scikit-learn fournit le code de visualisation des courbes ROC dans sa documentation. 

  1. yellowbrick propose une autre implémentation “clé en main” qui fonctionne avec les standards scikit-learn.

Conclusion

Bien qu’il y ait une matrice de confusion unique pour la classification multi-classe, nous nous sommes intéressés aux 2 méthodes principales pour prendre en compte les probabilités prédites par le modèle dans une évaluation globale multi-classe :

  • l’approche per class qui permet d’avoir le détail des performances sur chaque classe, on peut résumer ces performances avec l’approche macro
  • l’approche micro qui résume directement les performances du modèle en se ramenant à un problème binaire particulier

Cette prise en compte des probabilités se fait via l’introduction d’un seuil de classification pour se ramener à une situation connue : l’utilisation du seuil de classification dans le cas binaire. Dans cette situation, nous sommes en mesure de construire les courbes ROC et PR permettant d’évaluer le modèle de façon globale.

Si on cherche à comprendre les points forts et points faibles d’un modèle, l’approche la plus intéressante est de regarder les métriques per class, mais elle est plus complexe à analyser car on évalue chaque classe. 

Si on cherche à obtenir une valeur unique décrivant la performance globale du modèle, en utilisant les résultats per class on peut résumer à l’aide de la moyenne macro par rapport aux classes. L’approche micro n’a pas besoin d’être résumée mais elle reste un peu moins interprétable que l’approche macro et moins robuste au déséquilibre de classe.

Sommaire

Voir aussi

Voir aussi

Laisser un commentaire

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