Come calcolare la precisione, il richiamo e la misura F per la classificazione squilibrata

Tweet Share Share

Ultimo aggiornamento il 2 agosto 2020

L’accuratezza della classificazione è il numero totale di previsioni corrette diviso per il numero totale di previsioni effettuate per un set di dati.

Come misura delle prestazioni, l’accuratezza è inappropriata per problemi di classificazione squilibrati.,

La ragione principale è che il numero schiacciante di esempi della classe di maggioranza (o classi) travolgerà il numero di esempi nella classe di minoranza, il che significa che anche i modelli non abili possono ottenere punteggi di precisione del 90% o del 99%, a seconda di quanto sia grave lo squilibrio di classe.

Un’alternativa all’utilizzo dell’accuratezza della classificazione è l’utilizzo di metriche di precisione e richiamo.

In questo tutorial, scoprirai come calcolare e sviluppare un’intuizione per la precisione e il richiamo per la classificazione squilibrata.,

Dopo aver completato questo tutorial, saprai:

  • La precisione quantifica il numero di previsioni di classe positive che appartengono effettivamente alla classe positiva.
  • Recall quantifica il numero di previsioni di classe positive fatte da tutti gli esempi positivi nel set di dati.
  • F-Measure fornisce un singolo punteggio che bilancia sia le preoccupazioni di precisione e richiamo in un numero.

Avvia il tuo progetto con il mio nuovo libro Squilibrated Classification with Python, inclusi tutorial passo-passo e i file di codice sorgente Python per tutti gli esempi.,

Iniziamo.

  • Aggiornamento Jan / 2020: Miglioramento del linguaggio sull’obiettivo di precisione e richiamo. Errori di battitura fissi su ciò che la precisione e il richiamo cercano di minimizzare (grazie per i commenti!).
  • Aggiornamento febbraio / 2020: Errore di battitura fisso nel nome della variabile per il richiamo e f1.

Come calcolare la precisione, il richiamo e la misura F per la classificazione squilibrata
Foto di Waldemar Merger, alcuni diritti riservati.,

Tutorial Panoramica

Questo tutorial è diviso in cinque parti, che sono:

  1. Matrice di Confusione per Squilibrata Classificazione
  2. Precisione per Squilibrata Classificazione
  3. il Richiamo per le Squilibrata Classificazione
  4. Precisione vs Richiamo per la Squilibrata Classificazione
  5. F-Misura Equilibrata Classificazione

Matrice di Confusione per Squilibrata Classificazione

Prima di tuffarci in precisione e richiamo, è importante esaminare la matrice di confusione.,

Per problemi di classificazione squilibrati, la classe di maggioranza viene tipicamente indicata come risultato negativo (ad esempio “nessun cambiamento” o “risultato negativo del test”) e la classe di minoranza viene tipicamente indicata come risultato positivo (ad esempio “cambiamento” o “risultato positivo del test”).

La matrice di confusione fornisce maggiori informazioni non solo sulle prestazioni di un modello predittivo, ma anche su quali classi vengono previste correttamente, quali in modo errato e quale tipo di errori vengono commessi.,

La matrice di confusione più semplice è per un problema di classificazione a due classi, con classi negative (classe 0) e positive (classe 1).

In questo tipo di matrice di confusione, ogni cella della tabella ha un nome specifico e ben compreso, riassunto come segue:

Le metriche di precisione e richiamo sono definite in termini di celle nella matrice di confusione, in particolare termini come veri positivi e falsi negativi.

Ora che abbiamo rispolverato la matrice di confusione, diamo un’occhiata più da vicino alla metrica di precisione.,

Precisione per la classificazione squilibrata

La precisione è una metrica che quantifica il numero di previsioni positive corrette fatte.

Precisione, quindi, calcola la precisione per la classe di minoranza.

Viene calcolato come il rapporto tra esempi positivi correttamente previsti diviso per il numero totale di esempi positivi previsti.

La precisione valuta la frazione delle istanze classificate corrette tra quelle classificate come positive

— Pagina 52, imparando da set di dati squilibrati, 2018.,

Precisione per la classificazione binaria

In un problema di classificazione squilibrato con due classi, la precisione viene calcolata come il numero di veri positivi diviso per il numero totale di veri positivi e falsi positivi.

  • Precision = TruePositives/(TruePositives + FalsePositives)

Il risultato è un valore compreso tra 0.0 per nessuna precisione e 1.0 per la precisione completa o perfetta.

Rendiamo concreto questo calcolo con alcuni esempi.,

Si consideri un set di dati con un rapporto minoranza / maggioranza 1:100, con 100 esempi di minoranza e 10.000 esempi di classe di maggioranza.

Un modello fa previsioni e prevede 120 esempi come appartenenti alla classe di minoranza, 90 dei quali sono corretti e 30 dei quali sono errati.

La precisione di questo modello, è calcolato come:

  • Precisione = TruePositives / (TruePositives + FalsePositives)
  • Precisione = 90 / (90 + 30)
  • Precisione = 90 / 120
  • Precisione = 0.75

Il risultato è di una precisione di 0.75, che è un valore ragionevole, ma non eccezionale.,

Puoi vedere che la precisione è semplicemente il rapporto tra le previsioni positive corrette di tutte le previsioni positive fatte o l’accuratezza delle previsioni di classe minoritaria.

Si consideri lo stesso set di dati, in cui un modello prevede 50 esempi appartenenti alla classe di minoranza, 45 dei quali sono veri positivi e cinque dei quali sono falsi positivi. Possiamo calcolare la precisione per questo modello come segue:

  • Precision = TruePositives/(TruePositives + FalsePositives)
  • Precision = 45 / (45 + 5)
  • Precisione = 45/50
  • Precisione = 0.,90

In questo caso, sebbene il modello prevedesse molti meno esempi come appartenenti alla classe di minoranza, il rapporto tra esempi positivi corretti è molto migliore.

Questo evidenzia che sebbene la precisione sia utile, non racconta tutta la storia. Non commenta quanti esempi di classe positivi reali sono stati predetti come appartenenti alla classe negativa, i cosiddetti falsi negativi.

Vuoi iniziare con la classificazione degli squilibri?

Prendi il mio corso accelerato gratuito di 7 giorni (con codice di esempio).,

Fare clic per iscriversi e anche ottenere una versione PDF Ebook gratuito del corso.

Scarica il tuo Mini-corso GRATUITO

Precisione per la classificazione multi-classe

La precisione non si limita ai problemi di classificazione binaria.

In un problema di classificazione squilibrato con più di due classi, la precisione viene calcolata come la somma dei veri positivi in tutte le classi divisa per la somma dei veri positivi e dei falsi positivi in tutte le classi.,

  • Precision = Sum c in C TruePositives_c/Sum c in C (TruePositives_c + FalsePositives_c)

Ad esempio, potremmo avere un problema di classificazione multiclasse squilibrato in cui la classe di maggioranza è la classe negativa, ma ci sono due classi di minoranza positive: classe 1 e classe 2. La precisione può quantificare il rapporto tra le previsioni corrette in entrambe le classi positive.,

Si consideri un set di dati con un rapporto 1:1:100 minoranza alla classe di maggioranza, che è un rapporto 1:1 per ogni classe positiva e un rapporto 1:100 per le classi di minoranza alla classe di maggioranza, e abbiamo 100 esempi in ogni classe di minoranza, e 10.000 esempi nella classe di maggioranza.

Un modello fa previsioni e prevede 70 esempi per la prima classe di minoranza, dove 50 sono corretti e 20 non corretti. Prevede 150 per la seconda classe con 99 corretto e 51 errato., La precisione può essere calcolata per questo modello come segue:

Possiamo vedere che il calcolo metrico di precisione scala man mano che aumentiamo il numero di classi di minoranza.

Calcola la precisione con Scikit-Learn

Il punteggio di precisione può essere calcolato utilizzando la funzione precision_score() scikit-learn.

Ad esempio, possiamo usare questa funzione per calcolare la precisione per gli scenari nella sezione precedente.

In primo luogo, il caso in cui ci sono 100 positivi a 10.000 esempi negativi, e un modello prevede 90 veri positivi e 30 falsi positivi. L’esempio completo è elencato di seguito.,

Running the example calculates the precision, matching our manual calculation.

1
Precision: 0.,750

Successivamente, possiamo utilizzare la stessa funzione per calcolare la precisione per il problema multiclasse con 1:1:100, con 100 esempi in ogni classe di minoranza e 10.000 nella classe di maggioranza. Un modello prevede 50 veri positivi e 20 falsi positivi per la classe 1 e 99 veri positivi e 51 falsi positivi per la classe 2.,

Quando si utilizza la funzione precision_score() per la classificazione multiclasse, è importante specificare le classi di minoranza tramite l’argomento “labels” e eseguire impostare l’argomento “average” su “micro” per garantire che il calcolo venga eseguito come previsto.

L’esempio completo è elencato di seguito.

Ancora una volta, l’esecuzione dell’esempio calcola la precisione per l’esempio multiclasse corrispondente al nostro calcolo manuale.,

1
Precisione: 0.,677

Richiamo per la classificazione squilibrata

Il richiamo è una metrica che quantifica il numero di previsioni positive corrette fatte da tutte le previsioni positive che avrebbero potuto essere fatte.

A differenza della precisione che commenta solo le previsioni positive corrette su tutte le previsioni positive, recall fornisce un’indicazione delle previsioni positive perse.

In questo modo, recall fornisce una nozione della copertura della classe positiva.,

Per l’apprendimento squilibrato, il richiamo viene in genere utilizzato per misurare la copertura della classe di minoranza.

— Pagina 27, Apprendimento squilibrato: fondamenti, algoritmi e applicazioni, 2013.

Richiamo per la classificazione binaria

In un problema di classificazione squilibrato con due classi, il richiamo viene calcolato come il numero di veri positivi diviso per il numero totale di veri positivi e falsi negativi.

  • Recall = TruePositives/(TruePositives + FalseNegatives)

Il risultato è un valore compreso tra 0.,0 per nessun richiamo e 1.0 per richiamo completo o perfetto.

Rendiamo concreto questo calcolo con alcuni esempi.

Come nella sezione precedente, si consideri un set di dati con 1:100 minority to majority ratio, con 100 esempi di minoranza e 10.000 esempi di classe di maggioranza.

Un modello fa previsioni e predice correttamente 90 delle previsioni di classe positive e 10 in modo errato. Possiamo calcolare il richiamo per questo modello come segue:

  • Recall = TruePositives / (TruePositives + FalseNegatives)
  • Recall = 90 / (90 + 10)
  • Recall = 90 / 100
  • Recall = 0.,9

Questo modello ha un buon richiamo.

Richiamo per la classificazione multi-classe

Il richiamo non è limitato ai problemi di classificazione binaria.

In un problema di classificazione squilibrato con più di due classi, il richiamo viene calcolato come la somma dei veri positivi in tutte le classi divisa per la somma dei veri positivi e dei falsi negativi in tutte le classi.,

  • Recall = Sum c in C TruePositives_c / Sum c in C (TruePositives_c + FalseNegatives_c)

Come nella sezione precedente, si consideri un set di dati con un rapporto di minoranza 1:1:100 classe di maggioranza, che è un rapporto 1:1 per ogni classe positiva e un rapporto 1:100 per le classi di minoranza alla classe di maggioranza, e abbiamo 100 esempi 10.000 esempi nella classe di maggioranza.

Un modello prevede 77 esempi correttamente e 23 in modo errato per la classe 1 e 95 correttamente e cinque in modo errato per la classe 2., Possiamo calcolare il richiamo per questo modello come segue:

Calcola il richiamo con Scikit-Learn

Il punteggio di richiamo può essere calcolato utilizzando la funzione recall_score() scikit-learn.

Ad esempio, possiamo utilizzare questa funzione per calcolare il richiamo per gli scenari di cui sopra.

In primo luogo, possiamo considerare il caso di uno squilibrio 1:100 con 100 e 10.000 esempi rispettivamente, e un modello prevede 90 veri positivi e 10 falsi negativi.

L’esempio completo è elencato di seguito.

Eseguendo l’esempio, possiamo vedere che il punteggio corrisponde al calcolo manuale sopra.,

1
Richiamo: 0.,900

Possiamo anche usare recall_score() per problemi di classificazione multiclasse squilibrati.

In questo caso, il set di dati ha uno squilibrio 1:1:100, con 100 in ogni classe di minoranza e 10.000 nella classe di maggioranza. Un modello prevede 77 veri positivi e 23 falsi negativi per la classe 1 e 95 veri positivi e cinque falsi negativi per la classe 2.

L’esempio completo è elencato di seguito.

Ancora una volta, l’esecuzione dell’esempio calcola il richiamo per l’esempio multiclasse corrispondente al nostro calcolo manuale.,

1
Richiamo: 0.860

di Precisione contro, Richiamo per la classificazione squilibrata

Puoi decidere di utilizzare precision o recall sul tuo problema di classificazione squilibrata.

La massimizzazione della precisione ridurrà al minimo il numero di falsi positivi, mentre la massimizzazione del richiamo ridurrà al minimo il numero di falsi negativi.

  • Precisione: appropriato quando si minimizzano i falsi positivi è la messa a fuoco.
  • Recall: appropriato quando si minimizzano i falsi negativi è il focus.

A volte, vogliamo previsioni eccellenti della classe positiva. Vogliamo alta precisione e alta richiamo.,

Questo può essere difficile, poiché spesso gli aumenti di richiamo spesso vanno a scapito delle diminuzioni di precisione.

Nei set di dati squilibrati, l’obiettivo è migliorare il richiamo senza danneggiare la precisione. Questi obiettivi, tuttavia, sono spesso in conflitto, poiché al fine di aumentare il TP per la classe di minoranza, il numero di FP è spesso aumentato, con conseguente riduzione della precisione.

— Pagina 55, Apprendimento squilibrato: fondamenti, algoritmi e applicazioni, 2013.,

Tuttavia, invece di scegliere una misura o l’altra, possiamo scegliere una nuova metrica che combina precisione e richiamo in un unico punteggio.

F-Misura per la classificazione squilibrata

La precisione della classificazione è ampiamente utilizzata perché è una singola misura utilizzata per riassumere le prestazioni del modello.

F-Measure fornisce un modo per combinare sia la precisione che il richiamo in un’unica misura che cattura entrambe le proprietà.

Da solo, né precision né recall raccontano l’intera storia., Possiamo avere una precisione eccellente con un richiamo terribile, o alternativamente, una precisione terribile con un richiamo eccellente. F-measure fornisce un modo per esprimere entrambe le preoccupazioni con un singolo punteggio.

Una volta che la precisione e il richiamo sono stati calcolati per un problema di classificazione binaria o multiclasse, i due punteggi possono essere combinati nel calcolo della misura F.

La misura F tradizionale è calcolata come segue:

  • F-Measure = (2 * Precision * Recall) / (Precision + Recall)

Questa è la media armonica delle due frazioni., Questo è talvolta chiamato F-Score o F1-Score e potrebbe essere la metrica più comune utilizzata su problemi di classificazione squilibrati.

the la misura F1, che pesa la precisione e richiama allo stesso modo, è la variante più spesso utilizzata quando si apprende da dati squilibrati.

— Pagina 27, Apprendimento squilibrato: fondamenti, algoritmi e applicazioni, 2013.

Come la precisione e il richiamo, un punteggio F-Measure scarso è 0.0 e un punteggio F-Measure migliore o perfetto è 1.,0

Per esempio, una perfetta precisione e richiamo punteggio perfetto F-Misura punteggio:

  • F-Measure = (2 * Precisione * Recall) / (Precisione + Richiamo)
  • F-Misura = (2 * 1.0 * 1.0) / (1.0 + 1.0)
  • F-Misura = (2 * 1.0) / 2.0
  • F-Measure = 1.0

facciamo questo calcolo cemento con un esempio pratico.

Si consideri un set di dati di classificazione binaria con 1:100 minority to majority ratio, con 100 esempi di minoranza e 10.000 esempi di classe di maggioranza.,

Considera un modello che predice 150 esempi per la classe positiva, 95 sono corretti (veri positivi), il che significa che cinque sono stati persi (falsi negativi) e 55 sono errati (falsi positivi).

Siamo in grado di calcolare con precisione come segue:

  • Precisione = TruePositives / (TruePositives + FalsePositives)
  • Precisione = 95 / (95 + 55)
  • Precisione = 0.633

Siamo in grado di calcolare il richiamo come segue:

  • Recall = TruePositives / (TruePositives + FalseNegatives)
  • Richiamo = 95 / (95 + 5)
  • Recall = 0.,95

Questo dimostra che il modello ha scarsa precisione, ma eccellente richiamo.

Infine, possiamo calcolare la Misura F come segue:

Possiamo vedere che il buon richiamo livella la scarsa precisione, dando un punteggio F-measure valido o ragionevole.

Calcola F-Measure Con Scikit-Learn

Il punteggio F-measure può essere calcolato utilizzando la funzione f1_score() scikit-learn.

Ad esempio, usiamo questa funzione per calcolare F-Measure per lo scenario sopra.,

Questo è il caso di uno squilibrio 1:100 con 100 e 10.000 esempi rispettivamente, e un modello prevede 95 veri positivi, cinque falsi negativi e 55 falsi positivi.

L’esempio completo è elencato di seguito.

L’esecuzione dell’esempio calcola la misura F, corrispondente al nostro calcolo manuale, all’interno di alcuni errori di arrotondamento minori.,

1
F-Misura: 0.,760

Ulteriori letture

Questa sezione fornisce più risorse sull’argomento se stai cercando di approfondire.

Tutorial

  • Come calcolare precisione, Richiamo, F1, e di più per i modelli di apprendimento profondo
  • Come utilizzare curve ROC e curve di precisione-richiamo per la classificazione in Python

Documenti

  • Un’analisi sistematica delle misure di prestazioni per compiti di classificazione, 2009.

Libri

  • Apprendimento squilibrato: fondamenti, algoritmi e applicazioni, 2013.,
  • Imparare da set di dati squilibrati, 2018.

API

  • impara.metrica.precision_score API.
  • impara.metrica.ricall_score API.
  • impara.metrica.API f1_score.

Articoli

  • Matrice di confusione, Wikipedia.
  • Precisione e richiamo, Wikipedia.
  • Punteggio F1, Wikipedia.

Sommario

In questo tutorial, hai scoperto come calcolare e sviluppare un’intuizione per la precisione e il richiamo per la classificazione squilibrata.,

In particolare, hai imparato:

  • La precisione quantifica il numero di previsioni di classe positive che appartengono effettivamente alla classe positiva.
  • Recall quantifica il numero di previsioni di classe positive fatte da tutti gli esempi positivi nel set di dati.
  • F-Measure fornisce un singolo punteggio che bilancia sia le preoccupazioni di precisione e richiamo in un numero.

Hai qualche domanda?
Fai le tue domande nei commenti qui sotto e farò del mio meglio per rispondere.,

Ottieni un handle sulla classificazione squilibrata!

Sviluppa modelli di apprendimento squilibrati in pochi minuti

…con poche righe di codice python

Scopri come nel mio nuovo Ebook:
Classificazione squilibrata con Python

Fornisce tutorial di autoapprendimento e progetti end-to-end su:
Metriche delle prestazioni, metodi di sottocampionamento, SMOTE, Spostamento della soglia, calibrazione della probabilità, algoritmi sensibili ai costi
e molto altro…,

Porta metodi di classificazione squilibrati ai tuoi progetti di apprendimento automatico

Guarda cosa c’è dentro

Tweet Condividi Condividi

Share

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *