top of page

Cos'è una matrice di confusione? Spiegazione e implementazione in Python

Una matrice di confusione è uno strumento utile per valutare le prestazioni di un modello di machine learning. È una tabella che mostra il numero di previsioni corrette e errate effettuate dal modello su un set di dati di test e fornisce un riepilogo delle prestazioni del modello. In questo articolo spiegheremo cos'è una matrice di confusione, perché è utile e come implementarla in Python.



Indice articolo spiegazione matrice di confusione


Cos'è una matrice di confusione? Una spiegazione e implementazione in Python
Cos'è una matrice di confusione? Una spiegazione e implementazione in Python

Introduzione alla matrice di confusione

Innanzitutto, definiamo alcuni termini chiave che verranno utilizzati in tutto l'articolo. Nel contesto dell'apprendimento automatico, un modello è una rappresentazione matematica di un sistema o di un processo che può essere utilizzato per fare previsioni. Il processo di addestramento di un modello implica la fornitura di un set di dati etichettato, in cui ogni esempio nel set di dati ha un risultato o un'etichetta noti. Il modello utilizza queste informazioni per apprendere le relazioni tra le caratteristiche (input) e le etichette (output), quindi applica questa conoscenza per fare previsioni su dati nuovi e invisibili.


L'accuratezza delle previsioni di un modello viene in genere valutata utilizzando un set di dati di test, costituito da esempi che non sono stati utilizzati durante l'addestramento. Le previsioni fatte dal modello sul set di dati di test vengono quindi confrontate con le vere etichette e viene utilizzata una matrice di confusione per riepilogare i risultati. La matrice di confusione mostra il numero di veri positivi, veri negativi, falsi positivi e falsi negativi, nonché l'accuratezza complessiva e altre metriche delle prestazioni del modello.


Nelle sezioni seguenti, forniremo una spiegazione più dettagliata di ciascuno di questi termini e mostreremo come implementare una matrice di confusione in Python.



Come leggere una matrice di confusione?

Una matrice di confusione è una tabella che visualizza il numero di previsioni corrette e errate effettuate da un modello su un set di dati di test. Viene in genere utilizzato per valutare le prestazioni di un modello di classificazione binaria, ma può anche essere applicato a attività di classificazione multiclasse.


Gli elementi di una matrice di confusione sono:

  • Veri positivi (TP): il numero di esempi che sono stati previsti come positivi (etichetta 1) e sono effettivamente positivi (vera etichetta 1).

  • Veri negativi (TN): il numero di esempi che sono stati previsti come negativi (etichetta 0) e sono effettivamente negativi (vera etichetta 0).

  • Falsi positivi (FP): il numero di esempi previsti come positivi (etichetta 1) ma in realtà negativi (etichetta vera 0).

  • Falsi negativi (FN): il numero di esempi previsti come negativi (etichetta 0) ma in realtà positivi (etichetta vera 1).

Per costruire una matrice di confusione, abbiamo prima bisogno di una serie di previsioni fatte da un modello su un set di dati di test, insieme alle vere etichette per quegli esempi. Supponiamo di avere un set di dati di test con 100 esempi e che il modello abbia effettuato le seguenti previsioni:


Cos'è una matrice di confusione? Una spiegazione e implementazione in Python
Cos'è una matrice di confusione? Una spiegazione e implementazione in Python

Per calcolare gli elementi della matrice di confusione, possiamo utilizzare le seguenti formule:

  • TP = numero di esempi in cui etichetta vera = 1 e etichetta prevista = 1

  • TN = numero di esempi in cui etichetta vera = 0 e etichetta prevista = 0

  • FP = numero di esempi in cui etichetta vera = 0 e etichetta prevista = 1

  • FN = numero di esempi in cui etichetta vera = 1 e etichetta prevista = 0

Per il nostro esempio, la matrice di confusione sarebbe:


Cos'è una matrice di confusione? Una spiegazione e implementazione in Python
Cos'è una matrice di confusione? Una spiegazione e implementazione in Python

Dalla matrice di confusione, possiamo vedere che il modello ha predetto correttamente 63 esempi in cui la vera etichetta era 0 e 30 esempi in cui la vera etichetta era 1. Tuttavia, ha anche prodotto 7 falsi positivi (previsti come 1 ma in realtà 0) e 7 falsi negativi (previsti come 0 ma in realtà 1).



Interpretazione di una matrice di confusione

Una matrice di confusione fornisce un riepilogo delle previsioni fatte da un modello su un set di dati di test, ma può essere difficile da interpretare e comprendere solo osservando i numeri grezzi. Per rendere i risultati più significativi e utilizzabili, possiamo derivare diverse metriche dalla matrice di confusione che forniscono diverse prospettive sulle prestazioni del modello.

Le metriche più comunemente utilizzate derivate da una matrice di confusione sono:

  • Accuratezza: l'accuratezza complessiva del modello, definita come il rapporto tra le previsioni corrette (TP + TN) e il numero totale di previsioni (TP + TN + FP + FN). Indica la proporzione di esempi che sono stati previsti correttamente.

  • Precisione: la precisione del modello, definita come il rapporto tra i veri positivi (TP) e il numero totale di esempi previsti come positivi (TP + FP). Indica la proporzione di esempi previsti come positivi e che sono effettivamente positivi.

  • Richiamo: il richiamo del modello, definito come il rapporto tra i veri positivi (TP) e il numero totale di esempi effettivamente positivi (TP + FN). Indica la proporzione di esempi positivi che sono stati previsti correttamente come positivi.

  • Punteggio F1: il punteggio F1 è una media ponderata della precisione e del richiamo ed è calcolato come 2 * (precisione * richiamo) / (precisione + richiamo). Fornisce un'unica metrica che bilancia sia la precisione che il richiamo.

Per interpretare una matrice di confusione, possiamo utilizzare queste metriche per valutare le prestazioni del modello e identificare potenziali aree di miglioramento. Ad esempio, se l'accuratezza del modello è bassa, significa che molte delle previsioni fatte dal modello non sono corrette. In questo caso, potremmo voler indagare sul motivo per cui il modello sta commettendo errori e provare a migliorarne le prestazioni.


D'altra parte, se la precisione del modello è bassa, significa che molti degli esempi previsti come positivi sono in realtà negativi. In questo caso, potremmo voler concentrarci sulla riduzione dei falsi positivi, ad esempio regolando la soglia utilizzata per fare previsioni o migliorando le funzionalità utilizzate dal modello.


Per illustrare l'uso di queste metriche, supponiamo di avere una matrice di confusione per un modello di classificazione binaria come mostrato di seguito:


Cos'è una matrice di confusione? Una spiegazione e implementazione in Python
Cos'è una matrice di confusione? Una spiegazione e implementazione in Python

Per calcolare l'accuratezza del modello, possiamo usare la formula:

accuracy = (TP + TN) / (TP + TN + FP + FN)          
         = (30 + 63) / (30 + 63 + 7 + 7)          
         = 0.85

L'accuratezza del modello è 0,85, il che significa che ha effettuato previsioni corrette per l'85% degli esempi nel set di dati di test.


Per calcolare la precisione del modello, possiamo usare la formula:

precision = TP / (TP + FP)
          = 30 / (30 + 7)
          = 0.81

La precisione del modello è 0,81, il che significa che l'81% degli esempi previsti come positivi sono effettivamente positivi.


Per calcolare il richiamo del modello, possiamo utilizzare la formula:

recall = TP / (TP + FN)
       = 30 / (30 + 7)
       = 0.81

Il richiamo del modello è 0,81 questo significa che il modello ha previsto correttamente l'81% degli esempi positivi nel set di dati di test.


Per calcolare il punteggio F1 del modello, possiamo utilizzare la formula:

f1 score = 2 * (precision * recall) / (precision + recall)
         = 2 * (0.81 * 0.81) / (0.81 + 0.81)
         = 0.81

Il punteggio F1 del modello è 0,81, che è la media ponderata della precisione e del richiamo.


In conclusione, le metriche derivate da una matrice di confusione possono fornire preziose informazioni sulle prestazioni di un modello di apprendimento automatico e possono essere utilizzate per identificare potenziali aree di miglioramento.


Comprendendo i punti di forza e di debolezza di un modello, possiamo prendere decisioni informate su come ottimizzarlo e perfezionarlo per ottenere risultati migliori.


Implementare una matrice di confusione con Python

Per creare una matrice di confusione in Python, possiamo usare la funzione confusion_matrix() dalla libreria sklearn. Questa funzione accetta come input le etichette vere e le etichette previste per un set di dati e restituisce la matrice di confusione come matrice NumPy.

Ecco un esempio di come utilizzare questa funzione per creare una matrice di confusione per un modello di classificazione binaria:


from sklearn.metrics import confusion_matrix

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

cm = confusion_matrix(y_true, y_pred)

print(cm)

L'output di questo codice sarebbe:

[[3 2]
 [1 4]]


Questa matrice di confusione mostra che il modello ha previsto correttamente 3 esempi in cui l'etichetta vera era 0 e 4 esempi in cui l'etichetta vera era 1. Tuttavia, ha prodotto anche 2 falsi positivi (previsti come 1 ma in realtà 0) e 1 falso negativo (previsti come come 0 ma in realtà 1).


Per visualizzare la matrice di confusione in modo più intuitivo, possiamo utilizzare la libreria matplotlib per rappresentarla come mappa termica. Ecco un esempio di come eseguire questa operazione:


import matplotlib.pyplot as plt
import seaborn as sns
sns.heatmap(cm, annot=True, fmt="d")
plt.xlabel("Predicted Label")
plt.ylabel("True Label")
plt.show()

L'output di questo codice sarebbe una mappa termica come questa:

|            | Predicted Label |
|------------|-----------------|
| True Label | 0 | 1 |
|------------|-----------------|
| 0          | 3               | 2  |
|------------|-----------------|
| 1          | 1               | 4  |

Questa heatmap fornisce una visualizzazione chiara e intuitiva della matrice di confusione e semplifica l'interpretazione dei risultati del modello.


In conclusione, la libreria sklearn fornisce un modo semplice e conveniente per creare e visualizzare una matrice di confusione per un modello di machine learning in Python. Utilizzando questo strumento, possiamo valutare rapidamente e facilmente le prestazioni di un modello e identificare potenziali aree di miglioramento.



Esempi di utilizzo della matrice di confusione

Supponiamo che un ospedale stia sviluppando un modello di apprendimento automatico per prevedere se un paziente ha una determinata malattia in base alle cartelle cliniche e ai risultati dei test. L'obiettivo del modello è identificare i pazienti a rischio di malattia, in modo che possano essere trattati precocemente e prevenire la progressione della malattia.


Per valutare le prestazioni del modello, l'ospedale raccoglie un set di dati di test di pazienti con stato di malattia noto (positivo o negativo) e utilizza il modello per fare previsioni su questo set di dati. L'ospedale quindi costruisce una matrice di confusione per riassumere i risultati delle previsioni, come mostrato di seguito:


Cos'è una matrice di confusione? Una spiegazione e implementazione in Python
Cos'è una matrice di confusione? Una spiegazione e implementazione in Python

Da questa matrice di confusione, l'ospedale può calcolare l'accuratezza, la precisione, il richiamo e il punteggio F1 del modello e utilizzare queste metriche per valutarne le prestazioni. Ad esempio, se l'accuratezza del modello è elevata (ad esempio 0,85), significa che il modello sta effettuando previsioni corrette per la maggior parte dei pazienti nel set di dati del test. Tuttavia, se la precisione del modello è bassa (ad es. 0,81), significa che molti dei pazienti previsti come positivi sono in realtà negativi, il che potrebbe portare a trattamenti non necessari e potenziali danni ai pazienti.


Sulla base dei risultati della matrice di confusione, l'ospedale può decidere se il modello è pronto per essere implementato nella clinica o se è necessaria un'ulteriore ottimizzazione e messa a punto. L'ospedale può anche utilizzare la matrice di confusione per identificare potenziali distorsioni o errori nei dati e intraprendere azioni correttive per migliorare le prestazioni del modello.


In conclusione, la matrice di confusione è uno strumento prezioso per valutare le prestazioni di un modello di machine learning in uno scenario reale. Analizzando la matrice di confusione, possiamo identificare i punti di forza e di debolezza del modello e prendere decisioni informate su come ottimizzare e migliorare le sue prestazioni.


Conclusione e riassunto sulla matrice di confusione

In questo articolo, abbiamo discusso il concetto di matrice di confusione e come può essere utilizzata per valutare le prestazioni di un modello di machine learning.


Abbiamo spiegato i diversi elementi di una matrice di confusione e mostrato come calcolarli da un insieme di previsioni ed etichette vere. Abbiamo anche discusso le diverse metriche che possono essere derivate da una matrice di confusione e come utilizzarle per interpretare e comprendere i risultati di un modello.


Abbiamo anche dimostrato come implementare una matrice di confusione in Python utilizzando la libreria sklearn e come visualizzare i risultati utilizzando matplotlib. Infine, abbiamo fornito alcuni esempi di diversi scenari in cui è possibile applicare una matrice di confusione e mostrato come interpretare i risultati in ciascun caso.


In conclusione, la matrice di confusione è uno strumento potente e versatile per valutare le prestazioni di un modello di machine learning. Comprendendo i punti di forza e di debolezza di un modello, possiamo prendere decisioni informate su come ottimizzare e migliorare le sue prestazioni e ottenere risultati migliori nelle applicazioni del mondo reale.



Ti ringraziamo per aver dedicato del tempo a leggere il nostro articolo sulla matrice di confusione. Il tuo supporto e feedback sono preziosi per noi e ti saremmo grati se potessi condividere l'articolo con altri che potrebbero essere interessati all'argomento. Grazie!
PCR (5).gif
PCR (4).gif
PCR.gif
PCR.gif
PCR.gif
PCR.gif
PCR (5).gif
3.gif
Vediamo se riesci a cliccarmi ! Nascondo una Sorpresa... (2).png

Ciao 

🤗 Articoli consigliati dalla nostra
Intelligenza Artificiale in base ai tuoi interessi

Correlazione Alta

Correlazione Media

Correlazione Bassa

Iscriviti

VUOI DIVENTARE UN MEMBRO DI INTELLIGENZA ARTIFICIALE ITALIA GRATUITAMENTE E TRARNE I SEGUENTI BENEFICI?

Corsi Gratis

più di 150 lezioni online

Dataset Gratis

più di 150o dataset

Ebook Gratis

più di 10 libri da leggere

Editor Gratis

un editor python online

Progetti Gratis

più di 25 progetti python

App Gratis

4 servizi web con I.A.

Unisciti Ora a oltre
1.000.000
di lettori e appassionanti d'I.A.

Tutto ciò che riguarda l'intelligenza Artificiale, in unico posto, in italiano e gratis.

MEGLIO DI COSI' NON SI PUO' FARE

Dopo l'iscrizione riceverai diversi Regali

VUOI SCRIVERE ARTICOLI INSIEME A NOI.

Grazie

bottom of page