Comment obtenir une matrice de confusion agrégée à partir de n classifications différentes

8

Je veux tester l'exactitude d'une méthodologie. Je l'ai couru environ 400 fois et j'ai obtenu un classement différent pour chaque course. J'ai aussi la vérité sur le terrain, c'est-à-dire la véritable classification à tester.

Pour chaque classification, j'ai calculé une matrice de confusion. Maintenant, je veux agréger ces résultats afin d'obtenir la matrice de confusion globale. Comment puis-je y parvenir?

Puis-je additionner toutes les matrices de confusion afin d'obtenir celle globale?

gc5
la source

Réponses:

4

Je ne connais pas de réponse standard à cela, mais j'y ai pensé il y a quelques temps et j'ai quelques idées à partager.

Lorsque vous avez une matrice de confusion, vous avez plus ou moins une image de la façon dont votre modèle de classification confond (classe mal) les classes. Lorsque vous répétez des tests de classification, vous finirez par avoir plusieurs matrices de confusion. La question est de savoir comment obtenir une matrice de confusion agrégée significative. La réponse dépend de la signification du sens (jeu de mots voulu). Je pense qu'il n'y a pas une seule version significative.

Une façon consiste à suivre l'idée approximative de tests multiples. En général, vous testez quelque chose plusieurs fois afin d'obtenir des résultats plus précis. En règle générale, on peut penser que la moyenne des résultats des tests multiples réduit la variance des estimations, ce qui augmente par conséquent la précision des estimations. Vous pouvez bien sûr procéder de cette manière en additionnant position par position puis en divisant par le nombre de tests. Vous pouvez aller plus loin et au lieu d'estimer uniquement une valeur pour chaque cellule de la matrice de confusion, vous pouvez également calculer des intervalles de confiance, des valeurs t, etc. C'est correct de mon point de vue. Mais cela ne raconte qu'un côté de l'histoire.

L'autre côté de l'histoire qui pourrait être étudié est la stabilité des résultats pour les mêmes instances. Pour illustrer cela, je prendrai un exemple extrême. Supposons que vous ayez un modèle de classification pour 3 classes. Supposons que ces classes soient dans la même proportion. Si votre modèle est capable de prédire parfaitement une classe et les 2 autres classes avec des performances aléatoires, vous finirez par avoir un rapport de mauvaise classification de 0,33 + 0,166 + 0,166 = 0,66. Cela peut sembler bon, mais même si vous regardez une seule matrice de confusion, vous ne saurez pas que vos performances sur les 2 dernières classes varient énormément. Plusieurs tests peuvent aider. Mais la moyenne des matrices de confusion révélerait cela? Ma croyance ne l'est pas. La moyenne donnera plus ou moins le même résultat, et faire plusieurs tests ne fera que diminuer la variance de l'estimation.

Donc, une autre façon de composer les matrices de confusion impliquerait mieux une densité de prédiction pour chaque instance. On peut construire cette densité en comptant pour chaque instance, le nombre de fois où il a été prédit une classe donnée. Après la normalisation, vous aurez pour chaque instance une densité de prédiction plutôt qu'une seule étiquette de prédiction. Vous pouvez voir qu'une seule étiquette de prédiction est similaire avec une densité dégénérée où vous avez une probabilité de 1 pour la classe prédite et de 0 pour les autres classes pour chaque instance distincte. Ayant maintenant ces densités, on peut construire une matrice de confusion en ajoutant les probabilités de chaque instance et classe prédite à la cellule correspondante de la matrice de confusion agrégée.

On peut soutenir que cela donnerait des résultats similaires à ceux de la méthode précédente. Cependant, je pense que cela pourrait être le cas parfois, souvent lorsque le modèle a une faible variance, la deuxième méthode est moins affectée par la façon dont les échantillons des tests sont tirés, et donc plus stable et plus proche de la réalité.

De plus, la deuxième méthode peut être modifiée afin d'obtenir une troisième méthode, où l'on peut attribuer comme prédiction l'étiquette avec la densité la plus élevée à partir de la prédiction d'une instance donnée.

Je n'ai pas mis en œuvre ces choses, mais je prévois d'étudier davantage, car je pense que cela vaut la peine de passer du temps.

rapaio
la source
Que voulez-vous dire par rapport au mauvais classement dans le quatrième paragraphe?
gc5
rapport de classification erronée = (nombre d'instances correctement classées) / (nombre total d'instances); dans ce paragraphe, nous avons 0,33 = proportion de chaque classe (nommons les étiquettes c1, c2, c3); nous avons 0,33 * 1,0 (c1 sont tous correctement classés), + 0,33 * 0,5 (c2 sont classés au hasard comme c2 ou c3) + 0,33 * 0,5 (c3 sont classés au hasard comme c2 ou c3) = 0,33 + 0,166 + 0,166 = 0,66 ( instances classées correctement / nombre total d'instances)
rapaio
4

Il existe plusieurs façons de réaliser votre «matrice de confusion principale».

  1. Additionnez toutes les matrices de confusion ensemble: comme vous l'avez suggéré, la somme de ces résultats donne une matrice de confusion. Le problème est que vous ne pouvez pas interpréter les totaux.

  2. Moyenne des entrées. Cette méthode est identique à la première, mais vous divisez chaque entrée par le nombre d'essais (~ 400 dans votre cas). Ce serait ma méthode préférée, car vous pouvez alors traduire chaque catégorie en (moyenne) + - (une mesure d'erreur) et voir quelles catégories sont les plus volatiles ou les plus stables. Attention cependant à interpréter cette «mesure d'erreur».

  3. Signaler une mesure spécifique du problème des nombres de confusion. Par exemple, si vos chiffres ont des valeurs aberrantes, les médianes préfèrent les moyens.

Il existe également d'autres statistiques qui peuvent être communiquées. Vous pouvez refaire la méthode pour suivre les classifications individuelles. Ensuite, nous pouvons dire d'autres statistiques importantes comme '% des classifications qui restent les mêmes et sont exactes', etc ...

nfmcclure
la source
1
Quand vous dites, lorsque vous additionnez des résultats que vous ne pouvez pas interpréter les totaux, vous voulez dire que chaque classification peut avoir un poids différent et sa contribution peut être sur / sous estimée dans le total? Si je suppose d'exécuter, par exemple, 4 tests indépendants, puis-je supposer que chaque classification a le même poids et interpréter (sans douleur) les totaux? J'espère que c'est clair ..
gc5
1
Ce que je voulais dire, c'est que nous perdons de vue ce que signifient les chiffres réels. Par exemple, si j'ai 4 dans une entrée spécifique dans le cycle 1 et que j'obtiens 5 dans cette même entrée dans le cycle 2, il est difficile de dire exactement ce que signifie 4 + 5 = 9. Je préfère regarder une distribution (%) ou des moyennes de l'endroit où les individus tombent à travers la matrice. Cela semble beaucoup plus intuitif.
nfmcclure