Definizione e struttura
La matrice di confusione è la tabella che mette a confronto quello che il modello ha previsto con quello che era vero, e fa vedere in che modo sbaglia. È il primo posto dove guardo quando un modello «funziona bene» secondo l'accuratezza: nove volte su dieci lì dentro si scopre che sbaglia sistematicamente su una classe.
Punti chiave
- La matrice di confusione incrocia predizioni e valori reali, mostrando dove e come il modello sbaglia.
- Le quattro celle (TP, FP, TN, FN) sono la base da cui si calcolano tutte le metriche di valutazione.
- Accuracy, Precision, Recall e F1-Score misurano aspetti diversi: nessuna è universalmente migliore.
- La scelta della metrica dipende dal costo relativo dei falsi positivi e dei falsi negativi nel tuo contesto.
- Con dataset sbilanciati l'accuracy inganna: serve guardare Precision e Recall per ciascuna classe.
Nel caso a due classi (Positivo e Negativo) la tabella è 2x2:
| Predetto Positivo | Predetto Negativo | |
|---|---|---|
| Reale Positivo | TP (True Positive) | FN (False Negative) |
| Reale Negativo | FP (False Positive) | TN (True Negative) |
Le righe rappresentano la classe reale, le colonne la classe predetta dal modello. Questa convenzione è la più diffusa in letteratura e coincide con quella usata da librerie come Scikit-learn e TensorFlow. Attenzione però: alcune fonti invertono righe e colonne, quindi prima di interpretare i numeri verifica sempre quale asse rappresenta il valore reale e quale la predizione.
TP, FP, TN, FN spiegati
Per capire le quattro caselle conviene immaginare un filtro antispam:
- True Positive (TP): il modello dice "spam" e l'email è davvero spam. Predizione corretta.
- True Negative (TN): il modello dice "non spam" e l'email non è spam. Predizione corretta.
- False Positive (FP): il modello dice "spam" ma l'email è legittima. Errore di tipo I (falso allarme).
- False Negative (FN): il modello dice "non spam" ma l'email è spam. Errore di tipo II (mancata rilevazione).
Ricorda: la prima parola (True/False) indica se la predizione è corretta; la seconda (Positive/Negative) indica cosa ha predetto il modello.
Accuracy, Precision, Recall
Da queste quattro caselle si ricavano tutte le metriche che contano:
Formule principali
Accuracy = (TP + TN) / (TP + TN + FP + FN)
Precision = TP / (TP + FP)
Recall (Sensitivity) = TP / (TP + FN)
Specificity = TN / (TN + FP)
Accuracy misura la percentuale complessiva di predizioni corrette. È utile quando le classi sono bilanciate, ma può essere fuorviante con dataset sbilanciati. Se il 95% dei campioni è negativo, un modello che predice sempre "negativo" raggiunge il 95% di accuracy senza aver appreso nulla: è il classico "paradosso dell'accuracy" che mostra perché questa metrica, da sola, non basta mai a giudicare un classificatore.
Precision risponde alla domanda: "Tra tutti i campioni che il modello ha etichettato come positivi, quanti lo sono davvero?". È cruciale quando i falsi positivi hanno un costo elevato. Pensa a una campagna di email marketing automatizzata: una bassa Precision significa contattare molte persone non interessate, sprecando budget e rischiando di danneggiare la reputazione del dominio mittente.
Recall (o Sensitivity) risponde a: "Tra tutti i campioni realmente positivi, quanti ne ha individuati il modello?". È critica quando i falsi negativi sono pericolosi o costosi, come nel rilevamento frodi (non vuoi lasciare passare transazioni fraudolente) o nella diagnostica medica. Aumentare la Recall di solito comporta abbassare la soglia di decisione, accettando in cambio un numero maggiore di falsi positivi.
F1-Score e media armonica
Precision e recall tirano in direzioni opposte: se alzi una, di solito l'altra scende. L'F1 è la media armonica delle due e serve quando ti serve un numero solo per decidere:
F1-Score = 2 * (Precision * Recall) / (Precision + Recall)
La media armonica penalizza i valori estremi: se Precision = 1.0 ma Recall = 0.01, l'F1 sarà molto basso (~0.02), a differenza della media aritmetica (0.505) che nasconderebbe il problema. In pratica, l'F1 premia solo i modelli che sono buoni su entrambi i fronti contemporaneamente.
Varianti dell'F-score includono l'F-beta, dove il parametro beta controlla il peso relativo di Recall rispetto a Precision: F2 dà più peso alla Recall (utile quando i falsi negativi sono il problema principale), mentre F0.5 privilegia la Precision (quando vuoi minimizzare i falsi allarmi). Scegliere il beta giusto significa tradurre in numeri la priorità di business del tuo progetto.
Esempio pratico completo
Un esempio che in aula funziona sempre. Un modello di diagnosi applicato a 200 pazienti:
| Predetto Tumore | Predetto Sano | |
|---|---|---|
| Reale Tumore | TP = 45 | FN = 5 |
| Reale Sano | FP = 10 | TN = 140 |
Calcoliamo:
- Accuracy = (45 + 140) / 200 = 92.5%
- Precision = 45 / (45 + 10) = 81.8%
- Recall = 45 / (45 + 5) = 90.0%
- F1-Score = 2 * (0.818 * 0.900) / (0.818 + 0.900) = 85.7%
In questo contesto medico, la Recall del 90% significa che 5 pazienti malati su 50 non vengono rilevati. Potrebbe essere necessario abbassare la soglia di classificazione per aumentare la Recall, accettando più falsi positivi. È un trade-off tipico nella pratica clinica, dove si preferisce investigare ulteriormente un paziente sano (FP) piuttosto che non diagnosticare un tumore (FN). Lo stesso ragionamento si applica al marketing e ai sistemi di scoring: prima di ottimizzare un modello bisogna decidere quale errore costa di più all'organizzazione.
Matrice multiclasse
Quando le classi sono più di due (es. classificazione di immagini in "gatto", "cane", "uccello"), la matrice diventa NxN. Ogni cella (i, j) indica quanti campioni della classe reale i sono stati classificati come classe j.
| Pred. Gatto | Pred. Cane | Pred. Uccello | |
|---|---|---|---|
| Gatto | 40 | 5 | 5 |
| Cane | 3 | 42 | 5 |
| Uccello | 2 | 3 | 45 |
Sulla diagonale principale stanno le previsioni giuste. Per calcolare precision e recall di ogni classe si prende una classe per volta come «positiva» (uno contro tutti). Per riassumere in un numero solo si usano:
- Macro-average: media semplice delle metriche di ciascuna classe (tratta tutte le classi allo stesso modo).
- Weighted-average: media pesata per il numero di campioni per classe.
- Micro-average: calcola TP, FP, FN globali e poi le metriche (coincide con l'accuracy nel multiclasse).
Quando usare quale metrica
Quale metrica guardare dipende da quanto ti costano i due tipi di errore, e la domanda va fatta prima di addestrare. Qualche caso tipico:
| Scenario | Metrica prioritaria | Motivazione |
|---|---|---|
| Diagnosi medica | Recall | Un FN (malattia non rilevata) è molto più grave di un FP |
| Filtro spam email | Precision | Un FP (email legittima in spam) è fastidioso per l'utente |
| Frode finanziaria | Recall | Meglio investigare un falso allarme che perdere una frode |
| Classificazione bilanciata | F1-Score / Accuracy | Un buon compromesso quando le classi sono equilibrate |
| Motore di ricerca | Precision@K | Tra i primi K risultati, quanti sono rilevanti? |
Non esiste una metrica universalmente migliore. La scelta dipende sempre dal dominio e dal costo relativo dei diversi tipi di errore. Comprendere la matrice di confusione è il primo passo per prendere decisioni informate.
Da qui si va avanti con gli algoritmi di classificazione e con overfitting e underfitting, che è dove si vede come la complessità del modello si ripercuote su questi numeri.
Vuoi imparare ad applicarlo davvero?
Scopri i corsi e la formazione di Federico Boggia su AI, dati e digitale.