Come calcolare la precisione e il richiamo in una matrice di confusione 3 x 3


12
                  Predicted
                    class
               Cat  Dog Rabbit
  Actual class
           Cat   5    3      0
           Dog   2    3      1
        Rabbit   0    2     11

Come posso calcolare la precisione e richiamare in modo che sia facile calcolare il punteggio F1. La matrice di confusione normale è una dimensione 2 x 2. Tuttavia, quando diventa 3 x 3 non so come calcolare la precisione e il richiamo.

Risposte:


19

Se scrivi le definizioni di precisione (aka valore predittivo positivo PPV) e richiamo (aka sensibilità), vedi che si riferiscono a una classe indipendente da qualsiasi altra classe:

Richiamo o sensibilità è la proporzione di casi correttamente identificati come appartenenti alla classe c tra tutti i casi che appartengono veramente alla classe c .
(Dato che abbiamo un caso veramente appartenente a " c ", qual è la probabilità di prevederlo correttamente?)

Precisione o valore predittivo positivo PPV è la percentuale di casi correttamente identificati come appartenenti alla classe c tra tutti i casi in cui il classificatore afferma di appartenere alla classe c .
In altre parole, di quei casi previsti appartenenti alla classe c , quale frazione appartiene veramente alla classe c ? (Data la previsione " c ", qual è la probabilità di essere corretta?)

valore predittivo negativo NPV di quei casi previsti non appartenenti alla classe c , quale frazione non appartiene veramente alla classe c ? (Data la previsione "non c ", qual è la probabilità di essere corretta?)

Quindi puoi calcolare precisione e richiamo per ciascuna delle tue classi. Per le tabelle di confusione multi-classe, questi sono gli elementi diagonali divisi per le loro somme di riga e colonna, rispettivamente:

schema di calcolo

Fonte: Beleites, C .; Salzer, R. & Sergo, V. Convalida di modelli di classificazione soft utilizzando appartenenze a classi parziali: un concetto esteso di sensibilità e co. applicato alla classificazione dei tessuti di astrocitoma, Chemom Intell Lab Syst, 122, 12 - 22 (2013). DOI: 10.1016 / j.chemolab.2012.12.003


Grazie mille. Comprendo già l'analogia descritta nella tua soluzione. Leggerò il giornale. Accetterò questo come risposta. Non capisco PPV E NPV. Spiega questi concetti come grafici come sono stati spiegati Sens e Spec e accetterò la tua risposta.
user22149

3

Riducendo i dati a scelte forzate (classificazione) e non registrando se vi fossero "chiamate ravvicinate", si ottengono stime statistiche di precisione minima con informazioni minime, oltre ad assumere segretamente una strana funzione di utilità / perdita / costo e utilizzare soglie arbitrarie . Sarebbe molto meglio usare la massima informazione, che includerebbe le probabilità di appartenenza alla classe e non le scelte forzate.


1

Il modo più semplice è di non usare affatto confusion_matrix, usa la classificazione_report (), ti darà tutto ciò di cui hai bisogno, evviva ...

Modifica:
questo è il formato per confusion_matrix ():
[[TP, FN]
[FP, TN]]
E il rapporto di classificazione dà tutto questo


Che se stai usando python ///
Omkaar.K il

0

Se vuoi semplicemente il risultato, il mio consiglio sarebbe di non pensarci troppo e di usare gli strumenti a tua disposizione. Ecco come puoi farlo in Python;

import pandas as pd
from sklearn.metrics import classification_report

results = pd.DataFrame(
    [[1, 1],
     [1, 2],
     [1, 3],
     [2, 1],
     [2, 2],
     [2, 3],
     [3, 1],
     [3, 2],
     [3, 3]], columns=['Expected', 'Predicted'])

print(results)
print()
print(classification_report(results['Expected'], results['Predicted']))

Per ottenere il seguente output

   Expected  Predicted
0         1          1
1         1          2
2         1          3
3         2          1
4         2          2
5         2          3
6         3          1
7         3          2
8         3          3

             precision    recall  f1-score   support

          1       0.33      0.33      0.33         3
          2       0.33      0.33      0.33         3
          3       0.33      0.33      0.33         3

avg / total       0.33      0.33      0.33         9

0

Di seguito è riportato un esempio di una matrice di confusione multi-classe ipotizzando che le nostre etichette di classe siano A, B e C

A / P A B C Somma
A 10 3 4 17
B 2 12 6 20
C 6 3 9 18

Somma 18 18 19 55

Ora calcoliamo tre valori per Precisione e Richiama ciascuno e li chiamiamo Pa, Pb e Pc; e similmente Ra, Rb, Rc.

Conosciamo Precisione = TP / (TP + FP), quindi per Pa vero positivo sarà A effettivo previsto come A, ovvero 10, resto delle due celle in quella colonna, sia che si tratti di B o C, rendono Falso positivo. Così

Pa = 10/18 = 0,55 Ra = 10/17 = 0,59

Ora precisione e richiamo per la classe B sono Pb e Rb. Per la classe B, il vero positivo è B effettivo previsto come B, ovvero la cella contenente il valore 12 e il resto delle due celle in quella colonna rendono Falso positivo, quindi

Pb = 12/18 = 0.67 Rb = 12/20 = 0.6

Allo stesso modo Pc = 9/19 = 0.47 Rc = 9/18 = 0.5

Le prestazioni complessive del classificatore saranno determinate dalla precisione media e dal richiamo medio. Per questo moltiplichiamo il valore di precisione per ogni classe per il numero effettivo di istanze per quella classe, quindi le aggiungiamo e le dividiamo per il numero totale di istanze. Piace ,

Precisione media = (0,55 * 17 + 0,67 * 20 + 0,47 * 18) / 55 = 31,21 / 55 = 0,57 Richiamo medio = (0,59 * 17 + 0,6 * 20 + 0,5 * 18) / 55 = 31,03 / 55 = 0,56

spero possa essere d'aiuto

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.