Performance micro moyenne vs macro moyenne dans un paramètre de classification multiclass

103

J'essaie un paramètre de classification multiclass avec 3 classes. La distribution des classes est asymétrique, la plupart des données tombant dans l'une des trois classes. (les étiquettes de classe sont 1, 2, 3, avec 67,28% des données relevant de l'étiquette de classe 1, 11,99% des données de classe 2 et restant en classe 3)

Je forme un classifieur multiclass sur cet ensemble de données et j'obtiens les performances suivantes:

                    Precision           Recall           F1-Score
Micro Average       0.731               0.731            0.731
Macro Average       0.679               0.529            0.565

Je ne sais pas pourquoi tous les micro-moy. les performances sont égales et aussi pourquoi les performances moyennes Macro sont si faibles.

SHASHANK GUPTA
la source
1
Ne pouvez-vous pas regarder les vrais positifs individuels, etc., avant de calculer la moyenne? de plus, les moyennes macro ont tendance à être inférieures aux moyennes micro
oW_
Les mesures F et Micro et Macro sont-elles spécifiques à la classification ou à la récupération de texte, ou peuvent être utilisées pour tout problème de reconnaissance ou de classification ..... Si oui, où nous pouvons obtenir la signification de chacune ou de toute autre référence ...
idrees
2
La précision micro-moyenne n'est-elle pas identique à la précision d'un ensemble de données? D'après ce que j'ai compris, pour Micro Average Precision, vous calculez la somme de tous les vrais positifs et vous la divisez par la somme de tous les vrais positifs plus la somme de tous les faux positifs. Donc, en gros, vous divisez le nombre de prévisions correctement identifiées par le nombre total de prévisions. Où est-ce différent du calcul de la précision? Pourquoi avons-nous besoin d'un nouveau terme de précision spécial qui rend les choses plus compliquées au lieu de simplement s'en tenir à la valeur de précision? Prouvez-moi s'il vous plaît que j'ai tort afin que je puisse dormir paisiblement.
Nico Zettler
2
@NicoZettler Vous avez raison. La précision micro-moyennée et le rappel micro-moyenné sont tous deux égaux à la précision lorsque chaque point de données est affecté à exactement une classe. En ce qui concerne votre deuxième question, les métriques micro-moyennées diffèrent de l'exactitude globale lorsque les classifications sont multi-étiquetées (chaque point de données peut se voir attribuer plus d'une étiquette) et / ou lorsque certaines classes sont exclues dans le cas multi-classes. Voir scikit-learn.org/stable/modules/… .
Johnson

Réponses:

146

Les moyennes micro et macro (quelle que soit la métrique) calculent des choses légèrement différentes, et donc leur interprétation diffère. Une macro-moyenne calcule la métrique indépendamment pour chaque classe, puis prend la moyenne (donc toutes les classes sont traitées de manière égale), tandis qu'une micro-moyenne agrégera les contributions de toutes les classes pour calculer la métrique moyenne. Dans une configuration de classification à plusieurs classes, la micro-moyenne est préférable si vous suspectez un déséquilibre entre les classes (vous pouvez donc avoir beaucoup plus d'exemples d'une classe que d'autres classes).

Pour illustrer pourquoi, prenons par exemple la précision . Imaginons que vous disposiez d'unsystème de classification multi-classesOne-vs-All(il n'y a qu'une seule sortie de classe correcte par exemple) avec quatre classes et les nombres suivants lors du test:Pr=TP(TP+FP)

  • Classe A: 1 TP et 1 PF
  • Classe B: 10 TP et 90 FP
  • Classe C: 1 TP et 1 FP
  • Classe D: 1 TP et 1 FP

Vous pouvez voir facilement que , alors que P r B = 0,1 .PrUNE=PrC=Pr=0.5PrB=0,1

  • Une macro moyenne calculera alors: Pr=0.5+0,1+0.5+0.54=0.4
  • Une micro-moyenne calculera: Pr=1+dix+1+12+100+2+2=0,123

Ce sont des valeurs assez différentes pour la précision. Intuitivement, dans la moyenne macro-économique, la "bonne" précision (0,5) des classes A, C et D contribue à maintenir une précision globale "décente" (0,4). Bien que cela soit techniquement vrai (précision moyenne de 0,4 pour toutes les classes), cela est un peu trompeur, puisqu'un grand nombre d'exemples ne sont pas correctement classés. Ces exemples correspondent principalement à la classe B, ils ne contribuent donc qu’à un quart de la moyenne malgré qu’ils constituent 94,3% de vos données de test. La micro-moyenne capturera correctement ce déséquilibre de classe et ramènera la moyenne de précision globale à 0,123 (plus conforme à la précision de la classe dominante B (0.1)).

Pour des raisons de calcul, il peut parfois être plus pratique de calculer des moyennes de classe puis de les calculer en moyenne. Si l’on sait que le déséquilibre entre les classes est un problème, il existe plusieurs façons de le contourner. L'une consiste à indiquer non seulement la moyenne macro, mais également son écart type (pour 3 classes ou plus). Une autre consiste à calculer une macro-moyenne pondérée, dans laquelle chaque contribution de classe à la moyenne est pondérée par le nombre relatif d’exemples disponibles. Dans le scénario ci-dessus, nous obtenons:

Prmunecro-meunen=0,25·0.5+0,25·0,1+0,25·0.5+0,25·0.5=0.4 Prmunecro-stev=0,173

Prmunecro-wejeghte=0,0189·0.5+0,943·0,1+0,0189·0.5+0,0189·0.5=0,009+0,094+0,009+0,009=0,123

L’écart type élevé (0,173) nous indique déjà que la moyenne de 0,4 ne découle pas d’une précision uniforme entre les classes, mais il pourrait être simplement plus facile de calculer la moyenne macro pondérée, ce qui est essentiellement une autre façon de calculer la moyenne moyenne. .

pythiest
la source
10
Cette réponse mérite plus de votes positifs, car elle permet de mieux comprendre pourquoi le micro et le macro se comportent différemment au lieu de simplement lister les formules (et le contenu d'origine).
steffen
2
Comment cela explique-t-il les différentes valeurs macro dans la question initiale?
Shakedzy
3
Si vous inversez le scénario esquissé dans la réponse, avec la grande classe ayant de meilleurs résultats que la petite, vous vous attendriez à voir la moyenne micro supérieure à la moyenne macro (comportement décrit dans la question). Il faut s’attendre à ce que les macro-valeurs soient différentes, car vous mesurez différentes choses (précision, rappel, etc.). Pourquoi les micro-moyennes sont-elles toutes identiques? Je pense que la question se pose.
Pythiest
4
Je ne suis pas d'accord avec l'affirmation selon laquelle la micro moyenne devrait être préférée à la macro en cas de jeux de données déséquilibrés. En fait, pour les scores F, on préfère macro au micro car le premier attribue une importance égale à chaque classe, tandis que la dernière attribue une importance égale à chaque échantillon (ce qui signifie que plus le nombre d’échantillons est grand, plus la note finale a privilégiant les classes majoritaires un peu comme la précision). Sources: 1. cse.iitk.ac.in/users/purushot/papers/macrof1.pdf 2. clips.uantwerpen.be/~vincent/pdf/microaverage.pdf
shahensha
3
La "moyenne macro pondérée" sera-t-elle toujours égale à la moyenne micro? Dans Scikit-Learn, la définition de "pondéré" est légèrement différente: "Calculez les métriques pour chaque étiquette et trouvez leur moyenne pondérée par support (le nombre d'instances vraies pour chaque étiquette)." À partir de la documentation pour le Score F1.
willk
20

Original Post - http://rushdishams.blogspot.in/2011/08/micro-and-macro-average-of-precision.html


Dans la méthode Micro-moyenne, vous résumez les vrais positifs, les faux positifs et les faux négatifs individuels du système pour différents ensembles et vous les appliquez pour obtenir les statistiques.

Difficile, mais j'ai trouvé cela très intéressant. Il existe deux méthodes pour obtenir cette statistique moyenne de récupération et de classification des informations.

1. Méthode micro-moyenne

Dans la méthode Micro-moyenne, vous résumez les vrais positifs, les faux positifs et les faux négatifs individuels du système pour différents ensembles et vous les appliquez pour obtenir les statistiques. Par exemple, pour un ensemble de données, le système

True positive (TP1)  = 12
False positive (FP1) = 9
False negative (FN1) = 3

57.14%=TP1TP1+FP180%=TP1TP1+FN1

et pour un autre ensemble de données, le système

True positive (TP2)  = 50
False positive (FP2) = 23
False negative (FN2) = 9

La précision (P2) et le rappel (R2) seront alors de 68,49 et 84,75.

Maintenant, la précision moyenne et le rappel du système utilisant la méthode micro-moyenne est

Micro-moyenne de précision=TP1+TP2TP1+TP2+FP1+FP2=12+5012+50+9+23=65,96

Micro-moyenne de rappel=TP1+TP2TP1+TP2+FN1+FN2=12+5012+50+3+9=83.78

Le F-Score de micro-moyenne sera simplement la moyenne harmonique de ces deux figures.

2. Méthode macro-moyenne

La méthode est simple. Il suffit de prendre la moyenne de la précision et le rappel du système sur différents ensembles. Par exemple, la précision macro-moyenne et le rappel du système pour l'exemple donné sont

Précision macro-moyenne=P1+P22=57.14+68,492=62.82 Rappel de moyenne macro=R1+R22=80+84,752=82.25

Le F-Score Macro-moyen sera simplement la moyenne harmonique de ces deux figures.

Adéquation Une méthode de moyenne macro peut être utilisée lorsque vous souhaitez savoir comment le système fonctionne dans l'ensemble des ensembles de données. Vous ne devriez pas arriver à une décision spécifique avec cette moyenne.

D'autre part, la micro-moyenne peut constituer une mesure utile lorsque la taille de votre jeu de données varie.

Rahul Reddy Vemireddy
la source
21
devriez-vous donner crédit à cet article de blog ?
xiaohan2012
3
Ouais @ xiaohan2012, il a juste copypasté la réponse.
Manuel G
C'était ma première réponse sur le débordement de pile, je ne savais pas trop comment faire. Pouvez-vous suggérer une modification. Je vais l'accepter. Merci
Rahul Reddy Vemireddy
Il convient de noter que le score F1 n'est pas nécessairement le même que le score F1 macro-moyenné couramment utilisé (comme implémenté dans scikit ou décrit dans le présent document ). Habituellement, le score F1 est calculé séparément pour chaque classe / ensemble, puis la moyenne est calculée à partir des différents scores F1 (dans ce cas, la méthode est inversée: calculant d'abord la précision / rappel macro-moyenné, puis le score F1 ).
Milania
11

Dans un environnement à plusieurs classes, la précision et le rappel micro-moyennés sont toujours les mêmes.

P=ΣcTPcΣcTPc+ΣcFPcR=ΣcTPcΣcTPc+ΣcFNc

ΣcFPc=ΣcFNc

D'où P = R. En d'autres termes, chaque fausse prédiction sera un faux positif pour une classe et chaque simple négatif sera un faux négatif pour une classe. Si vous traitez un cas de classification binaire comme une classification bi-classe et calculez la précision micro-moyennée et rappelez-la, elles seront identiques.

La réponse donnée par Rahul concerne la moyenne de la précision binaire et le rappel de plusieurs jeux de données. Dans ce cas, la précision et le rappel micro-moyennés sont différents.

David Makovoz
la source
2

Voilà comment il devrait être. J'ai eu le même résultat pour mes recherches. Cela semblait étrange au début. Mais la précision et le rappel doivent être les mêmes tout en micro-moyennant le résultat du classifieur à une seule étiquette à plusieurs classes. En effet, si vous considérez une erreur de classification c1 = c2 (où c1 et c2 sont deux classes différentes), la classification erronée est un faux positif (fp) en ce qui concerne c2 et un faux négatif (fn) en ce qui concerne c1. Si vous faites la somme de fn et fp pour toutes les classes, vous obtenez le même nombre car vous comptez chaque erreur de classification comme fp pour une classe et fn pour une autre classe.

Saghan Mudbhari
la source
0

Je pense que la réponse de pythiest (la classe dominante a de meilleures prévisions et donc l'augmentation de la moyenne micro) explique bien la raison pour laquelle la moyenne macro est inférieure à la moyenne micro.

Mais le fait que la micro moyenne soit égale pour les scores Precision, Recall et F1 est dû au fait que la micro-moyenne de ces métriques donne une précision globale (puisque micro moyenne considère toutes les classes comme positives). Notez que si Précision et Rappel sont égaux, le score F1 équivaut simplement à précision / rappel.

Quant à la question de savoir si la "moyenne macro pondérée" sera toujours égale à la "moyenne micro"? J'ai fait des expériences avec différents non. de déséquilibre de classes et de classes différentes et il s'avère que ce n'est pas nécessairement vrai.

Ces déclarations sont faites en supposant que nous considérons toutes les classes du même ensemble de données (contrairement à la réponse de Rahul Reddy Vemireddy)

goyuiitv
la source
0

L'avantage d'utiliser le score de macro F1 est qu'il donne un poids égal à tous les points de données, par exemple: imaginons-le comme le micro F1 prend la somme de tous les rappels et présessions de différentes étiquettes indépendamment, ce qui signifie que nous avons un déséquilibre de classe. comme T1 = 90%, T2 = 80%, T3 = 5 alors F1 Micro donne un poids égal à toute la classe et n'est pas affecté par les déviations dans la distribution de la classe log la perte de log elle pénalise les petites déviations dans la classe

Sujit Jena
la source