Mi chiedo come calcolare le misure di precisione e di richiamo per la classificazione multilabel multiclasse, vale a dire la classificazione dove ci sono più di due etichette e dove ogni istanza può avere più etichette?Precisione/richiamo per la classificazione multiclasse multilivello
risposta
La risposta è che devi calcolare precisione e richiamo per ogni classe, quindi calcolarli insieme. Per esempio. se voi le classi A, B, e C, allora la vostra precisione è:
(precision(A) + precision(B) + precision(C))/3
Lo stesso vale per il richiamo.
Non sono un esperto, ma questo è quello che ho determinato sulla base delle seguenti fonti:
https://list.scms.waikato.ac.nz/pipermail/wekalist/2011-March/051575.html http://stats.stackexchange.com/questions/21551/how-to-compute-precision -recall-per-multiclasse-multietichetta-classificazione
Se i tuoi dati hanno un numero di etichette sbilanciato, questa media potrebbe non riflettere la performance reale. – tashuhka
- Supponiamo che abbiamo un 3-class problema a più di classificazione con le etichette a, B e C.
- La prima cosa da fare è quello di generare una confusione matrice. Si noti che i valori nella diagonale sono sempre i veri positivi (TP).
Ora, per calcolare richiamo per l'etichetta A è possibile leggere i valori dalla matrice di confusione e di calcolo:
= TP_A/(TP_A+FN_A) = TP_A/(Total gold labels for A)
Ora, Calcoliamo precisione per l'etichetta A, si può leggere off i valori dalla matrice di confusione e calcolare:
= TP_A/(TP_A+FP_A) = TP_A/(Total predicted as A)
basta fare lo stesso per le etichette rimanenti B e C. Questo vale per tutti mu problema di classificazione lti-class.
Here è l'articolo completo che parla di come calcolare la precisione e il richiamo per qualsiasi problema di classificazione multi-classe, inclusi esempi.
La media semplice verrà eseguita se le classi sono bilanciate.
Altrimenti, il richiamo per ogni classe reale deve essere ponderato in base alla prevalenza della classe e la precisione per ogni etichetta prevista deve essere ponderata dal bias (probabilità) per ciascuna etichetta. In entrambi i casi ottieni l'accuratezza di Rand.
Un modo più diretto consiste nel creare una tabella di contingenza normalizzata (dividere per N in modo che la tabella aggiunga 1 per ogni combinazione di etichetta e classe) e aggiungere la diagonale per ottenere Precisione del Rand.
Ma se le classi non sono bilanciate, il bias rimane e un metodo corretto caso come kappa è più appropriato, o meglio ancora analisi ROC o una misura corretta caso come informalità (altezza sopra la linea di probabilità in ROC).
Per la classificazione multi-etichetta ci sono due modi per andare Considerare prima quanto segue.
- è il numero di esempi.
- è l'assegnazione dell'etichetta verità a terra dell'esempio ..
- è l'esempio .
- è le etichette previste per l'esempio .
esempio a base
Le metriche sono calcolate in modo di per datapoint. Per ogni etichetta prevista viene calcolato solo il suo punteggio, quindi questi punteggi vengono aggregati su tutti i punti dati.
- precisione = , Il rapporto tra la quantità di predetto è corretta. Il numeratore trova quante etichette nel vettore previsto sono in comune con la verità fondamentale, e il rapporto calcola, quante delle vere etichette previste sono effettivamente nella verità fondamentale.
- Ricorda = , Il rapporto di quante delle etichette effettive sono state previste. Il numeratore rileva quante etichette nel vettore previsto sono in comune con la verità di base (come sopra), quindi trova il rapporto con il numero di etichette effettive, ottenendo quindi quale frazione delle etichette effettive sono state previste.
Ci sono anche altre metriche.
basato sulle etichette
Qui le cose sono fatte etichette-saggio. Per ogni etichetta vengono calcolate le metriche (ad esempio precisione, richiamo) e quindi le metriche relative alle etichette vengono aggregate. Quindi, in questo caso si finisce col calcolare la precisione/il richiamo per ciascuna etichetta sull'intero set di dati, come per una classificazione binaria (dato che ogni etichetta ha un'assegnazione binaria), quindi aggregarla.
Il modo semplice è presentare il modulo generale.
Questa è solo un'estensione dell'equivalente multi-classe standard.
Qui il sono i veri positivi, falsi positivi, veri conteggi negativi negativi e falsi, rispettivamente, per il solo dell'etichetta .
Qui $ B $ rappresenta una metrica basata sulla matrice di confusione. Nel tuo caso inseriresti la precisione standard e richiamerai le formule. Per la media delle macro si passa nel conteggio delle etichette e poi si sommano, per la media micro si calcola innanzitutto la media, quindi si applica la funzione metrica.
Potrebbe essere interessato a dare un'occhiata al codice per le metriche mult-label here, che una parte del pacchetto mldr in R. Potresti anche essere interessato a consultare la libreria multi-label Java MULAN.
Questo è un bel carta per entrare nelle diverse metriche: A Review on Multi-Label Learning Algorithms
Il richiamo è uguale alla precisione quando si utilizza l'approccio basato su esempio per la classificazione non multilabel, ma multiclasse? – WetFish
Beh, sarebbe falso se non classificato correttamente e vero dove è stato classificato correttamente. Perché ti preoccupi di più etichette? –
+1 Che succede con i downvotes senza commenti? Ho avuto la stessa domanda e sono contento di aver trovato questa pagina. @ThomasJungblut Capisco come calcolare la precisione per una data classe, ad es. classe A, ma come dovrei calcolare la precisione per tutte le classi? È una media aritmetica della precisione per ogni classe? –
Ho trovato una domanda simile, questo potrebbe essere un duplicato: http://stackoverflow.com/questions/3856013/get-recall-sensitivity-and-precision-ppv-values-of-a-multi-class-problem-in –