Vai al contenuto

Curva ROC

La Storia Dietro la Matematica

La storia della curva ROC (Receiver Operating Characteristic) non nasce nei laboratori statistici, ma nel caos della Seconda Guerra Mondiale.

Nel 1941, l'attacco a Pearl Harbor costrinse gli Stati Uniti ad entrare in guerra. Una delle sfide più critiche era la rilevazione dei segnali radar: gli operatori dovevano distinguere tra segnali autentici di aerei nemici e rumore o falsi allarmi. Un aereo nemico mancato poteva essere catastrofico, ma troppi falsi allarmi avrebbero esaurito le risorse ed eroso la fiducia nel sistema.

Ingegneri e psicologi che lavoravano alle stazioni radar avevano bisogno di un modo per quantificare il compromesso tra: - Tasso di rilevamento (rilevare correttamente aerei reali) - Tasso di falsi allarmi (identificare erroneamente rumore come aerei)

Questo problema fu formalizzato negli anni '50 da ingegneri elettrici che studiavano la teoria della rilevazione del segnale. Il termine "Receiver Operating Characteristic" (in italiano: Caratteristica Operativa del Ricevitore) proviene dall'ingegneria dei ricevitori radio — descriveva quanto bene un ricevitore potesse distinguere il segnale dal rumore in diverse condizioni operative.

David M. Green e John A. Swets (1966) portarono l'analisi ROC nella psicologia e nella teoria delle decisioni con il loro libro Signal Detection Theory and Psychophysics. Dimostrarono che le curve ROC non erano solo strumenti ingegneristici, ma fondamentali per comprendere come esseri umani e sistemi prendono decisioni in condizioni di incertezza.

Negli anni '70 e '80, i ricercatori medici adottarono le curve ROC per valutare i test diagnostici. Il lavoro pionieristico di Charles E. Metz e Jerome A. Lusted stabilì la metodologia ROC come standard d'oro per valutare l'accuratezza diagnostica medica — dallo screening oncologico ai test di laboratorio.

Oggi le curve ROC sono onnipresenti nel machine learning, dove valutano classificatori binari. Dai filtri antispam ai modelli di predizione di malattie, l'analisi ROC aiuta i data scientist a comprendere e ottimizzare le prestazioni dei classificatori.

Perché È Importante

Le curve ROC sono lo strumento standard per valutare i sistemi di classificazione binaria. Sono utilizzate in:

  • Medicina: Valutazione di test diagnostici (biomarcatori tumorali, test COVID-19, diagnostica per immagini)
  • Machine Learning: Valutazione di classificatori binari (rilevamento spam, rilevamento frodi, sistemi di raccomandazione)
  • Sicurezza: Sistemi di rilevamento intrusioni, autenticazione biometrica (impronte digitali, riconoscimento facciale)
  • Finanza: Credit scoring, predizione di default
  • Psicologia: Esperimenti di rilevazione del segnale, studi decisionali
  • Controllo Qualità: Rilevamento difetti nella manifattura
  • Recupero Informazioni: Prestazioni dei motori di ricerca, classificazione documenti

A differenza della semplice accuratezza, le curve ROC rivelano l'intero spettro di prestazioni attraverso tutte le possibili soglie decisionali, rendendole essenziali per comprendere i compromessi in qualsiasi sistema di decisione binaria.

Prerequisiti

Concetti Fondamentali

Prima di immergerci nella matematica, dobbiamo costruire le fondamenta concettuali dai primi principi.

Il Problema della Classificazione Binaria

Supponiamo di avere un compito di classificazione binaria: dobbiamo assegnare ogni osservazione a una di due classi.

Esempi: - Diagnosi di malattia: malato (positivo) vs. sano (negativo) - Filtro email: spam (positivo) vs. ham (negativo) - Rilevamento frodi: fraudolento (positivo) vs. legittimo (negativo)

Verità fondamentale: Sia \(Y \in \{0, 1\}\) la classe vera: - \(Y = 1\): classe positiva (es., malattia presente) - \(Y = 0\): classe negativa (es., malattia assente)

Classificatore: Un classificatore produce un punteggio o probabilità \(\hat{p} = f(X)\) per ogni osservazione \(X\). Punteggi più alti indicano maggiore confidenza che l'osservazione appartenga alla classe positiva.

Regola decisionale: Per fare una predizione binaria, confrontiamo il punteggio con una soglia \(\tau\):

\[ \hat{Y} = \begin{cases} 1 & \text{se } \hat{p} \geq \tau \\ 0 & \text{se } \hat{p} < \tau \end{cases} \]

Intuizione chiave: Soglie diverse producono compromessi diversi tra rilevare veri positivi ed evitare falsi positivi.

La Matrice di Confusione

Per una data soglia \(\tau\), possiamo categorizzare tutte le predizioni in quattro gruppi:

\(Y = 1\) (Positivo Reale) \(Y = 0\) (Negativo Reale)
\(\hat{Y} = 1\) (Predetto Positivo) Vero Positivo (TP) Falso Positivo (FP)
\(\hat{Y} = 0\) (Predetto Negativo) Falso Negativo (FN) Vero Negativo (TN)

Definizioni: - TP (Vero Positivo): Casi positivi identificati correttamente - FP (Falso Positivo): Casi negativi identificati erroneamente come positivi (Errore di Tipo I) - FN (Falso Negativo): Casi positivi identificati erroneamente come negativi (Errore di Tipo II) - TN (Vero Negativo): Casi negativi identificati correttamente

Sia: - \(P = TP + FN\) (totale positivi reali) - \(N = FP + TN\) (totale negativi reali)

Tasso di Veri Positivi (TPR) — Sensibilità

Il Tasso di Veri Positivi (chiamato anche Sensibilità, Recall, o Hit Rate) misura la proporzione di positivi reali identificati correttamente:

\[ \text{TPR}(\tau) = \frac{TP}{P} = \frac{TP}{TP + FN} \]

Interpretazione: "Di tutti i casi realmente positivi, che frazione abbiamo rilevato?"

Esempio: Se 100 pazienti hanno il cancro e il nostro test ne rileva 85, allora TPR = 85/100 = 0.85.

Interpretazione probabilistica formale:

\[ \text{TPR}(\tau) = P(\hat{Y} = 1 | Y = 1) = P(\hat{p} \geq \tau | Y = 1) \]

Questa è la probabilità che un caso realmente positivo abbia un punteggio sopra la soglia \(\tau\).

Tasso di Falsi Positivi (FPR)

Il Tasso di Falsi Positivi (chiamato anche Fall-out o Tasso di Errore di Tipo I) misura la proporzione di negativi reali identificati erroneamente come positivi:

\[ \text{FPR}(\tau) = \frac{FP}{N} = \frac{FP}{FP + TN} \]

Interpretazione: "Di tutti i casi realmente negativi, che frazione abbiamo erroneamente chiamato positivi?"

Esempio: Se 1000 pazienti sono sani ma il nostro test segnala erroneamente 50 come malati, allora FPR = 50/1000 = 0.05.

Interpretazione probabilistica formale:

\[ \text{FPR}(\tau) = P(\hat{Y} = 1 | Y = 0) = P(\hat{p} \geq \tau | Y = 0) \]

Questa è la probabilità che un caso realmente negativo abbia un punteggio sopra la soglia \(\tau\).

Relazione importante: Il complemento di FPR è la Specificità:

\[ \text{Specificità}(\tau) = 1 - \text{FPR}(\tau) = \frac{TN}{N} = P(\hat{Y} = 0 | Y = 0) \]

La Curva ROC: Definizione

La curva ROC è un grafico di TPR contro FPR al variare della soglia \(\tau\) da \(-\infty\) a \(+\infty\).

Matematicamente: La curva ROC è l'insieme di punti

\[ \text{ROC} = \{(\text{FPR}(\tau), \text{TPR}(\tau)) : \tau \in \mathbb{R}\} \]

Algoritmo di costruzione: 1. Inizia con \(\tau = +\infty\): tutte le predizioni sono negative, quindi \(\text{TPR} = 0\) e \(\text{FPR} = 0\). Punto: \((0, 0)\). 2. Diminuisci gradualmente \(\tau\): più istanze sono classificate come positive. 3. Termina con \(\tau = -\infty\): tutte le predizioni sono positive, quindi \(\text{TPR} = 1\) e \(\text{FPR} = 1\). Punto: \((1, 1)\).

Proprietà chiave: Abbassando la soglia, sia TPR che FPR aumentano monotonicamente. La curva va sempre da \((0,0)\) a \((1,1)\).

Proprietà della Curva ROC

Il Classificatore Casuale

Un classificatore casuale assegna etichette casualmente con probabilità \(p\), indipendentemente dalle caratteristiche.

Per qualsiasi soglia, tale classificatore produce \(\text{TPR}(\tau) = \text{FPR}(\tau) = p\).

Risultato: La curva ROC è la linea diagonale \(\text{TPR} = \text{FPR}\).

Questa linea rappresenta nessuna capacità di discriminazione — il classificatore non funziona meglio di un'ipotesi casuale.

Il Classificatore Perfetto

Un classificatore perfetto assegna punteggio 1 a tutti i casi positivi e punteggio 0 a tutti i casi negativi.

Comportamento: - Quando \(\tau > 1\): tutte le predizioni sono negative, \((\text{FPR}, \text{TPR}) = (0, 0)\) - Quando \(0 \leq \tau \leq 1\): tutti i positivi predetti positivi, tutti i negativi predetti negativi, \((\text{FPR}, \text{TPR}) = (0, 1)\) - Quando \(\tau < 0\): tutte le predizioni sono positive, \((\text{FPR}, \text{TPR}) = (1, 1)\)

Risultato: La curva ROC è l'angolo in alto a sinistra: va da \((0,0)\) a \((0,1)\) a \((1,1)\).

Principio generale: Classificatori migliori hanno curve ROC più vicine all'angolo in alto a sinistra.

Confronto tra Classificatori

Dati due classificatori A e B: - Se ROC(A) è completamente sopra ROC(B), allora A domina B per tutte le soglie - Se le curve si intersecano, allora quale è migliore dipende dal compromesso FPR/TPR desiderato

Area Sotto la Curva (AUC)

L'Area Sotto la Curva ROC (AUC) è un numero singolo che riassume le prestazioni del classificatore.

\[ \text{AUC} = \int_0^1 \text{TPR}(\text{FPR}) \, d(\text{FPR}) \]

Interpretazione: - \(\text{AUC} = 0.5\): Classificatore casuale (linea diagonale) - \(\text{AUC} = 1.0\): Classificatore perfetto - \(0.5 < \text{AUC} < 1.0\): Meglio del casuale; più alto è meglio - \(\text{AUC} < 0.5\): Peggio del casuale (probabilmente le predizioni sono invertite)

Interpretazione Probabilistica

Teorema: L'AUC è uguale alla probabilità che il classificatore classifichi un'istanza positiva casuale più in alto di un'istanza negativa casuale.

Formalmente: Sia \(X_+\) un'osservazione casuale dalla classe positiva e \(X_-\) dalla classe negativa. Allora:

\[ \text{AUC} = P(f(X_+) > f(X_-)) \]

dove \(f\) è la funzione di punteggio del classificatore.

Sketch della dimostrazione:

Considera tutte le coppie \((i, j)\) dove \(i\) è un'istanza positiva e \(j\) è un'istanza negativa.

L'AUC può essere calcolata come:

\[ \text{AUC} = \frac{\sum_{i \in P} \sum_{j \in N} \mathbb{1}[\hat{p}_i > \hat{p}_j]}{|P| \cdot |N|} \]

Questo conta la frazione di coppie dove il positivo ha un punteggio più alto del negativo.

Questo è equivalente alla statistica U di Mann-Whitney / test della somma dei ranghi di Wilcoxon.

Significato pratico: L'AUC misura la capacità del classificatore di ordinare correttamente le istanze, indipendentemente da una soglia specifica.

Derivazione: ROC dalle Distribuzioni di Punteggio

Per derivare matematicamente la curva ROC, dobbiamo modellare le distribuzioni di punteggio per classi positive e negative.

Distribuzioni di Punteggio

Sia: - \(f_1(s)\): densità di probabilità dei punteggi per la classe positiva (\(Y = 1\)) - \(f_0(s)\): densità di probabilità dei punteggi per la classe negativa (\(Y = 0\))

Esempio: Per un classificatore probabilistico ben calibrato, queste potrebbero essere distribuzioni beta o miscele di distribuzioni.

Calcolo di TPR e FPR

Per una soglia \(\tau\):

TPR è la probabilità che un'istanza positiva abbia un punteggio sopra \(\tau\):

\[ \text{TPR}(\tau) = P(\hat{p} \geq \tau | Y = 1) = \int_\tau^\infty f_1(s) \, ds \]

FPR è la probabilità che un'istanza negativa abbia un punteggio sopra \(\tau\):

\[ \text{FPR}(\tau) = P(\hat{p} \geq \tau | Y = 0) = \int_\tau^\infty f_0(s) \, ds \]

Forma Parametrica

Al variare di \(\tau\) da \(+\infty\) a \(-\infty\), tracciamo la curva parametrica:

\[ \begin{cases} x(\tau) = \text{FPR}(\tau) = \int_\tau^\infty f_0(s) \, ds \\ y(\tau) = \text{TPR}(\tau) = \int_\tau^\infty f_1(s) \, ds \end{cases} \]

Esempio: Supponiamo che entrambe le classi abbiano distribuzioni di punteggio Gaussiane: - Classe positiva: \(\hat{p} | Y=1 \sim \mathcal{N}(\mu_1, \sigma_1^2)\) - Classe negativa: \(\hat{p} | Y=0 \sim \mathcal{N}(\mu_0, \sigma_0^2)\)

Allora:

\[ \text{FPR}(\tau) = 1 - \Phi\left(\frac{\tau - \mu_0}{\sigma_0}\right) \]
\[ \text{TPR}(\tau) = 1 - \Phi\left(\frac{\tau - \mu_1}{\sigma_1}\right) \]

dove \(\Phi\) è la CDF normale standard.

Calcolo dell'AUC dalle Distribuzioni

Se conosciamo \(f_0\) e \(f_1\), possiamo calcolare l'AUC direttamente:

\[ \text{AUC} = \int_{-\infty}^\infty \text{TPR}(\tau) \, f_0(\tau) \, d\tau \]

Perché? Questo integra la probabilità che un negativo casuale abbia punteggio \(\tau\) per la probabilità che un positivo casuale abbia punteggio sopra \(\tau\).

Alternativamente:

\[ \text{AUC} = \iint \mathbb{1}[s_1 > s_0] f_1(s_1) f_0(s_0) \, ds_1 \, ds_0 \]

Esempio Completo

Problema: Un test medico produce un punteggio continuo \(s \in [0, 100]\) per la rilevazione di malattie. Abbiamo: - 50 pazienti malati (positivi) - 200 pazienti sani (negativi)

Punteggi: - Malati: \(\{95, 92, 88, 85, 80, 78, 75, 70, 65, 60, \ldots\}\) (punteggi tendenzialmente alti) - Sani: \(\{55, 50, 48, 45, 42, 40, 38, 35, 30, 25, \ldots\}\) (punteggi tendenzialmente bassi)

Passo 1: Ordina tutti i punteggi in ordine decrescente e calcola TP e FP cumulativi.

Soglia \(\tau\) TP FP TPR = TP/50 FPR = FP/200
100 0 0 0.00 0.000
95 1 0 0.02 0.000
92 2 0 0.04 0.000
... ... ... ... ...
60 10 5 0.20 0.025
55 10 6 0.20 0.030
... ... ... ... ...
0 50 200 1.00 1.000

Passo 2: Traccia i punti (FPR, TPR).

La curva ROC connette questi punti. La curva sarà sopra la diagonale se il test ha potere discriminatorio.

Passo 3: Calcola l'AUC usando la regola trapezoidale:

\[ \text{AUC} \approx \sum_{i=1}^{n-1} \frac{(\text{TPR}_i + \text{TPR}_{i+1})}{2} \times (\text{FPR}_{i+1} - \text{FPR}_i) \]

Supponiamo di calcolare \(\text{AUC} = 0.92\).

Interpretazione: - Questo test ha eccellente discriminazione - C'è una probabilità del 92% che un paziente malato casuale abbia un punteggio più alto di un paziente sano casuale - Il test è molto migliore del casuale (AUC = 0.5)

Scelta del Punto Operativo

La curva ROC mostra tutti i possibili compromessi, ma in pratica dobbiamo scegliere una singola soglia \(\tau\) da implementare.

Metodi per scegliere la soglia:

1. Massimizzare l'Indice di Youden

Statistica J di Youden:

\[ J(\tau) = \text{TPR}(\tau) - \text{FPR}(\tau) = \text{Sensibilità} + \text{Specificità} - 1 \]

Scegli \(\tau\) che massimizza \(J(\tau)\).

Interpretazione: Massimizza la distanza verticale dalla diagonale.

2. Minimizzare la Distanza dal Classificatore Perfetto

Scegli \(\tau\) che minimizza la distanza Euclidea da \((0, 1)\):

\[ \tau^* = \arg\min_\tau \sqrt{(1 - \text{TPR}(\tau))^2 + \text{FPR}(\tau)^2} \]

Interpretazione: Avvicinati il più possibile all'angolo in alto a sinistra.

3. Fissare FPR (o TPR)

Se abbiamo un vincolo sul tasso di falsi positivi accettabile (es., FPR \(\leq 0.05\)), trova la soglia che raggiunge quell'FPR e leggi il TPR corrispondente.

Esempio: I sistemi di sicurezza potrebbero richiedere FPR \(\leq 0.01\) (pochissimi falsi allarmi).

4. Decisione Sensibile ai Costi

Se conosciamo i costi dei falsi positivi (\(C_{FP}\)) e falsi negativi (\(C_{FN}\)), scegli \(\tau\) che minimizza il costo atteso:

\[ \text{Costo}(\tau) = C_{FP} \cdot \text{FPR}(\tau) \cdot N + C_{FN} \cdot (1 - \text{TPR}(\tau)) \cdot P \]

AUC Parziale

A volte ci interessa solo un intervallo FPR specifico. Ad esempio, nello screening oncologico potremmo considerare solo FPR \(\in [0, 0.2]\) (bassi tassi di falsi positivi).

AUC Parziale (pAUC):

\[ \text{pAUC}(a, b) = \int_a^b \text{TPR}(\text{FPR}) \, d(\text{FPR}) \]

dove \([a, b] \subset [0, 1]\) è l'intervallo FPR di interesse.

pAUC normalizzato (per renderlo comparabile all'AUC standard):

\[ \text{pAUC}_{\text{norm}} = \frac{\text{pAUC}(a, b)}{b - a} \]

Curva ROC per Problemi Multi-Classe

Per la classificazione multi-classe (classi \(1, 2, \ldots, K\)), possiamo:

One-vs-Rest (OvR)

Per ogni classe \(k\), trattala come positiva e tutte le altre come negative. Calcola \(K\) curve ROC separate.

One-vs-One (OvO)

Per ogni coppia di classi \((i, j)\), calcola una curva ROC. Questo dà \(\binom{K}{2}\) curve.

AUC Media Macro

\[ \text{AUC}_{\text{macro}} = \frac{1}{K} \sum_{k=1}^K \text{AUC}_k \]

dove \(\text{AUC}_k\) è l'AUC per la classe \(k\) nell'impostazione OvR.

AUC Pesata

\[ \text{AUC}_{\text{pesata}} = \sum_{k=1}^K w_k \cdot \text{AUC}_k \]

dove \(w_k\) è la proporzione della classe \(k\) nel dataset.

Errori Comuni

  1. "Alta AUC significa buona accuratezza": L'AUC misura la capacità di ordinamento, non l'accuratezza. Un classificatore può avere alta AUC ma scarsa calibrazione o accuratezza subottimale a qualsiasi soglia specifica.

  2. "AUC è sempre meglio dell'accuratezza": L'AUC è indipendente dalla soglia ma non tiene conto degli effetti dello sbilanciamento di classe allo stesso modo. Per dati altamente sbilanciati, le curve Precision-Recall possono essere più informative.

  3. "Le curve ROC funzionano per la regressione": Le curve ROC sono specificamente per classificazione binaria. Per la regressione, usa altre metriche (RMSE, MAE).

  4. "Il punto più vicino a (0,1) è sempre ottimale": Solo se falsi positivi e falsi negativi hanno costo uguale e le classi sono bilanciate. Con costi disuguali, un punto diverso può essere ottimale.

  5. "AUC = 0.5 significa che il classificatore è inutile": Significa che non è migliore del casuale. Ma se i costi sono asimmetrici o lo combini con altre informazioni, anche tale classificatore potrebbe avere valore.

Intervalli di Confidenza per l'AUC

L'AUC è una statistica calcolata da un campione. Possiamo costruire intervalli di confidenza usando:

Metodo DeLong (più comune)

Basato sulla stima della varianza:

\[ \text{Var}(\text{AUC}) \approx \frac{1}{P \cdot N} \left[A(1-A) + (P-1)(\theta_1 - A^2) + (N-1)(\theta_2 - A^2)\right] \]

dove \(A = \text{AUC}\), e \(\theta_1, \theta_2\) sono calcolati da confronti a coppie.

Intervallo di Confidenza al 95%:

\[ \text{AUC} \pm 1.96 \sqrt{\text{Var}(\text{AUC})} \]

Metodo Bootstrap

  1. Ricampiona il dataset con rimpiazzo \(B\) volte
  2. Calcola l'AUC per ogni campione bootstrap
  3. Usa i quantili empirici come limiti di confidenza

Test di Ipotesi: Confronto di Due AUC

Per testare se due classificatori hanno AUC significativamente diverse:

Ipotesi nulla: \(H_0: \text{AUC}_1 = \text{AUC}_2\)

Statistica test (test DeLong):

\[ Z = \frac{\text{AUC}_1 - \text{AUC}_2}{\sqrt{\text{Var}(\text{AUC}_1) + \text{Var}(\text{AUC}_2) - 2\text{Cov}(\text{AUC}_1, \text{AUC}_2)}} \]

Sotto \(H_0\), \(Z \sim \mathcal{N}(0, 1)\) asintoticamente.

Decisione: Rifiuta \(H_0\) se \(|Z| > 1.96\) (livello di significatività 5%).

Variabili e Simboli

Simbolo Nome Descrizione
\(Y\) Etichetta vera Classe reale, 1 (positiva) o 0 (negativa)
\(\hat{Y}\) Etichetta predetta Predizione del classificatore, 1 o 0
\(\hat{p}\) Punteggio/probabilità Punteggio di confidenza del classificatore
\(\tau\) Soglia Confine decisionale per la classificazione
TP, FP, TN, FN Matrice di confusione Veri/falsi positivi/negativi
TPR Tasso Veri Positivi Sensibilità, recall, hit rate
FPR Tasso Falsi Positivi Tasso errore Tipo I, 1 - specificità
AUC Area Sotto Curva Metrica riassuntiva prestazioni classificatore
\(P\) Conteggio positivi Totale casi positivi reali
\(N\) Conteggio negativi Totale casi negativi reali

Concetti Correlati

Riferimenti Storici e Moderni

  • Green, D. M., & Swets, J. A. (1966). Signal Detection Theory and Psychophysics. Wiley.
  • Hanley, J. A., & McNeil, B. J. (1982). "The meaning and use of the area under a receiver operating characteristic (ROC) curve." Radiology, 143(1), 29-36.
  • DeLong, E. R., DeLong, D. M., & Clarke-Pearson, D. L. (1988). "Comparing the areas under two or more correlated receiver operating characteristic curves: a nonparametric approach." Biometrics, 44(3), 837-845.
  • Fawcett, T. (2006). "An introduction to ROC analysis." Pattern Recognition Letters, 27(8), 861-874.
  • Provost, F., & Fawcett, T. (2001). "Robust classification for imprecise environments." Machine Learning, 42(3), 203-231.