La confusion matrix (in italiano: matrice di confusione) è una tabella che mostra, per ogni classe, quante previsioni sono giuste e quante sono sbagliate (e in che modo). È la prima cosa da guardare quando valuti un classificatore.
Per classificazione binaria, è una tabella 2x2:
- Veri positivi (VP): previsti positivi, sono positivi davvero.
- Veri negativi (VN): previsti negativi, sono negativi davvero.
- Falsi positivi (FP): previsti positivi, sono negativi (errore di tipo I).
- Falsi negativi (FN): previsti negativi, sono positivi (errore di tipo II).
Da qui derivi tutte le altre metriche:
- Accuracy = (VP + VN) / totale.
- Precision = VP / (VP + FP).
- Recall = VP / (VP + FN).
- Specificity = VN / (VN + FP).
- F1 = 2 * (precision * recall) / (precision + recall).
Per classificazione multi-classe la confusion matrix è NxN. Ogni riga è una classe vera, ogni colonna una classe predetta. La diagonale sono giuste, fuori diagonale sono confusioni.
Cose che vedi solo dalla confusion matrix:
- Quali classi si confondono: il modello scambia spesso "gatto" con "cane"? Niente "tigre" e "cane".
- Bias di sbilanciamento: una classe predetta troppo poco? Probabilmente sottorappresentata in training.
- Errori sistematici: una direzione di errore prevalente? Magari problema nei dati.
Errore di principianti: riportare solo accuracy. Senza la confusion matrix, non sai dove il modello sbaglia. Senza sapere dove sbaglia, non puoi migliorarlo. Sempre, sempre stampa la confusion matrix. Sempre.