Comment calculez-vous la précision et le rappel pour la classification multiclass à l'aide de la matrice de confusion?

92

Je me demande comment calculer la précision et se rappeler en utilisant une matrice de confusion pour un problème de classification multi-classes. Plus précisément, une observation ne peut être affectée qu'à sa classe / étiquette la plus probable. Je voudrais calculer:

  • Précision = TP / (TP + FP)
  • Rappel = TP / (TP + FN)

pour chaque classe, puis calculez la F-mesure micro-moyennée.

Daiyue
la source
Cette DOCX , évaluation d' un modèle de classification - Qu'est-ce que la précision et le rappel me dire? , de Compumine fournit une introduction simple à la matrice de confusion et aux mesures qui en découlent. Cela aide à créer la matrice de confusion, la précision, le rappel, la spécificité et la précision.
Jayran Choopan
4
trouvez la réponse ici. Très bonne explication youtube.com/watch?v=FAr2GmWNbT0
Le lien Compumine est mort.
Trenton
Pour les cas multiclass, ce que je comprends, c'est le rappel le long des lignes (axe = 0) et la précision le long des colonnes (axe = 1). rxnlp.com/…
MD ZIA ULLAH Le

Réponses:

69

Dans un cas à 2 hypothèses, la matrice de confusion est généralement:

       | Declare H1  |  Declare H0 |
|Is H1 |    TP       |   FN        |
|Is H0 |    FP       |   TN        |

où j'ai utilisé quelque chose de similaire à votre notation:

  • TP = vrai positif (déclarer H1 alors que, en vérité, H1),
  • FN = faux négatif (déclarer H0 quand, en vérité, H1),
  • FP = faux positif
  • TN = vrai négatif

À partir des données brutes, les valeurs de la table seraient généralement les comptes de chaque occurrence sur les données de test. À partir de cela, vous devriez pouvoir calculer les quantités dont vous avez besoin.

Modifier

La généralisation aux problèmes multi-classes consiste à additionner les lignes / colonnes de la matrice de confusion. Étant donné que la matrice est orientée comme ci-dessus, c'est-à-dire qu'une ligne donnée de la matrice correspond à une valeur spécifique pour la "vérité", nous avons:

Precision i=MiijMji

Recall i=MiijMij

Autrement dit, la précision est la fraction d'événements où nous avons correctement déclaré parmi toutes les instances où l'algorithme a déclaré . Inversement, le rappel est la fraction d'événements où nous avons correctement déclaré parmi tous les cas où le vrai de l'état du monde est .iiii

Dave
la source
1
Dans mon cas, il y a plus de 10 classes, donc je suppose que FN signifie le nombre total de déclarations de classe H (i), i! = 1; et le même est FP?
daiyue
Bonjour, je me demande quelles seront les valeurs pour Precision and Recall, si TP + FP = 0 et TP + FN = 0 pour une classe réelle dans la matrice de confusion.
daiyue
La précision de la classe in'est pas définie s'il n'y a aucune instance déclarée par l'algorithme i. Le rappel de la classe in'est pas défini si l'ensemble de tests n'inclut pas la classe i.
Dave
Mon objectif final est de calculer la mesure Macro F, aussi j’ai besoin de précision et de valeurs de rappel pour chaque classe i; Alors, comment puis-je calculer la mesure de Macro-F si les deux cas ci-dessus apparaissent dans une classe i? En particulier, quelle est la valeur de Fi et la classe i compte-t-elle parmi les classes M, le nombre d'éléments dans M sera compté comme dénominateur de la formule de calcul de la mesure de MacroF.
Daiyue
1
sry, pourriez-vous expliquer votre idée plus clairement?
Daiyue
31

Bon document de synthèse, examinant ces métriques pour des problèmes multi-classes:

  • Sokolova, M. et Lapalme, G. (2009). Une analyse systématique des mesures de performance pour les tâches de classification. Traitement et gestion de l'information, 45 , p. 427-437. ( pdf )

Le résumé se lit comme suit:

Cet article présente une analyse systématique de vingt-quatre mesures de performance utilisées dans l’éventail complet des tâches de classification d’apprentissage automatique, c’est-à-dire binaire, multi-classe, multi-libellé et hiérarchique. L'étude associe un ensemble de modifications d'une matrice de confusion à des caractéristiques spécifiques de données. Ensuite, l'analyse se concentre sur le type de modifications apportées à une matrice de confusion qui ne modifie pas une mesure, par conséquent, conservez l'évaluation d'un classifieur (invariance de mesure). Le résultat est la taxonomie d'invariance de mesure pour tous les changements de distribution d'étiquettes pertinents dans un problème de classification. Cette analyse formelle est étayée par des exemples d'applications où les propriétés d'invariance des mesures conduisent à une évaluation plus fiable des classificateurs.

James Taylor
la source
2
Bienvenue sur le site, @JamesTaylor. Souhaitez-vous nous donner un résumé des informations dans le document lié pour aider les lecteurs à décider si c'est ce dont ils ont besoin et au cas où le lien disparaîtrait?
gung - Rétablir Monica
8

Utilisation de sklearn et numpy:

from sklearn.metrics import confusion_matrix
import numpy as np

labels = ...
predictions = ...

cm = confusion_matrix(labels, predictions)
recall = np.diag(cm) / np.sum(cm, axis = 1)
precision = np.diag(cm) / np.sum(cm, axis = 0)

Pour obtenir des mesures globales de précision et de rappel, utilisez ensuite

np.mean(recall)
np.mean(precision)
Cristian Garcia
la source