Comment calculer la précision et le rappel dans une matrice de confusion 3 x 3
12
Predicted
class
Cat Dog Rabbit
Actual class
Cat 5 3 0
Dog 2 3 1
Rabbit 0 2 11
Comment puis-je calculer la précision et le rappel pour qu'il devienne facile de calculer le score F1. La matrice de confusion normale est une dimension 2 x 2. Cependant, quand il devient 3 x 3, je ne sais pas comment calculer la précision et le rappel.
Si vous définissez les définitions de précision (aka valeur prédictive positive PPV) et de rappel (aka sensibilité), vous voyez qu'elles se rapportent à une classe indépendante de toute autre classe:
Le rappel ou la senstivité est la proportion de cas correctement identifiés comme appartenant à la classe c parmi tous les cas qui appartiennent vraiment à la classe c .
(Étant donné que nous avons un cas appartenant vraiment à " c ", quelle est la probabilité de prédire cela correctement?)
La précision ou la valeur prédictive positive PPV est la proportion de cas correctement identifiés comme appartenant à la classe c parmi tous les cas dont le classificateur prétend qu'ils appartiennent à la classe c .
En d'autres termes, parmi les cas prévus pour appartenir à la classe c , quelle fraction appartient vraiment à la classe c ? (Étant donné la prédiction " c ", quelle est la probabilité d'être correct?)
valeur prédictive négative La VAN de ces cas ne devrait pas appartenir à la classe c , quelle fraction n'appartient vraiment pas à la classe c ? (Étant donné la prédiction "pas c ", quelle est la probabilité d'être correct?)
Vous pouvez donc calculer la précision et le rappel pour chacune de vos classes. Pour les tables de confusion multi-classes, ce sont les éléments diagonaux divisés respectivement par leurs sommes de ligne et de colonne:
Merci beaucoup. Je comprends déjà l'analogie décrite dans votre solution. Je vais lire du papier. J'accepterai cela comme une réponse. Je ne comprends pas PPV ET NPV.Veuillez expliquer ces concepts aussi graphiquement que les Sens et Spec ont été expliqués et j'accepterai votre réponse.
user22149
3
En réduisant les données à des choix forcés (classification) et en n'enregistrant pas s'il y a eu des «appels rapprochés», vous obtenez des estimations statistiques de précision minimale et d'informations minimales, en plus de supposer secrètement une fonction d'utilité / perte / coût étrange et d'utiliser des seuils arbitraires . Il serait bien préférable d'utiliser un maximum d'informations, qui comprendraient les probabilités d'appartenance à une classe et non des choix forcés.
La façon la plus simple est de ne pas utiliser du tout confusion_matrix, utilisez classification_report (), cela vous donnera tout ce dont vous avez besoin, bravo ...
Edit:
c'est le format de confusion_matrix ():
[[TP, FN]
[FP, TN]]
Et le rapport de classement donne tout cela
Si vous voulez simplement le résultat, mon conseil serait de ne pas trop réfléchir et d'utiliser les outils à votre disposition. Voici comment vous pouvez le faire en Python;
Voici un exemple de matrice de confusion multi-classes en supposant que nos étiquettes de classe sont A, B et C
A / P A B C Somme
A 10 3 4 17
B 2 12 6 20
C 6 3 9 18
Somme 18 18 19 55
Maintenant, nous calculons trois valeurs pour Précision et Rappel chacun et les appelons Pa, Pb et Pc; et de même Ra, Rb, Rc.
Nous savons que Précision = TP / (TP + FP), donc pour Pa, le vrai positif sera le réel A prédit comme A, c'est-à-dire 10, le reste des deux cellules de cette colonne, que ce soit B ou C, rende faux positif. Donc
Pa = 10/18 = 0,55 Ra = 10/17 = 0,59
Maintenant, la précision et le rappel pour la classe B sont Pb et Rb. Pour la classe B, le vrai positif est le B réel prédit comme B, c'est-à-dire que la cellule contenant la valeur 12 et que les deux autres cellules de cette colonne deviennent fausses positives, donc
Pb = 12/18 = 0,67 Rb = 12/20 = 0,6
De même Pc = 9/19 = 0,47 Rc = 9/18 = 0,5
Les performances globales du classificateur seront déterminées par la précision moyenne et le rappel moyen. Pour cela, nous multiplions la valeur de précision pour chaque classe par le nombre réel d'instances pour cette classe, puis nous les ajoutons et les divisons par le nombre total d'instances. Comme ,
En réduisant les données à des choix forcés (classification) et en n'enregistrant pas s'il y a eu des «appels rapprochés», vous obtenez des estimations statistiques de précision minimale et d'informations minimales, en plus de supposer secrètement une fonction d'utilité / perte / coût étrange et d'utiliser des seuils arbitraires . Il serait bien préférable d'utiliser un maximum d'informations, qui comprendraient les probabilités d'appartenance à une classe et non des choix forcés.
la source
La façon la plus simple est de ne pas utiliser du tout confusion_matrix, utilisez classification_report (), cela vous donnera tout ce dont vous avez besoin, bravo ...
Edit:
c'est le format de confusion_matrix ():
[[TP, FN]
[FP, TN]]
Et le rapport de classement donne tout cela
la source
Si vous voulez simplement le résultat, mon conseil serait de ne pas trop réfléchir et d'utiliser les outils à votre disposition. Voici comment vous pouvez le faire en Python;
Pour obtenir la sortie suivante
la source
Voici un exemple de matrice de confusion multi-classes en supposant que nos étiquettes de classe sont A, B et C
A / P A B C Somme
A 10 3 4 17
B 2 12 6 20
C 6 3 9 18
Somme 18 18 19 55
Maintenant, nous calculons trois valeurs pour Précision et Rappel chacun et les appelons Pa, Pb et Pc; et de même Ra, Rb, Rc.
Nous savons que Précision = TP / (TP + FP), donc pour Pa, le vrai positif sera le réel A prédit comme A, c'est-à-dire 10, le reste des deux cellules de cette colonne, que ce soit B ou C, rende faux positif. Donc
Pa = 10/18 = 0,55 Ra = 10/17 = 0,59
Maintenant, la précision et le rappel pour la classe B sont Pb et Rb. Pour la classe B, le vrai positif est le B réel prédit comme B, c'est-à-dire que la cellule contenant la valeur 12 et que les deux autres cellules de cette colonne deviennent fausses positives, donc
Pb = 12/18 = 0,67 Rb = 12/20 = 0,6
De même Pc = 9/19 = 0,47 Rc = 9/18 = 0,5
Les performances globales du classificateur seront déterminées par la précision moyenne et le rappel moyen. Pour cela, nous multiplions la valeur de précision pour chaque classe par le nombre réel d'instances pour cette classe, puis nous les ajoutons et les divisons par le nombre total d'instances. Comme ,
Précision moyenne = (0,55 * 17 + 0,67 * 20 + 0,47 * 18) / 55 = 31,21 / 55 = 0,57 Rappel moyen = (0,59 * 17 + 0,6 * 20 + 0,5 * 18) / 55 = 31,03 / 55 = 0,56
J'espère que ça aide
la source