Come posso facilitare la lettura di matrici di grande confusione?


9

Di recente ho pubblicato un set di dati ( link ) con 369 classi. Ho fatto un paio di esperimenti su di loro per avere un'idea di quanto sia difficile il compito di classificazione. Di solito, mi piace se ci sono matrici di confusione per vedere il tipo di errore che viene fatto. Tuttavia, un 369×369 matrice non è pratica.

C'è un modo per fornire le informazioni importanti sulle grandi matrici di confusione? Ad esempio, di solito ci sono molti 0 che non sono così interessanti. È possibile ordinare le classi in modo che la maggior parte delle voci diverse da zero si trovino intorno alla diagonale per consentire la visualizzazione di più matrici che fanno parte della matrice di confusione completa?

Ecco un esempio per una matrice di grande confusione .

Esempi in the Wild

La figura 6 di EMNIST sembra carina:

inserisci qui la descrizione dell'immagine

È facile vedere dove si trovano molti casi. Tuttavia, queste sono solo 26 classi. Se l'intera pagina fosse utilizzata al posto di una sola colonna, questa potrebbe essere probabilmente 3 volte più, ma sarebbe comunque solo 326=78 classi. Nemmeno vicino a 369 classi di HASY o 1000 di ImageNet.

Guarda anche

La mia domanda simile su CS.stackexchange


Mi dispiace ;-) Puoi provare le matrici di confusione di una contro tutte per ciascuna delle classi. Dato loro, guarda o classi in cui il comportamento non è tipico e usa una matrice di confusione completa solo su di essi.
DaL,

1
Perché non riportare semplicemente l'accuratezza del modello per ogni categoria. Chi ha davvero bisogno di vedere l'intera matrice?
Darrin Thomas,

1
@DarrinThomas Non si tratta solo di segnalarlo in un documento. Si tratta anche di analizzare personalmente gli errori.
Martin Thoma,

1
Innanzitutto è possibile normalizzare i valori per riga e quindi tracciarlo come una mappa di calore. Inoltre, è possibile ordinare la classe in base all'accuratezza di classe (valore normalizzato sulla diagonale). Suppongo che ciò aumenterebbe notevolmente la leggibilità.
Nikolas Rieble,

1
Probabilmente dovrei chiederlo di nuovo in math.SE / stackoverflow. Sono abbastanza sicuro che ci siano algoritmi che riordinano le righe / colonne in modo tale che la maggior parte del valore sia vicino alla diagonale.
Martin Thoma,

Risposte:


4

Puoi applicare una tecnica che ho descritto nella mia tesi di master (pagina 48 e seguenti) e che ho chiamato Confusion Matrix Ordering (CMO):

  1. Ordinare le colonne / righe in modo tale che la maggior parte degli errori si trovi lungo la diagonale.
  2. Dividi la matrice di confusione in più blocchi in modo tale che i singoli blocchi possano essere facilmente stampati / visualizzati e in modo tale da poter rimuovere alcuni blocchi perché ci sono pochi punti dati.

Bell'effetto collaterale: questo metodo raggruppa automaticamente anche classi simili. La Figura 5.12 della mia tesi di master mostra che:

inserisci qui la descrizione dell'immagine

È possibile applicare l'ordinamento della matrice di confusione con clana


Vedi github.com/MartinThoma/clana per un'implementazione
Martin Thoma il

1

Invece di provare a riordinare le colonne e le righe, suggerirei di provare a trovare un altro modo per visualizzare i dati.

(io,j)ioj. Inoltre, puoi avere ~ 20 matrici di confusione a grana fine: per ogni cluster, puoi mostrare la matrice di confusione delle classi, per le ~ 20 classi in ciascun cluster. Naturalmente, puoi anche estenderlo utilizzando il clustering gerarchico e avere matrici di confusione in più granularità.

Potrebbero esserci anche altre possibili strategie di visualizzazione.

Come punto filosofico generale: potrebbe anche aiutare a chiarire i tuoi obiettivi (cosa vuoi ottenere dalla visualizzazione). È possibile distinguere due tipi di utilizzo della visualizzazione:

  • Analisi esplorativa: non sei sicuro di cosa stai cercando; vuoi solo una visualizzazione che potrebbe aiutarti a cercare modelli o artefatti interessanti nei dati.

  • Figure con un messaggio: hai un messaggio particolare che vuoi che il lettore porti via e desideri escogitare una visualizzazione che aiuti a supportare quel messaggio o fornisca prove per il messaggio.

Potrebbe aiutarti a sapere a cosa stai tentando di puntare, e quindi elaborare una visualizzazione mirata a questo:

  • Se stai facendo un'analisi esplorativa, piuttosto che cercare di scegliere una visualizzazione perfetta, è spesso utile provare a creare quante più visualizzazioni riesci a pensare. Non preoccuparti se qualcuno di loro è perfetto; va bene se ognuno è difettoso, poiché ognuno potrebbe darti una prospettiva potenzialmente diversa sui dati (probabilmente sarà buono in alcuni modi e cattivo in altri).

  • Se hai un messaggio particolare che stai cercando di trasmettere o un tema che stai cercando di sviluppare, cerca una visualizzazione che supporti quel tema. È difficile dare un suggerimento specifico senza sapere quale potrebbe essere quel tema / messaggio.


0

È importante sapere perché la matrice di confusione EMNIST ha un bell'aspetto.

Ma trovo strano che non abbiano mantenuto la colorazione con numeri più alti più scuri, ad esempio la maggior parte delle classificazioni di miss vuote contenenti zeri sono di un grigio più scuro di quelle che contengono un numero intero. Non sembra coerente.

Proverei a usare lo stile EMINST tranne per mantenerlo coerente dove il colore indica il numero di voci in una cella. Bianco per zero significa, e nero per la maggior parte delle voci.

Una classificazione perfetta sarebbe una diagonale nera con triangoli superiore e inferiore completamente bianchi. Dove c'erano delle macchie grigie nei triangoli indicava problemi. Anche su un set di classe 1000 questo sarebbe utile. Per ImageNet in cui le classi sono gerarchiche, forse l'ordinamento delle colonne in modo che le sottoclassi siano raggruppate a destra della classe genitore porterebbe a macchie scure quadrate.

Inoltre, se stai ricevendo le prime 5 risposte per un'immagine, le classi potrebbero non escludersi a vicenda, in modo tale che la classificazione del cane per un'immagine di un lap_dog dovrebbe essere ancora vera, quindi in una matrice di confusione tale, le classi più generali dovrebbero essere molto più scure rispetto alle classificazioni precise (se i colori sono normalizzati.) Quindi il quadrato in alto a sinistra sarebbe più scuro.

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.