Salta al contenuto
Note per Studenti Metriche di classificazione

Metriche di classificazione

In questa pagina 7
In questa pagina 3

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, R2R^2) non valgono: servono indici che contino le previsioni giuste e sbagliate di ciascun tipo. 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 [1,1,1,1,0,0,0,1,1,1][1,1,1,1,0,0,0,1,1,1] e previste [1,1,1,1,0,0,1,0,0,0][1,1,1,1,0,0,1,0,0,0]: TP =4=4 (le prime quattro), TN =2=2 (posizioni 5 e 6), FP =1=1 (posizione 7: vero 00, previsto 11), FN =3=3 (posizioni 8, 9, 10: vero 11, previsto 00).

Le metriche principali

Formula (accuracy, specificità, precision, recall). accuracy=TP+TNTP+TN+FP+FN,specificitaˋ=TNTN+FP,\text{accuracy}=\frac{TP+TN}{TP+TN+FP+FN},\qquad\text{specificità}=\frac{TN}{TN+FP}, precision=TPTP+FP,recall (sensibilitaˋ, TPR)=TPTP+FN.\text{precision}=\frac{TP}{TP+FP},\qquad\text{recall (sensibilità, TPR)}=\frac{TP}{TP+FN}.

  • Accuracy (tasso di classificazione): frazione di previsioni corrette sul totale. 11 = classificatore perfetto; ≈1/C\approx1/C = 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 =4+210=0,6=\frac{4+2}{10}=0{,}6; specificità =22+1=0,667=\frac{2}{2+1}=0{,}667; precision =44+1=0,8=\frac{4}{4+1}=0{,}8; recall =44+3=0,571=\frac{4}{4+3}=0{,}571. Il modello è quindi affidabile quando dice «positivo» (0,80{,}8) ma trova solo il 57%57\% dei positivi.

Dove stanno i denominatori (probabilità condizionata). Ogni metrica è una probabilità condizionataLa probabilità di A sapendo che si è verificato B è P(A ∣ B) = P(A ∩ B) / P(B), con P(B) > 0; è una nuova misura di probabilità, e da essa seguono la regola del prodotto e la regola della catena.Probabilità condizionata → P(A∣B)=P(A∩B)/P(B)P(A\mid B)=P(A\cap B)/P(B), cioè «una frazione calcolata dentro il gruppo BB». Cambia solo il gruppo su cui si condiziona. Chiamiamo YY la classe vera e Y^\hat Y quella prevista:

  • accuracy =P(Y^=Y)=P(\hat Y=Y): il gruppo è tutto il test set, denominatore TP+TN+FP+FNTP+TN+FP+FN;
  • recall =P(Y^=1∣Y=1)=P(\hat Y=1\mid Y=1): il gruppo è la riga dei veri positivi, denominatore TP+FNTP+FN (i positivi reali);
  • specificità =P(Y^=0∣Y=0)=P(\hat Y=0\mid Y=0): la riga dei veri negativi, denominatore TN+FPTN+FP;
  • precision =P(Y=1∣Y^=1)=P(Y=1\mid\hat Y=1): il gruppo è la colonna dei previsti positivi, denominatore TP+FPTP+FP. Nei dati P(A∩B)P(A\cap B) è una frequenza (TP/NTP/N) e P(B)P(B) un'altra ((TP+FP)/N(TP+FP)/N): il fattore NN si semplifica e resta il rapporto tra conteggi. Recall e precision condizionano in direzioni opposte (P(Y^∣Y)P(\hat Y\mid Y) contro P(Y∣Y^)P(Y\mid\hat Y)), che è il motivo per cui possono essere molto diverse.

Da recall a precision con la formula di Bayes. Se la classe positiva è rara, anche un modello con recall e specificità alte ha precision bassa. Con la formula di BayesSe (A_i) è una partizione di Ω, P(B) = Σ P(B ∣ A_i) P(A_i) (probabilità totali); la formula di Bayes inverte il condizionamento: P(A_k ∣ B) = P(B ∣ A_k) P(A_k) / P(B).Formula delle probabilità totali e formula di Bayes → si passa da una direzione all'altra: indicata con π=P(Y=1)\pi=P(Y=1) la prevalenza dei positivi, precision=P(Y=1∣Y^=1)=P(Y^=1∣Y=1) πP(Y^=1∣Y=1) π+P(Y^=1∣Y=0) (1−π)=recall⋅πrecall⋅π+(1−specificitaˋ)(1−π).\text{precision}=P(Y=1\mid\hat Y=1)=\frac{P(\hat Y=1\mid Y=1)\,\pi}{P(\hat Y=1\mid Y=1)\,\pi+P(\hat Y=1\mid Y=0)\,(1-\pi)}=\frac{\text{recall}\cdot\pi}{\text{recall}\cdot\pi+(1-\text{specificità})(1-\pi)}. Il denominatore è la probabilità totale di prevedere «positivo»: arriva dai veri positivi (peso π\pi) o dai negativi scambiati per positivi (peso 1−π1-\pi). Esempio. Prevalenza π=1%\pi=1\%, recall == specificità =0,95=0{,}95. Su 10001000 casi: 1010 positivi, di cui 0,95⋅10=9,50{,}95\cdot10=9{,}5 trovati (TPTP); 990990 negativi, di cui 0,05⋅990=49,50{,}05\cdot990=49{,}5 scambiati per positivi (FPFP). Allora precision =9,59,5+49,5=0,161=\frac{9{,}5}{9{,}5+49{,}5}=0{,}161: meno di una previsione positiva su cinque è giusta, pur con due indici da 95%95\%. Con dati sbilanciati questo è il motivo per cui conviene guardare la precision e non solo la specificità.

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 F1F_1

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: F1=2 precision⋅recallprecision+recall.F_1=\frac{2\,\text{precision}\cdot\text{recall}}{\text{precision}+\text{recall}}. La media armonica è dominata dal valore più piccolo: con precision =1=1 e recall =0,1=0{,}1 la media aritmetica sarebbe 0,550{,}55 mentre F1=2⋅1⋅0,11,1=0,18F_1=\frac{2\cdot1\cdot0{,}1}{1{,}1}=0{,}18.

Da dove viene la formula (passaggi). La media armonica di due numeri P,R>0P,R>0 è l'inverso della media aritmetica degli inversi:

  1. si invertono i due valori: 1/P1/P e 1/R1/R;
  2. si fa la media aritmetica: 12(1P+1R)\frac12\left(\frac1P+\frac1R\right);
  3. si inverte di nuovo: [12(1P+1R)]−1=21P+1R\left[\frac12\left(\frac1P+\frac1R\right)\right]^{-1}=\frac{2}{\frac1P+\frac1R};
  4. si porta a denominatore comune 1P+1R=R+PPR\frac1P+\frac1R=\frac{R+P}{PR}, quindi si ottiene 2PRP+R\frac{2PR}{P+R}. Perché non la media aritmetica: se P=1P=1 e R→0R\to0 la media aritmetica tende a 0,50{,}5 (sembra un modello discreto), mentre 1/R→∞1/R\to\infty trascina la media armonica a 00 (un modello che non trova positivi è inutile). Il valore piccolo prevale perché dopo l'inversione diventa il termine grande.

Esempio. Con precision 0,80{,}8 e recall 0,5710{,}571: F1=2⋅0,8⋅0,5711,371=0,667F_1=\frac{2\cdot0{,}8\cdot0{,}571}{1{,}371}=0{,}667.

Sostituendo P=TPTP+FPP=\frac{TP}{TP+FP} e R=TPTP+FNR=\frac{TP}{TP+FN} si trova una forma direttamente sui conteggi: F1=2 TP2 TP+FP+FNF_1=\frac{2\,TP}{2\,TP+FP+FN}. Controllo con l'esempio: 2⋅48+1+3=812=0,667\frac{2\cdot4}{8+1+3}=\frac{8}{12}=0{,}667, uguale a quello di sopra. Si nota che TNTN non compare: F1F_1 ignora i veri negativi, come precision e recall, ed è per questo adatta alla classe minoritaria.

Quando l'accuracy inganna: dati sbilanciati

Esempio (dalle slide, filtro antispam). Modello 1: delle mail spam, 2727 sono previste spam e 66 non spam; delle non spam, 1010 sono previste spam e 5757 non spam. TP =27=27, FN =6=6, FP =10=10, TN =57=57: accuracy =84100=0,84=\frac{84}{100}=0{,}84, recall =0,818=0{,}818, specificità =0,851=0{,}851, precision =2737=0,730=\frac{27}{37}=0{,}730, F1=0,771F_1=0{,}771. (La tabella delle slide riporta 83,44%83{,}44\%, che è la media delle due percentuali di riga, 81,81%81{,}81\% e 85,07%85{,}07\%, cioè la media di recall e specificità, detta balanced accuracy, e non l'accuracy.) Modello 2: su 10001000 mail (1010 spam e 990990 non spam) predice sempre «non spam»: TP =0=0, FN =10=10, FP =0=0, TN =990=990. Accuracy =9901000=99%=\frac{990}{1000}=99\%, ma recall =0=0: non trova nessuno spam ed è inutile. La precision è 0/00/0, indefinita.

Con le classi sbilanciate dunque:

  1. Il modello può ignorare la classe minoritaria. Con 90%90\% di classe A e 10%10\% di B si ottiene il 90%90\% di accuracy predicendo sempre A: metriche ingannevoli, alta accuracy e prestazioni pessime sulla minoritaria.
  2. 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, F1F_1, 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 900900 campioni A e 100100 B: l'undersampling porta a 100100 e 100100 (si scartano 800800 campioni); l'oversampling a 900900 e 900900 (ogni B è ripetuto in media 99 volte).

Metriche per più classi

Con C>2C>2 la matrice di confusione è C×CC\times C 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: [8112100028]\begin{bmatrix}8&1&1\\2&10&0\\0&2&8\end{bmatrix}. Prima i totali: somme di riga (veri) 10, 12, 1010,\,12,\,10, somme di colonna (previsti) 10, 13, 910,\,13,\,9, totale 3232. Per una classe cc: TPTP è la cella diagonale, FNFN la somma della sua riga meno la diagonale, FPFP la somma della sua colonna meno la diagonale. Accuracy =8+10+832=0,8125=\frac{8+10+8}{32}=0{,}8125. Cat: TP =8=8, FP =2+0=2=2+0=2 (colonna meno diagonale), FN =1+1=2=1+1=2 (riga meno diagonale): precision 0,80{,}8, recall 0,80{,}8. Dog: precision 101+10+2=0,769\frac{10}{1+10+2}=0{,}769, recall 1012=0,833\frac{10}{12}=0{,}833. Horse: precision 81+0+8=0,889\frac{8}{1+0+8}=0{,}889, recall 0,80{,}8. Medie macro: precision 0,8+0,769+0,8893=0,819\frac{0{,}8+0{,}769+0{,}889}{3}=0{,}819, recall 0,8+0,833+0,83=0,811\frac{0{,}8+0{,}833+0{,}8}{3}=0{,}811 (media aritmetica, ogni classe pesa 1/31/3 anche se ha meno esempi).

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 0,50{,}5. 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 tt (si predice positivo se punteggio ≥t\ge t) si calcolano il tasso di veri positivi TPR=TPTP+FN\text{TPR}=\frac{TP}{TP+FN} (la recall) e il tasso di falsi positivi FPR=FPFP+TN=1−specificitaˋ\text{FPR}=\frac{FP}{FP+TN}=1-\text{specificità}; la curva ROC (receiver operating characteristic) riporta TPR contro FPR. L'area sotto la curva si chiama AUC: 11 per un classificatore perfetto, 0,50{,}5 per uno casuale (la diagonale). Un buon classificatore ha la curva vicina all'angolo in alto a sinistra.

Esempio. Etichette y=[0,0,1,1]y=[0,0,1,1] e punteggi [0,1; 0,4; 0,35; 0,8][0{,}1;\,0{,}4;\,0{,}35;\,0{,}8]. Soglia 0,80{,}8: previsti positivi solo il punteggio 0,80{,}8 (vero positivo): TPR =1/2=1/2, FPR =0=0, punto (0; 0,5)(0;\,0{,}5). Soglia 0,40{,}4: positivi i punteggi 0,80{,}8 e 0,40{,}4 (quest'ultimo è un negativo): TP =1=1, FP =1=1, punto (0,5; 0,5)(0{,}5;\,0{,}5). Soglia 0,350{,}35: TP =2=2, FP =1=1, punto (0,5; 1)(0{,}5;\,1). Soglia 0,10{,}1: tutti positivi, punto (1; 1)(1;\,1). Area per rettangoli: 0,5⋅0,50{,}5\cdot0{,}5 (tra FPR=0\text{FPR}=0 e 0,50{,}5 a quota 0,50{,}5) + 0,5⋅1+\ 0{,}5\cdot1 (tra 0,50{,}5 e 11 a quota 11) =0,25+0,5=0,75=0{,}25+0{,}5=0{,}75. Lo stesso valore si ottiene contando le coppie (positivo, negativo) in cui il positivo ha punteggio più alto: 33 su 44 ⇒0,75\Rightarrow0{,}75: l'AUC è la probabilità che un positivo preso a caso abbia un punteggio maggiore di un negativo preso a caso.

Perché la curva ha quella forma: due distribuzioni di punteggi e una soglia. Il punteggio dei negativi e quello dei positivi sono due variabili aleatorie con densità diverse (qui, per fissare le idee, due normali Distribuzione gaussiana (normale)N(μ, σ²) ha densità e^(−(x−μ)²/(2σ²)) / √(2πσ²), a campana centrata in μ con larghezza σ; media μ, varianza σ²; si standardizza con Z = (X − μ)/σ ~ N(0, 1) e si calcola P(X ≤ x) = Φ((x − μ)/σ), con Φ(−z) = 1 − Φ(z); aX + b è ancora gaussiana, N(aμ + b, a²σ²).Distribuzione gaussiana (normale) → con la stessa deviazione standard 11 e medie 00 e 22). Fissata la soglia tt, il FPR\text{FPR} è la probabilità che un negativo superi tt, cioè l'area della densità dei negativi a destra di tt; il TPR\text{TPR} è l'area della densità dei positivi a destra di tt (Funzione di distribuzioneLa funzione di distribuzione (FdD) F_X(x) = P(X ≤ x) è definita per ogni v.a., è crescente, continua a destra, va da 0 a 1 e determina la legge; per una v.a. discreta è a gradini, con salti in corrispondenza dei valori e di altezza pari alla densità.Funzione di distribuzione →: area a destra =1−F(t)=1-F(t)). Con t=1t=1 (a metà tra le due medie): FPR=1−Φ(1)=0,159\text{FPR}=1-\Phi(1)=0{,}159 e TPR=1−Φ(−1)=Φ(1)=0,841\text{TPR}=1-\Phi(-1)=\Phi(1)=0{,}841. Spostando tt da +∞+\infty a −∞-\infty il punto (FPR,TPR)(\text{FPR},\text{TPR}) va da (0,0)(0,0) a (1,1)(1,1) e disegna la curva ROC: le due code destre crescono insieme, ma se le campane sono ben separate il TPR sale molto prima dell'FPR.

Grafico interattivo: Punteggi dei negativi (media 0) e dei positivi (media 2) con soglia t = 1: l'area colorata è il tasso di falsi positivi (0,159); l'area della curva dei positivi a destra di t è il tasso di veri positivi (0,841)

Il punto (0,159; 0,841)(0{,}159;\,0{,}841) è uno dei punti della ROC di questo modello. Per due normali con la stessa varianza 11 e medie che distano dd, la probabilità che un positivo superi un negativo è P(X+>X−)=Φ(d/2)P(X_+>X_-)=\Phi(d/\sqrt2) (la differenza di due normali indipendenti è una normale di media dd e varianza 22, Somma di variabili aleatorie indipendentiSe X e Y sono indipendenti, la legge di Z = X + Y è la convoluzione: p_Z(n) = Σ_k p_X(k) p_Y(n − k) nel discreto, f_Z(z) = ∫ f_X(z − y) f_Y(y) dy nel continuo. Casi notevoli: Bin(n,p) + Bin(m,p) = Bin(n+m,p), Poi(λ) + Poi(μ) = Poi(λ+μ), Geo + Geo con densità (n−1)p²(1−p)^(n−2), Exp(λ) + Exp(λ) = Γ(2,λ), gaussiane indipendenti sommano medie e varianze.Somma di variabili aleatorie indipendenti →): con d=2d=2 si ha Φ(2)=Φ(1,414)=0,921\Phi(\sqrt2)=\Phi(1{,}414)=0{,}921, che è l'AUC. Con d=0d=0 (campane sovrapposte) Φ(0)=0,5\Phi(0)=0{,}5: classificatore casuale.

Perché l'AUC è una probabilità (passaggi). Si prende un positivo e un negativo a caso: in m⋅nm\cdot n coppie (se ci sono mm positivi e nn negativi) si conta quante volte il positivo ha punteggio maggiore. Nell'esempio dei quattro punteggi le coppie sono 2⋅2=42\cdot2=4 e quelle «vinte» sono 33 (la coppia persa è il positivo 0,350{,}35 contro il negativo 0,40{,}4): 3/4=0,753/4=0{,}75. Ogni coppia vinta corrisponde a un rettangolino di area 1m⋅1n\frac1m\cdot\frac1n sotto la curva (ogni positivo fa fare un passo di altezza 1/m1/m, ogni negativo un passo di larghezza 1/n1/n), quindi l'area totale è coppie vintemn\frac{\text{coppie vinte}}{mn}: area e probabilità coincidono.

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

python
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_score

Con un test set di 115115 campioni del dataset breast cancer (positiva la classe 11) e k=20k=20 vicini, il laboratorio ottiene accuracy 0,9220{,}922, specificità 0,8600{,}860, precision 0,9200{,}920, recall 0,9580{,}958 (F1=0,939F_1=0{,}939); con la regressione logistica sui dati standardizzati accuracy 0,9830{,}983, specificità 0,9530{,}953, precision 0,9730{,}973, recall 11.

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 0,50{,}5 è 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). Incrocia la classe vera (righe) con la classe prevista (colonne); la diagonale contiene le previsioni corrette. In binaria la classe positiva è quella di interesse (malattia, spam, frode, default).

  • TP (vero positivo): positivo previsto positivo.
  • TN (vero negativo): negativo previsto negativo.
  • FP (falso positivo, errore di tipo I): negativo previsto positivo, cioè un falso allarme.
  • FN (falso negativo, errore di tipo II): positivo previsto negativo, cioè una mancata rilevazione.

Esempio. Vere [1,1,1,1,0,0,0,1,1,1][1,1,1,1,0,0,0,1,1,1], previste [1,1,1,1,0,0,1,0,0,0][1,1,1,1,0,0,1,0,0,0]: TP =4=4, TN =2=2, FP =1=1, FN =3=3.

Formula (accuracy, specificità, precision, recall). accuracy=TP+TNTP+TN+FP+FN,specificitaˋ=TNTN+FP,\text{accuracy}=\frac{TP+TN}{TP+TN+FP+FN},\qquad \text{specificità}=\frac{TN}{TN+FP}, precision=TPTP+FP,recall=TPTP+FN.\text{precision}=\frac{TP}{TP+FP},\qquad \text{recall}=\frac{TP}{TP+FN}.

Esempio (stessi dati). Accuracy =6/10=0,6=6/10=0{,}6; specificità =2/3=0,667=2/3=0{,}667; precision =4/5=0,8=4/5=0{,}8; recall =4/7=0,571=4/7=0{,}571.

  • Precision: tra le previsioni positive, la frazione giusta. Dice quanto sono affidabili.
  • Recall (sensibilità, true positive rate): tra i positivi veri, la frazione trovata.
  • Specificità: tra i negativi veri, la frazione riconosciuta. Conta quando i falsi allarmi sono costosi.

Ogni metrica è una probabilità condizionataLa probabilità di A sapendo che si è verificato B è P(A ∣ B) = P(A ∩ B) / P(B), con P(B) > 0; è una nuova misura di probabilità, e da essa seguono la regola del prodotto e la regola della catena.Probabilità condizionata → P(A∣B)P(A\mid B) con il gruppo BB diverso: accuracy =P(Y^=Y)=P(\hat Y=Y) sul test set intero; recall =P(Y^=1∣Y=1)=P(\hat Y=1\mid Y=1) sulla riga dei positivi veri; precision =P(Y=1∣Y^=1)=P(Y=1\mid \hat Y=1) sulla colonna dei previsti positivi.

Precision da recall con Bayes. Con prevalenza π=P(Y=1)\pi=P(Y=1), la formula di BayesSe (A_i) è una partizione di Ω, P(B) = Σ P(B ∣ A_i) P(A_i) (probabilità totali); la formula di Bayes inverte il condizionamento: P(A_k ∣ B) = P(B ∣ A_k) P(A_k) / P(B).Formula delle probabilità totali e formula di Bayes → dà precision=recall⋅πrecall⋅π+(1−specificitaˋ)(1−π).\text{precision}=\frac{\text{recall}\cdot\pi}{\text{recall}\cdot\pi+(1-\text{specificità})(1-\pi)}. Esempio. π=1%\pi=1\%, recall == specificità =0,95=0{,}95: su 10001000 casi, 9,59{,}5 TP e 49,549{,}5 FP, quindi precision =9,5/59=0,161=9{,}5/59=0{,}161.

Come scegliere. Dipende dal costo degli errori: in diagnosi o manutenzione predittiva conta il recall; per un antispam che non deve bloccare mail vere conta la precision.

Il punteggio F1F_1

F1=2 precision⋅recallprecision+recall=2 TP2 TP+FP+FN.F_1=\frac{2\,\text{precision}\cdot\text{recall}}{\text{precision}+\text{recall}}=\frac{2\,TP}{2\,TP+FP+FN}. È la media armonica: l'inverso della media aritmetica degli inversi. Con precision 11 e recall 0,10{,}1 la media aritmetica sarebbe 0,550{,}55, mentre F1=0,18F_1=0{,}18: il valore piccolo domina. Esempio. Precision 0,80{,}8 e recall 0,5710{,}571 danno F1=0,667F_1=0{,}667, uguale a 8/128/12 calcolato sui conteggi. F1F_1 non usa TNTN.

Dati sbilanciati: l'accuracy inganna

Esempio (antispam, modello 2). Su 10001000 mail, 1010 spam e 990990 non spam, un modello che predice sempre «non spam» ha accuracy 990/1000=99%990/1000=99\% e recall 00. La precision è 0/00/0, indefinita.

  • Il modello può ignorare la classe minoritaria, con alta accuracy e prestazioni pessime sulla minoritaria.
  • Regressione logistica, SVM e reti tendono a ottimizzare la classe maggioritaria: bordi di decisione distorti.

Quindi: precision, recall, F1F_1, ROC-AUC, cross-validation stratificataLa 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, riequilibrio.

  • Undersampling: si scartano campioni della maggioritaria. Veloce, ma perde informazione e può causare underfitting.
  • Oversampling: si duplicano campioni della minoritaria. Nessuna perdita, ma rischio di overfitting.
  • SMOTE: le slide avvertono di non usarlo.
  • Il riequilibrio si applica solo al training, mai prima della divisione in train e test.

Esempio. 900900 campioni A e 100100 B: l'undersampling porta a 100100 e 100100; l'oversampling a 900900 e 900900, con ogni B ripetuta in media 99 volte.

Più classi

Con C>2C>2 la matrice è C×CC\times C. Per ogni classe si considera «classe contro resto», poi si fa la media macro (ogni classe pesa allo stesso modo).

Esempio. Matrice [8112100028]\begin{bmatrix}8&1&1\\2&10&0\\0&2&8\end{bmatrix} (righe vere): accuracy =26/32=0,8125=26/32=0{,}8125. Precision per classe 0,8; 0,769; 0,8890{,}8;\ 0{,}769;\ 0{,}889, media macro 0,8190{,}819. Recall per classe 0,8; 0,833; 0,80{,}8;\ 0{,}833;\ 0{,}8, media macro 0,8110{,}811.

Soglia, curva ROC e AUC

I modelli che producono un punteggio (logistica, frazione di voti di una foresta) confrontano il punteggio con una soglia, di solito 0,50{,}5. Soglia alta: pochi positivi previsti, più falsi negativi. Soglia bassa: più falsi positivi.

Definizione (ROC). Per ogni soglia tt (positivo se punteggio ≥t\ge t): TPR=TPTP+FN\text{TPR}=\frac{TP}{TP+FN} e FPR=FPFP+TN=1−specificitaˋ\text{FPR}=\frac{FP}{FP+TN}=1-\text{specificità}. La curva ROC riporta TPR contro FPR. AUC\text{AUC} è l'area sotto la curva: 11 per un classificatore perfetto, 0,50{,}5 per uno casuale.

Esempio. y=[0,0,1,1]y=[0,0,1,1], punteggi [0,1; 0,4; 0,35; 0,8][0{,}1;\,0{,}4;\,0{,}35;\,0{,}8]: i punti sono (0; 0,5)(0;\,0{,}5), (0,5; 0,5)(0{,}5;\,0{,}5), (0,5; 1)(0{,}5;\,1), (1; 1)(1;\,1) e l'area è 0,750{,}75.

AUC come probabilità. L'AUC è la probabilità che un positivo preso a caso abbia punteggio maggiore di un negativo preso a caso. Nell'esempio le coppie (positivo, negativo) sono 2⋅2=42\cdot2=4 e quelle «vinte» sono 33: 3/4=0,753/4=0{,}75. Per due normali Distribuzione gaussiana (normale)N(μ, σ²) ha densità e^(−(x−μ)²/(2σ²)) / √(2πσ²), a campana centrata in μ con larghezza σ; media μ, varianza σ²; si standardizza con Z = (X − μ)/σ ~ N(0, 1) e si calcola P(X ≤ x) = Φ((x − μ)/σ), con Φ(−z) = 1 − Φ(z); aX + b è ancora gaussiana, N(aμ + b, a²σ²).Distribuzione gaussiana (normale) → con deviazione standard 11 e medie che distano dd, l'AUC vale Φ(d/2)\Phi(d/\sqrt2) (Somma di variabili aleatorie indipendentiSe X e Y sono indipendenti, la legge di Z = X + Y è la convoluzione: p_Z(n) = Σ_k p_X(k) p_Y(n − k) nel discreto, f_Z(z) = ∫ f_X(z − y) f_Y(y) dy nel continuo. Casi notevoli: Bin(n,p) + Bin(m,p) = Bin(n+m,p), Poi(λ) + Poi(μ) = Poi(λ+μ), Geo + Geo con densità (n−1)p²(1−p)^(n−2), Exp(λ) + Exp(λ) = Γ(2,λ), gaussiane indipendenti sommano medie e varianze.Somma di variabili aleatorie indipendenti →): con d=2d=2 si ha Φ(1,414)=0,921\Phi(1{,}414)=0{,}921.

Soglia t=1t=1. Con medie 00 e 22, il TPR è l'area dei positivi a destra di tt (0,8410{,}841) e il FPR è l'area dei negativi a destra di tt (Funzione di distribuzioneLa funzione di distribuzione (FdD) F_X(x) = P(X ≤ x) è definita per ogni v.a., è crescente, continua a destra, va da 0 a 1 e determina la legge; per una v.a. discreta è a gradini, con salti in corrispondenza dei valori e di altezza pari alla densità.Funzione di distribuzione →): FPR=0,159\text{FPR}=0{,}159.

Errori tipici:

  • valutare un problema sbilanciato con l'accuracy;
  • scambiare precision (colonna) e recall (riga);
  • riequilibrare prima di dividere train e test;
  • considerare la soglia 0,50{,}5 una scelta obbligata invece di una scelta che dipende dal costo degli errori;
  • confondere la media macro con l'accuracy.

Esercizi su questo argomento

Teoria collegata