Come si calcola la precisione e il richiamo per la classificazione multiclasse utilizzando la matrice di confusione?


92

Mi chiedo come calcolare la precisione e il richiamo usando una matrice di confusione per un problema di classificazione multi-classe. In particolare, un'osservazione può essere assegnata solo alla sua classe / etichetta più probabile. Vorrei calcolare:

  • Precisione = TP / (TP + FP)
  • Richiama = TP / (TP + FN)

per ogni classe, quindi calcola la misura F media.


Questo docx , Valutazione di un modello di classificazione - Cosa mi dice precisione e richiamo? , da Compumine fornisce una semplice introduzione alla matrice di confusione e alle misure che ne derivano. Aiuta a creare la matrice di confusione, precisione, richiamo, specificità e accuratezza.
Jayran Choopan,

4
trova la risposta qui. Ottima spiegazione youtube.com/watch?v=FAr2GmWNbT0

Il collegamento Compumine è morto.
Trenton,

Per il caso multiclasse, quello che capisco che lungo le righe (asse = 0) è il richiamo e lungo le colonne (asse = 1) è la precisione. rxnlp.com/…
MD ZIA ULLAH il

Risposte:


69

In un caso di 2 ipotesi, la matrice di confusione è di solito:

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

dove ho usato qualcosa di simile alla tua notazione:

  • TP = vero positivo (dichiarare H1 quando, in verità, H1),
  • FN = falso negativo (dichiarare H0 quando, in verità, H1),
  • FP = falso positivo
  • TN = vero negativo

Dai dati grezzi, i valori nella tabella sarebbero in genere i conteggi per ciascuna occorrenza rispetto ai dati del test. Da questo, dovresti essere in grado di calcolare le quantità di cui hai bisogno.

modificare

La generalizzazione a problemi multi-classe è la somma di righe / colonne della matrice di confusione. Dato che la matrice è orientata come sopra, cioè che una determinata riga della matrice corrisponde a un valore specifico per la "verità", abbiamo:

Precisione io=MioioΣjMjio

Richiamare io=MioioΣjMioj

ioioioio


1
Nel mio caso, ci sono più di 10 classi, quindi immagino che FN significherà il conteggio totale di dichiarare la classe H (i), i! = 1; e lo stesso è FP?
Daiyue,

Ciao, mi chiedo quali saranno i valori per Precisione e Richiamo, se TP + FP = 0 e TP + FN = 0 per qualche classe effettiva nella matrice di confusione.
Daiyue,

La precisione per la classe inon è definita se non ci sono casi in cui l'algoritmo dichiara i. Il richiamo per la classe inon è definito se il set di test non include la classe i.
Dave,

Il mio obiettivo finale è calcolare la Macro F Measure, quindi ho bisogno di precisione e valori di richiamo per ogni classe i; quindi come posso calcolare la misura Macro-F se i due casi precedenti compaiono in qualche classe i? In particolare, qual è il valore di Fi, e la classe i conta come una delle classi M, che il numero di elementi in M ​​verrà conteggiato come denominatore della formula per il calcolo della misura Macro F.
Daiyue,

1
sry, potresti spiegare la tua idea in modo più chiaro?
Daiyue,

31

Buon documento di sintesi, guardando queste metriche per problemi multi-classe:

  • Sokolova, M., & Lapalme, G. (2009). Un'analisi sistematica delle misure di prestazione per le attività di classificazione. Elaborazione e gestione delle informazioni, 45 , p. 427-437. ( pdf )

L'abstract recita:

Questo documento presenta un'analisi sistematica di ventiquattro misurazioni delle prestazioni utilizzate nell'intero spettro delle attività di classificazione di Machine Learning, ovvero binario, multi-classe, multi-etichetta e gerarchica. Per ogni compito di classificazione, lo studio mette in relazione una serie di modifiche in una matrice di confusione con caratteristiche specifiche dei dati. Quindi l'analisi si concentra sul tipo di modifiche a una matrice di confusione che non modifica una misura, pertanto preserva la valutazione di un classificatore (invarianza della misura). Il risultato è la tassonomia dell'invarianza della misura rispetto a tutte le modifiche rilevanti alla distribuzione delle etichette in un problema di classificazione. Questa analisi formale è supportata da esempi di applicazioni in cui le proprietà di invarianza delle misure portano a una valutazione più affidabile dei classificatori.


2
Benvenuto nel sito, @JamesTaylor. Ti dispiacerebbe dare un riassunto delle informazioni nel documento collegato per aiutare i lettori a decidere se è quello di cui hanno bisogno e nel caso in cui il collegamento si interrompa?
gung

8

Usando sklearn e 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)

Per ottenere misure generali di precisione e richiamo, utilizzare quindi

np.mean(recall)
np.mean(precision)
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.