Metriche di classificazione
In questa pagina 7
Per un problema di classificazione (Classificazione e k-nearest neighborsNella classificazione l'uscita $y$ è una categoria (con $C$ classi; $C=2$ è il caso binario). Il classificatore più semplice è il k-nearest neighbors: una nuova osservazione prende la classe più frequente (voto di maggioranza) tra i suoi $k$ vicini più prossimi nel training, con distanza euclidea $\sqrt{\sum(A_i-B_i)^2}$ o di Manhattan $\sum|A_i-B_i|$ (per la regressione si fa la media dei vicini). $k$ è un iperparametro: $k$ piccolo dà bordi frastagliati e overfitting, $k$ grande underfitting. È un metodo basato su istanze e «pigro» (nessun addestramento, costo alla predizione), sensibile a scala e feature irrilevanti e alla maledizione della dimensionalità; gli ingressi categorici si codificano con one-hot. Approfondimento: non nel programma di Telecomunicazioni.Classificazione e k-nearest neighbors →, Regressione logistica e softmaxLa regressione lineare non è adatta alla classificazione (valori fuori da [0,1], retta tirata dai punti lontani). La regressione logistica passa il predittore lineare dalla sigmoide $\sigma(z)=1/(1+e^{-z})$ e interpreta $\hat y=\sigma(x^T\beta)$ come $P(y=1\mid x)$: si predice la classe 1 se $\hat y\ge0{,}5$, cioè $x^T\beta\ge0$ (bordo lineare). L'errore quadratico dà una funzione non convessa; si usa la log-verosimiglianza negativa $-\sum[y\log\hat y+(1-y)\log(1-\hat y)]$, convessa, con gradiente $X^T(\hat y-y)$ e nessuna formula chiusa (discesa del gradiente). Per più classi: one-vs-one ($C(C-1)/2$ classificatori, voto), one-vs-all ($C$ classificatori, massima probabilità), o la softmax $p_c=e^{z_c}/\sum_ke^{z_k}$ con cross-entropia. Si può regolarizzare (ridge, LASSO, Elastic Net) e la cross-validation si fa stratificata. Approfondimento: non nel programma di Telecomunicazioni.Regressione logistica e softmax →) le metriche di regressione (MSE, ) non valgono: servono indici che contino le previsioni giuste e sbagliate di ciascun tipo (Lezione 11 · Classificazione e k-nearest neighbors, Lezione 13 · Regressione logistica, softmax e metriche di classificazione, Lezione 14 · Test di esempio e ripasso). Gli esercizi sono Esercizio - Metriche di classificazione da una matrice di confusione e Esercizio - Curva ROC e AUC di una foresta casuale e di un albero.
La matrice di confusione
Definizione (matrice di confusione). Tabella che incrocia la classe vera (actual, righe) con la classe prevista (predicted, colonne). Ogni cella conta quante osservazioni hanno quella combinazione; la diagonale contiene le previsioni corrette.
Nella classificazione binaria si chiama positiva la classe di interesse (malattia presente, mail spam, transazione fraudolenta, debito che andrà in default) e negativa l'altra (assenza della condizione). Le quattro celle sono:
| previsto positivo | previsto negativo | |
|---|---|---|
| realmente positivo | TP (vero positivo) | FN (falso negativo, errore di tipo II) |
| realmente negativo | FP (falso positivo, errore di tipo I) | TN (vero negativo) |
- TP: positivo previsto positivo. TN: negativo previsto negativo.
- FP: negativo previsto positivo (falso allarme).
- FN: positivo previsto negativo (mancata rilevazione).
Esempio. Con etichette vere e previste : TP (le prime quattro), TN (posizioni 5 e 6), FP (posizione 7: vero , previsto ), FN (posizioni 8, 9, 10: vero , previsto ).
Le metriche principali
Formula (accuracy, specificità, precision, recall).
- Accuracy (tasso di classificazione): frazione di previsioni corrette sul totale. = classificatore perfetto; = caso.
- Specificità: tra i casi realmente negativi, la frazione riconosciuta come tale. Dice quanto bene il modello evita i falsi allarmi; conta quando i falsi positivi sono costosi o problematici.
- Precision (precisione): tra le previsioni positive, la frazione corretta. Dice quanto sono affidabili le previsioni positive; si sceglie al posto della specificità quando interessa la qualità delle previsioni positive.
- Recall (richiamo, sensibilità, true positive rate): tra i casi realmente positivi, la frazione trovata. Risponde a «di tutti i positivi veri, quanti ne ha classificati bene?».
Esempio (stessi dati). Accuracy ; specificità ; precision ; recall . Il modello è quindi affidabile quando dice «positivo» () ma trova solo il dei positivi.
Come scegliere. Dipende dal costo degli errori: in manutenzione predittiva o diagnosi si vuole un recall alto (meglio un controllo inutile che un guasto non previsto, a costo di più falsi positivi); per un filtro antispam che non deve bloccare mail vere si vuole alta precision.
Il punteggio
Precision e recall si compensano: abbassare la soglia aumenta il recall e di solito riduce la precision. Per riassumere le due in un numero si usa la media armonica: La media armonica è dominata dal valore più piccolo: con precision e recall la media aritmetica sarebbe mentre .
Esempio. Con precision e recall : .
Quando l'accuracy inganna: dati sbilanciati
Esempio (dalle slide, filtro antispam). Modello 1: delle mail spam, sono previste spam e non spam; delle non spam, sono previste spam e non spam. TP , FN , FP , TN : accuracy , recall , specificità , precision , . (La tabella delle slide riporta , che è la media delle due percentuali di riga, e , cioè la media di recall e specificità, detta balanced accuracy, e non l'accuracy.) Modello 2: su mail ( spam e non spam) predice sempre «non spam»: TP , FN , FP , TN . Accuracy , ma recall : non trova nessuno spam ed è inutile. La precision è , indefinita.
Con le classi sbilanciate dunque:
- Il modello può ignorare la classe minoritaria. Con di classe A e di B si ottiene il di accuracy predicendo sempre A: metriche ingannevoli, alta accuracy e prestazioni pessime sulla minoritaria.
- L'addestramento è sbilanciato. Algoritmi come la regressione logistica, le SVM e le reti neurali tendono a ottimizzare la classe maggioritaria: cattiva generalizzazione sulla minoritaria e bordi di decisione distorti.
Quindi vanno usate metriche adeguate (precision, recall, , ROC-AUC), la cross-validation stratificata (Regressione logistica e softmaxLa regressione lineare non è adatta alla classificazione (valori fuori da [0,1], retta tirata dai punti lontani). La regressione logistica passa il predittore lineare dalla sigmoide $\sigma(z)=1/(1+e^{-z})$ e interpreta $\hat y=\sigma(x^T\beta)$ come $P(y=1\mid x)$: si predice la classe 1 se $\hat y\ge0{,}5$, cioè $x^T\beta\ge0$ (bordo lineare). L'errore quadratico dà una funzione non convessa; si usa la log-verosimiglianza negativa $-\sum[y\log\hat y+(1-y)\log(1-\hat y)]$, convessa, con gradiente $X^T(\hat y-y)$ e nessuna formula chiusa (discesa del gradiente). Per più classi: one-vs-one ($C(C-1)/2$ classificatori, voto), one-vs-all ($C$ classificatori, massima probabilità), o la softmax $p_c=e^{z_c}/\sum_ke^{z_k}$ con cross-entropia. Si può regolarizzare (ridge, LASSO, Elastic Net) e la cross-validation si fa stratificata. Approfondimento: non nel programma di Telecomunicazioni.Regressione logistica e softmax →) e, se serve, il riequilibrio del dataset.
Riequilibrare il dataset
- Undersampling: si riduce a caso il numero di campioni della classe maggioritaria. Pro: semplice e veloce, riduce i tempi di addestramento, può migliorare la minoritaria. Contro: si perde informazione utile (soprattutto con pochi dati) e si può andare in underfitting se si scarta troppo.
- Oversampling: si aumenta la classe minoritaria, semplicemente duplicando campioni esistenti. Pro: bilancia senza perdere informazione. Contro: rischio di overfitting (si ripetono gli stessi punti) e i dati sintetici possono non rispecchiare la distribuzione vera.
- Esiste una procedura popolare detta SMOTE (che crea campioni sintetici): le slide avvertono di non usarla, perché, pur diffusa, non ci sono prove scientifiche che funzioni.
Il riequilibrio si applica solo al training: il test set deve mantenere la distribuzione originale per stimare la prestazione reale.
Esempio. Con campioni A e B: l'undersampling porta a e (si scartano campioni); l'oversampling a e (ogni B è ripetuto in media volte).
Metriche per più classi
Con la matrice di confusione è e l'accuracy è la somma della diagonale divisa per il totale. Per precision e recall si considera ogni classe contro tutte le altre e poi si media (media macro: media semplice tra le classi).
Esempio. Matrice (righe vere, colonne previste) con Cat, Dog, Horse: . Accuracy . Cat: TP , FP (colonna meno diagonale), FN (riga meno diagonale): precision , recall . Dog: precision , recall . Horse: precision , recall . Medie macro: precision , recall .
Soglia di decisione, curva ROC e AUC
I modelli che producono una probabilità o un punteggio (regressione logistica, foresta casuale con la frazione di voti) classificano confrontando il punteggio con una soglia, di solito . Cambiare la soglia sposta il compromesso tra i due errori: soglia alta, pochi positivi previsti (pochi falsi positivi, ma molti falsi negativi); soglia bassa, molti positivi previsti.
Definizione (curva ROC). Per ogni soglia (si predice positivo se punteggio ) si calcolano il tasso di veri positivi (la recall) e il tasso di falsi positivi ; la curva ROC (receiver operating characteristic) riporta TPR contro FPR. L'area sotto la curva si chiama AUC: per un classificatore perfetto, per uno casuale (la diagonale). Un buon classificatore ha la curva vicina all'angolo in alto a sinistra.
Esempio. Etichette e punteggi . Soglia : previsti positivi solo il punteggio (vero positivo): TPR , FPR , punto . Soglia : positivi i punteggi e (quest'ultimo è un negativo): TP , FP , punto . Soglia : TP , FP , punto . Soglia : tutti positivi, punto . Area per rettangoli: (tra e a quota ) (tra e a quota ) . Lo stesso valore si ottiene contando le coppie (positivo, negativo) in cui il positivo ha punteggio più alto: su : l'AUC è la probabilità che un positivo preso a caso abbia un punteggio maggiore di un negativo preso a caso.
Grafico interattivo: Curva ROC dell'esempio (punteggi 0,1; 0,4; 0,35; 0,8 con classi 0, 0, 1, 1): passa per (0; 0,5), (0,5; 0,5), (0,5; 1); l'area è 0,75. La diagonale è il classificatore casuale (AUC = 0,5)
Codice
import numpy as np
def confusion_counts(y_true, y_pred):
TP = np.sum((y_true == 1) & (y_pred == 1)); TN = np.sum((y_true == 0) & (y_pred == 0))
FP = np.sum((y_true == 0) & (y_pred == 1)); FN = np.sum((y_true == 1) & (y_pred == 0))
return TP, TN, FP, FN
TP, TN, FP, FN = confusion_counts(y_true, y_pred)
accuracy = (TP + TN) / (TP + TN + FP + FN)
specificity = TN / (TN + FP)
precision = TP / (TP + FP)
recall = TP / (TP + FN)
f1 = 2 * precision * recall / (precision + recall)
# scikit-learn: accuracy_score, precision_score, recall_score, f1_score, roc_curve, roc_auc_scoreCon un test set di campioni del dataset breast cancer (positiva la classe ) e vicini, il laboratorio ottiene accuracy , specificità , precision , recall (); con la regressione logistica sui dati standardizzati accuracy , specificità , precision , recall .
Errori tipici
- Valutare un problema sbilanciato con l'accuracy.
- Confondere precision (colonna: tra i previsti positivi) e recall (riga: tra i veri positivi).
- Rieseguire il riequilibrio (oversampling) prima della divisione in training e test: i duplicati finiscono in entrambi gli insiemi e la stima è falsata.
- Dimenticare che la soglia è una scelta: dipende dal costo dei due errori.
- Calcolare la media macro come se fosse l'accuracy.
- Confondere specificità e recall (sono entrambe «tassi», ma di classi diverse).
Versione ripasso
Definizione. Matrice di confusione: righe = classe vera, colonne = prevista. Binaria: TP, TN, FP (falso allarme, tipo I), FN (mancata rilevazione, tipo II). Positiva = classe di interesse.
Esempio. , previsti : TP , TN , FP , FN .
Formula. accuracy ; specificità ; precision ; recall ; (media armonica).
Esempio. .
Uso. Specificità: falsi positivi costosi. Precision: affidabilità delle previsioni positive. Recall: non perdere positivi (diagnosi, guasti).
Sbilanciamento. Modello «sempre maggioritaria»: di accuracy con recall . Il modello ignora la minoritaria e il training è distorto usare precision/recall//ROC-AUC, CV stratificata. Undersampling: scartare la maggioritaria (veloce, perde informazione, underfitting). Oversampling: duplicare la minoritaria (nessuna perdita, overfitting). SMOTE: non usarlo. Riequilibrare solo il training.
Più classi. Accuracy = diagonale/totale; precision e recall per classe (classe contro resto), media macro. Esempio: matrice : accuracy , precision macro , recall macro .
Definizione (ROC). Per ogni soglia : , ; curva TPR contro FPR; AUC = area ( perfetto, caso) = probabilità che un positivo abbia punteggio maggiore di un negativo.
Esempio. , punteggi : punti , AUC .
Errori tipici: accuracy su dati sbilanciati; scambiare precision e recall; riequilibrare prima di dividere train/test; soglia non motivata.
Esercizi su questo argomento
- Esercizio - Analisi esplorativa e preprocessing - macchinario, abitazioni, case di Ames e incendi
- Esercizio - Analisi esplorativa e preprocessing di un dataset sbilanciato (Adult)
- Esercizio - Balanced random forest (laboratorio di ripasso)
- Esercizio - CNN su Fashion-MNIST e CIFAR-10 con Keras
- Esercizio - Curva ROC e AUC di una foresta casuale e di un albero
- Esercizio - ID3 con potatura e foresta casuale sul dataset Titanic
- Esercizio - k-nearest neighbors da zero sul dataset breast cancer
- Esercizio - Metriche di classificazione da una matrice di confusione
- Esercizio - Metriche di fairness e soglie per gruppo
- Esercizio - Pseudo-etichette con k-NN e regressione logistica
- Esercizio - Regressione logistica one-vs-one e one-vs-all sul dataset iris
- Esercizio - Regressione logistica su sei punti con discesa del gradiente
- Esercizio - Rete feed-forward su dati tabulari sbilanciati (appello)
- Esercizio - Rete feed-forward su MNIST con Keras
- Esercizio - Test di esempio della parte teorica (simulazione d'esame)
Lezioni in cui compare
- Lezione 13 · Regressione logistica, softmax e metriche di classificazione
- Lezione 14 · Test di esempio e ripasso
- Lezione 15 · Laboratorio kNN e regressione logistica
- Lezione 18 · Laboratorio sui metodi ad albero
- Lezione 22 · Support vector machines e kernel
- Lezione 24 · Addestramento delle reti neurali 1
- Lezione 29 · Fairness e simulazione della parte pratica