Come ottenere una matrice di confusione aggregata da n classificazioni diverse


8

Voglio testare l'accuratezza di una metodologia. L'ho eseguito ~ 400 volte e ho ottenuto una classificazione diversa per ogni corsa. Ho anche la verità fondamentale, vale a dire la vera classificazione su cui mettere alla prova.

Per ogni classificazione ho calcolato una matrice di confusione. Ora voglio aggregare questi risultati per ottenere la matrice generale di confusione. Come posso raggiungerlo?

Posso sommare tutte le matrici di confusione per ottenere quella complessiva?

Risposte:


4

Non conosco una risposta standard a questo, ma ci ho pensato qualche volta fa e ho alcune idee da condividere.

Quando si dispone di una matrice di confusione, si ha più o meno un'immagine di come il modello di classificazione confonde (classifichi erroneamente) le classi. Quando ripeti i test di classificazione finirai per avere più matrici di confusione. La domanda è come ottenere una matrice di confusione aggregata significativa. La risposta dipende dal significato di significato (gioco di parole inteso). Penso che non esista una sola versione di significativa.

Un modo è seguire l'idea approssimativa di test multipli. In generale, testate più volte qualcosa per ottenere risultati più accurati. Come principio generale si può ragionare sul fatto che la media dei risultati dei test multipli riduce la varianza delle stime, quindi di conseguenza aumenta la precisione delle stime. Puoi procedere in questo modo, ovviamente, sommando la posizione per posizione e quindi dividendo per il numero di test. Puoi andare oltre e invece di stimare solo un valore per ogni cella della matrice di confusione, puoi anche calcolare alcuni intervalli di confidenza, valori t e così via. Questo è OK dal mio punto di vista. Ma racconta solo un lato della storia.

L'altro lato della storia che potrebbe essere studiato è quanto siano stabili i risultati per gli stessi casi. Per esemplificare che prenderò un esempio estremo. Supponiamo di avere un modello di classificazione per 3 classi. Supponiamo che queste classi siano nella stessa proporzione. Se il tuo modello è in grado di prevedere perfettamente una classe e le altre 2 con prestazioni simili casuali, otterrai un rapporto di classificazione errata di 0,33 + 0,166 + 0,166 = 0,66. Questo potrebbe sembrare buono, ma anche se dai un'occhiata a una singola matrice di confusione, non saprai che le tue prestazioni nelle ultime 2 classi variano notevolmente. Test multipli possono aiutare. Ma fare una media delle matrici di confusione lo rivelerebbe? La mia convinzione no. La media fornirà più o meno lo stesso risultato e l'esecuzione di più test ridurrà solo la varianza della stima.

Quindi un altro modo per comporre le matrici di confusione coinvolgerebbe meglio una densità di previsione per ogni istanza. Si può costruire questa densità contando per ogni istanza, il numero di volte in cui è stata prevista una determinata classe. Dopo la normalizzazione, avrai per ogni istanza una densità di previsione piuttosto che una singola etichetta di previsione. Puoi vedere che una singola etichetta di previsione è simile con una densità degenerata in cui hai probabilità 1 per la classe prevista e 0 per le altre classi per ogni istanza separata. Ora avendo queste densità si può costruire una matrice di confusione aggiungendo le probabilità di ciascuna istanza e classe prevista alla cella corrispondente della matrice di confusione aggregata.

Si può sostenere che ciò darebbe risultati simili come il metodo precedente. Tuttavia, penso che ciò possa accadere a volte, spesso quando il modello presenta una bassa varianza, il secondo metodo è meno influenzato dal modo in cui i campioni dei test vengono estratti, e quindi più stabile e più vicino alla realtà.

Inoltre, il secondo metodo potrebbe essere modificato al fine di ottenere un terzo metodo, in cui si può assegnare come previsione l'etichetta con la più alta densità dalla previsione di una determinata istanza.

Non ho implementato queste cose, ma ho intenzione di studiare ulteriormente perché credo che valga la pena spendere del tempo.


Cosa intendi per rapporto di classificazione errata nel quarto paragrafo?
gc5,

rapporto di classificazione errata = (numero di istanze correttamente classificato) / (numero totale di istanze); in quel paragrafo abbiamo 0,33 = proporzione di ogni classe (chiamiamo etichette come c1, c2, c3); abbiamo 0,33 * 1,0 (c1 sono tutti correttamente classificati), + 0,33 * 0,5 (c2 sono casuali classificati come c2 o c3) + 0,33 * 0,5 (c3 sono casuali classificati come c2 o c3) = 0,33 + 0,166 + 0,166 = 0,66 ( istanze classificate correttamente / numero totale di istanze)
rapaio

4

Esistono alcuni modi per ottenere la tua "matrice di confusione principale".

  1. Somma tutte le matrici di confusione insieme: come hai suggerito, sommando questo si ottiene una matrice di confusione. Il problema è che non è possibile interpretare i totali.

  2. Media delle voci. Questo metodo è uguale al numero uno, ma dividi ogni voce per il numero di prove (~ 400 nel tuo caso). Questo sarebbe il mio metodo preferito perché poi puoi effettivamente tradurre ogni categoria in un (medio) + - (una misurazione dell'errore) e vedere effettivamente quali categorie sono le più volatili o stabili. Attento a interpretare questa "misurazione dell'errore" però.

  3. Segnala una misurazione specifica del problema dei numeri di confusione. Ad esempio, se i tuoi numeri hanno valori anomali, le mediane preferirebbero le medie.

Esistono anche altre statistiche che è possibile segnalare. È possibile ripetere il metodo per tenere traccia delle singole classificazioni. Quindi possiamo dire altre importanti statistiche come '% di classificazioni che rimangono le stesse e sono accurate', ecc ...


1
Quando dici, quando sommi i risultati non puoi interpretare i totali, intendi che ogni classificazione può avere un peso diverso e il suo contributo può essere sopra / sotto stimato nel totale? Se suppongo di eseguire, ad esempio, 4 test indipendenti, posso supporre che ogni classificazione abbia lo stesso peso e interpretare (indolore) i totali? Spero sia chiaro ..
gc5

1
Ciò che intendevo comunicare è che perdiamo traccia di ciò che significano i numeri reali. Ad esempio, se ne ho 4 in una voce specifica nella corsa 1 e ottengo 5 in quella stessa voce nella corsa 2, è difficile dire esattamente cosa significhi 4 + 5 = 9. Preferirei guardare una distribuzione (% 's) o medie di dove gli individui cadono attraverso la matrice. Sembra molto più intuitivo.
nfmcclure,
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.