Matrice di confusione nell'apprendimento automatico con ESEMPIO

⚡ Riepilogo intelligente

La matrice di confusione è una tabella di misurazione delle prestazioni per i modelli di classificazione che confronta le etichette previste con le etichette effettive note, rivelando esattamente quali classi un classificatore identifica correttamente e quali invece sbaglia.

  • 🔘 Quattro possibili esiti: I veri positivi, i veri negativi, i falsi positivi e i falsi negativi riempiono ogni cella di una matrice binaria.
  • ☑️ Tipi di errore: Un falso positivo è un errore di tipo I, mentre un falso negativo è un errore di tipo II.
  • ✅ Metriche derivate: Accuratezza, precisione, richiamo, specificità e punteggio F1 derivano tutti dagli stessi quattro conteggi.
  • 🧪 Oltre l'accuratezza: In presenza di dati sbilanciati, l'accuratezza del modello ne esalta le qualità, mentre la matrice rivela in quale classe esso fallisce effettivamente.
  • ️ Vista multiclasse: N classi producono una griglia N×N in cui la diagonale contiene tutte le previsioni corrette.
  • ⚙️ Python itinerario: scikit-learn crea la stessa tabella in due righe con confusion_matrix() e classification_report().

Matrice di confusione nell'apprendimento automatico con esempio

Cos'è la matrice di confusione?

A matrice di confusione è una tecnica di misurazione delle prestazioni per machine learning classificazione. Si tratta di una tabella che mostra le prestazioni di un modello di classificazione su un insieme di dati di test per i quali i valori reali sono già noti. Il termine matrice di confusione è abbastanza semplice, ma la terminologia che si basa su di esso può essere fonte di confusione, quindi ogni elemento viene spiegato di seguito in un linguaggio semplice.

La matrice si applica a qualsiasi classificatore supervisionato — regressione logistica, un albero decisionale, un Modello ingenuo di Bayes rete neurale profonda — perché confronta solo due colonne di etichette: ciò che il modello ha previsto e ciò che era effettivamente vero.

Quattro risultati della matrice di confusione

La matrice di confusione visualizza l'accuratezza di un classificatore confrontando le classi effettive e previste. La matrice di confusione binaria è composta da quadrati:

Tabella di confusione binaria che mostra i quadranti TP, FP, FN e TN
Tabella di confusione

La tabella sopra riportata illustra i quattro quadrati che ogni matrice di confusione binaria contiene:

  • TP: Vero Positivo: Valori previsti correttamente previsti come effettivi positivi
  • FP: Falso positivo: Valori previsti erroneamente come valori positivi effettivi, ovvero valori negativi previsti come positivi
  • FN: Falso negativo: Valori positivi previsti come negativi
  • TN: Vero negativo: I valori previsti sono stati correttamente previsti come un valore negativo effettivo

La statistica attribuisce alle due celle di errore i propri nomi. Un falso positivo è un Errore di tipo I. — il modello ha lanciato un allarme che non avrebbe mai dovuto essere lanciato. Un falso negativo è un Errore di tipo II — il modello è rimasto in silenzio quando avrebbe dovuto lanciare l'allarme. Sapere quale dei due è più costoso per il tuo problema determina quale parametro aggiornerai in seguito.

È possibile calcolare il test di accuratezza a partire dalla matrice di confusione, come mostrato dalla formula seguente:

Formula di accuratezza derivata dai quattro risultati della matrice di confusione

Esempio di matrice di confusione

La matrice di confusione è un utile metodo di apprendimento automatico che consente di misurare richiamo, precisione, accuratezza e la curva AUC-ROC. L'esempio calcistico riportato di seguito illustra il significato dei termini vero positivo, vero negativo, falso positivo e falso negativo nel linguaggio comune.

Vero positivo:

Hai fatto una previsione positiva e si è rivelata vera. Ad esempio, avevi previsto che la Francia avrebbe vinto la Coppa del Mondo, e così è stato.

Vero negativo:

Avevi previsto un risultato negativo, e anche questo è vero. Avevi previsto che l'Inghilterra non avrebbe vinto, e infatti ha perso.

Falso positivo:

La tua previsione è positiva ed è falsa.

Avevi previsto che l'Inghilterra avrebbe vinto, ma ha perso.

Falso negativo:

La tua previsione è negativa e il risultato la dimostra errata.

Avevi previsto che la Francia non avrebbe vinto, ma ha vinto.

È importante ricordare che la prima parola indica se la previsione era corretta o errata (Vero o Falso) e la seconda parola descrive cosa ha previsto il modello (Positivo o Negativo).

Come calcolare una matrice di confusione

Ecco il processo passo passo per calcolare una matrice di confusione in data mining:

  • Passo 1) Innanzitutto, è necessario un set di dati di test insieme ai valori di risultato attesi.
  • Passo 2) Prevedi tutte le righe del set di dati di test.
  • Passo 3) Confronta i risultati attesi con le previsioni e conta:
    1. Il totale delle previsioni corrette di ciascuna classe.
    2. Il totale delle previsioni errate di ciascuna classe.

Successivamente, questi numeri sono organizzati nei metodi indicati di seguito:

  • Ogni riga della matrice corrisponde a una classe specifica.
  • Ogni colonna della matrice è collegata a una classe prevista.
  • I conteggi totali della classificazione corretta ed errata vengono inseriti nella tabella.
  • La somma delle previsioni corrette per una classe va inserita nella cella in cui la riga corrispondente ai risultati effettivi di quella classe incontra la colonna corrispondente ai risultati previsti: la diagonale.
  • La somma delle previsioni errate per una classe viene inserita nella riga corrispondente al valore effettivo di quella classe e nella colonna delle previsioni della classe scelta dal modello.

Il ruolo di righe e colonne è una convenzione, non una legge, e alcuni strumenti di visualizzazione traspongono il layout; pertanto, è sempre consigliabile leggere le etichette degli assi prima di interpretare una matrice. L'orientamento utilizzato in questo caso (reale sulle righe, previsto sulle colonne) è quello prodotto da scikit-learn.

Altri termini importanti che utilizzano una matrice di confusione

Una volta definiti i quattro conteggi, una famiglia di termini secondari descrive diverse sezioni della stessa tabella:

  • Valore predittivo positivo (VPP): Questo valore è molto vicino alla precisione. Una differenza significativa tra i due termini è che il PPV tiene conto della prevalenza. In una situazione in cui le classi sono perfettamente bilanciate, il valore predittivo positivo è uguale alla precisione.
  • Tasso di errore nullo: Questo termine definisce la frequenza con cui la tua previsione sarebbe errata se prevedessi sempre la classe maggioritaria. Puoi considerarlo come un parametro di riferimento per confrontare il tuo classificatore.
  • Punteggio F: Il punteggio F1 è una media ponderata del tasso di veri positivi (recall) e della precisione.
  • Curva ROC: La curva ROC rappresenta graficamente il tasso di veri positivi in ​​funzione del tasso di falsi positivi a diversi valori di soglia. Dimostra inoltre un compromesso tra sensibilità (recall) e specificità, ovvero il tasso di veri negativi.
  • Precisione: La metrica di precisione mostra l'accuratezza della classe positiva. Misura la probabilità che la previsione della classe positiva sia corretta.

Formula di precisione: veri positivi diviso per veri positivi più falsi positivi

Il punteggio massimo è 1 quando il classificatore classifica perfettamente tutti i valori positivi. La precisione da sola non è molto utile perché ignora la classe negativa. Questa metrica viene solitamente abbinata alla metrica di richiamo. Il richiamo è anche chiamato sensibilità o tasso di veri positivi e viene espresso come mostrato di seguito.

  • sensibilità: La sensibilità calcola il rapporto tra le classi positive correttamente rilevate. Questa metrica mostra quanto sia efficace il modello nel riconoscere una classe positiva.

Formula della sensibilità: veri positivi diviso per veri positivi più falsi negativi

Metriche e formule della matrice di confusione

Ciascuna delle metriche sopra elencate è un'operazione aritmetica basata sugli stessi quattro conteggi, quindi è utile vederle affiancate alla domanda a cui ognuna risponde.

Metrico Formula Domanda a cui risponde Usalo quando
Precisione (TP + TN) / (TP + TN + FP + FN) Quante previsioni si sono rivelate corrette in totale? Le classi sono approssimativamente bilanciate
Precisione TP / (TP + FP) Quando il modello indica un risultato positivo, con quale frequenza ha ragione? I falsi allarmi sono costosi
Richiamo (sensibilità) TP / (TP + FN) Di tutti i casi positivi reali, quanti sono stati effettivamente individuati? I risultati positivi mancati costano caro
Specificità TN / (TN + FP) Di tutti i casi negativi reali, quanti sono stati risolti? Anche la classe negativa è importante
Punteggio F1 2 × (Precisione × Richiamo) / (Precisione + Richiamo) Qual è il giusto equilibrio tra i due? Ti serve un numero per entrambi

Consideriamo un filtro antispam testato su 100 email che produce TP = 45, FN = 5, FP = 10 e TN = 40. L'accuratezza è (45 + 40) / 100 = 0.85. La precisione è 45 / (45 + 10) = 0.82, il richiamo è 45 / (45 + 5) = 0.90 e la specificità è 40 / (40 + 10) = 0.80. Il punteggio F1 risulta essere 0.86.

Questi numeri raccontano una storia che un singolo dato di accuratezza può nascondere: il filtro intercetta il 90% dello spam reale, ma mette erroneamente in quarantena un'email legittima su cinque segnalate. Se questo compromesso sia accettabile dipende dal costo di ogni singolo errore, ed è proprio per questo che viene riportata la matrice anziché la sola accuratezza.

Matrice di confusione per la classificazione multiclasse

I problemi di classificazione raramente si fermano a due etichette e la matrice si ridimensiona senza cambiare forma. Per N classi la tabella diventa una griglia N×N: la diagonale contiene tutte le previsioni corrette e ogni cella fuori dalla diagonale registra esattamente quale classe è stata confusa con quale altra.

Un modello a tre classi che classifica le immagini in gatto, cane e coniglio produce una griglia 3×3. Se la cella nella riga "gatto", colonna "cane" contiene 12, significa che dodici immagini di gatti sono state etichettate come cani. Questo livello di dettaglio è il motivo per cui la matrice è più utile di un punteggio: identifica la specifica coppia di classi che il modello non riesce a separare.

Precisione, richiamo e F1 sono definiti per ciascuna classe utilizzando una prospettiva "uno contro tutti", in cui la classe in questione è la classe positiva e tutte le altre sono negative. I valori per ciascuna classe vengono quindi combinati in uno dei tre modi seguenti:

  • Media macroeconomica: Calcola la metrica per ogni classe in modo indipendente, quindi calcola la media non ponderata. Ogni classe ha lo stesso peso, quindi le classi meno rilevanti non vengono penalizzate.
  • Media micro: Aggrega i conteggi di TP, FP e FN per tutte le classi prima di calcolare la metrica. Le classi più numerose sono predominanti e, per i problemi a etichetta singola, la microprecisione, il microrecall e l'accuratezza sono identici.
  • Media ponderata: Calcola la media dei punteggi per classe utilizzando come peso il numero di occorrenze effettive di ciascuna classe, mantenendo così visibile lo squilibrio tra le classi.

Scegli "macro" quando ogni classe ha la stessa importanza, e "ponderato" quando la distribuzione delle classi riflette il traffico reale.

Come creare una matrice di confusione in Python

La libreria scikit-learn crea l'intera tabella a partire da due array di etichette, quindi non è necessario alcun conteggio manuale. L'esempio seguente confronta dieci etichette vere con dieci previsioni.

from sklearn.metrics import confusion_matrix

y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0]
y_pred = [1, 0, 1, 0, 0, 1, 1, 0, 1, 0]

cm = confusion_matrix(y_true, y_pred)
print(cm)

La chiamata restituisce un array NumPy 2×2 in cui la riga 0 rappresenta la classe negativa effettiva e la riga 1 rappresenta la classe positiva effettiva:

[[4 1]
 [1 4]]

Leggendo l'array secondo la convenzione di scikit-learn si ottiene TN = 4 (in alto a sinistra), FP = 1 (in alto a destra), FN = 1 (in basso a sinistra) e TP = 4 (in basso a destra). Scomponendo questi quattro valori in una riga si ottiene la mappaping esplicito:

tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()

Per ottenere precisione, richiamo e F1 per ogni classe contemporaneamente, comprese le medie macro e ponderate descritte sopra, chiamare classification_report() invece di calcolare ogni parametro manualmente:

from sklearn.metrics import classification_report

print(classification_report(y_true, y_pred))

Per una versione con grafico, ConfusionMatrixDisplay.from_predictions(y_true, y_pred) visualizza la stessa tabella come una mappa di calore etichettata. L'elenco completo degli argomenti, incluso il labels and normalize opzioni, è documentato nel riferimento alla matrice di confusione di scikit-learn. Lo stesso passaggio di valutazione si applica ai modelli costruiti con TensorFlow, perché la metrica dipende solo dalle etichette previste.

Perché hai bisogno della matrice di confusione?

Ecco i vantaggi e i benefici derivanti dall'utilizzo di una matrice di confusione.

  • Questo esempio mostra come un modello di classificazione possa confondersi quando effettua delle previsioni.
  • La matrice di confusione fornisce informazioni non solo sugli errori commessi dal classificatore, ma anche sulle tipologie di errori che commette.
  • Questa analisi dettagliata ti aiuta a superare i limiti derivanti dall'utilizzo della sola accuratezza della classificazione.
  • Ogni colonna della matrice di confusione rappresenta le istanze di quella classe prevista.
  • Ogni riga della matrice di confusione rappresenta le istanze della classe effettiva.
  • Trasforma la valutazione del modello in una diagnosi, indicando la specifica coppia di classi che necessita di più dati o di una funzionalità migliore.

Quel valore diagnostico è il motivo per cui la matrice di confusione si trova al centro della fase di valutazione in qualsiasi scienza dei dati flusso di lavoro e perché di solito è la prima tabella esaminata prima che un classificatore venga promosso in produzione.

DOMANDE FREQUENTI

Se solo il due percento dei record è fraudolento, un modello che prevede "non fraudolento" ogni volta ottiene un'accuratezza del 98 percento senza però rilevare nulla. La matrice rivela immediatamente la cella vuota del vero positivo, ed è per questo che la sensibilità è più importante dell'accuratezza sui dati asimmetrici.

Una matrice normalizzata mostra le proporzioni anziché i conteggi grezzi, solitamente dividendo ogni cella per il totale della riga. Permette di confrontare a colpo d'occhio classi di dimensioni molto diverse, sebbene nasconda le dimensioni del campione; pertanto, è consigliabile riportare entrambe le versioni quando le classi non sono bilanciate.

Ricostruisci la matrice con diverse soglie di probabilità e osserva l'andamento. Abbassando la soglia, i record vengono spostati dalla cella dei falsi negativi a quella dei veri positivi, aumentando il recall ma anche i falsi positivi. Scegli la soglia in cui il mix di errori rimanente ha il costo minore.

No. La matrice conta le corrispondenze discrete delle etichette, quindi necessita di categorie. Gli output della regressione sono continui e vengono valutati con misure di errore come l'errore assoluto medio o R-quadro. Suddividere una variabile target continua in intervalli è l'unico modo per rendere significativa una matrice.

Di solito, il richiamo ha la meglio, perché una diagnosi mancata costa molto di più di un test di approfondimento non necessario. Gli strumenti di screening sono quindi calibrati per mantenere i falsi negativi prossimi allo zero e accettare un numero maggiore di falsi positivi, che un test di conferma eliminerà in seguito.

Gli strumenti automatizzati di valutazione dei modelli ora analizzano ogni cella fuori dalla diagonale, classificano le confusioni più costose e suggeriscono quali classi necessitano di più dati di addestramento o di un'etichetta unificata. Inoltre, analizzano automaticamente le soglie, trasformando un confronto manuale delle matrici in una lista ristretta e classificata.

Copilota GitHub Il codice genera una bozza dell'importazione, della chiamata alla metrica e di un grafico a mappa di calore a partire da un breve commento. Considera la bozza come un punto di partenza: verifica sempre personalmente l'ordine degli assi e l'argomento delle etichette positive, perché una matrice trasposta inverte ogni conclusione.

Abbastanza grande da permettere alla classe più rara di riempire comunque la propria riga con un conteggio utilizzabile: una manciata di campioni produce metriche che oscillano selvaggiamente tra le diverse esecuzioni. La convalida incrociata, che somma le matrici su più fold, fornisce un quadro più stabile rispetto a una piccola suddivisione di test.

Riassumi questo post con: