Receiver Operator Characteristic Curve (ROC Curve) Si tratta di un metodo grafico per la valutazione della qualità di un classificatore binario. Il metodo è molto intuitivo ed espressivo. Purtroppo spesso intorno a tale metodo nascono delle confusioni dovute alla abbondanza di termini e di aggettivi. In questi brevi appunti cerco di spiegare un po' di termini e di introdurre in maniera piana il concetto. Immaginiamo di trovarci nella situazione che graficamente rappresentiamo nella figura sottostante. I due gruppi A (malati) e B (sani) sono mescolati tra loro in una unica popolazione U. Abbiamo a disposizione un test che “taglia” in due la popolazione U cercando di separare A e B. Purtroppo questa operazione è di frequente impossibile perché le “feature” osservate non sono sufficientemente “tipiche” del fenomeno che si vuole distinguere ed è quindi inevitabile introdurre nel classificatore un “errore” detto inevitabile a causa del sovrapporsi nello spazio delle feature delle due popolazioni. Nel disegno l'errore inevitabile sarebbe rappresentato dalla intersezione delle “aree” A e B. Supponiamo, per standardizzare la discussione, che A e B contengano il medesimo numero di elementi, che possiamo normalizzare ad 1. La nostra popolazione U allora “pesa” globalmente 2, e ciascuna delle due sotto-popolazioni A e B sono poste pari ad 1. Esempio. Un survey ha studiato 2300 adulti maschi tra i 70 e i 95 anni. Per ciascuno di essi si è misurata la presenza nel sangue di una sostanza in mg/ml che indicheremo con x. Si è osservato che alti valori di x corrispondono a una probabile situazione di patologia detta B e a valori bassi corrispondono a una situazione fisiologica detta A=U-B. Il survey ha evidenziato che 300 anziani hanno la malattia e sono in B e 2000 sono in A. Si suggerisce di fissare una soglia s per il valore x. I pazienti con x >s verranno segnalati come probabili soggetti nel gruppo B e i pazienti con x<s verranno segnalati come probabili soggetti nel gruppo A. A causa del sovrapporsi dei due gruppi quando essi vengono “descritti” nello spazio della feature x ci saranno certamente degli errori in questo schema di classificazione binaria. In genrale i casi che si presentano sono 4: a) x>s e il paziente è in B. Questo caso si chiama “vero positivo” o “hit” o “true positive” o TP. b) x>s e il paziente è in A. Questo caso si chiama “falso positivo” o FP. c) x<s e il paziente è in A. Questo caso si chiama “vero negativo” o TN. d) x<s e il paziente è in B. Questo caso si chiama “falso negativo” o FN. Graficamente possiamo ricopiare questi quattro casi in una tabella: Situazione reale A B x<s TN FN x>s FP TP La situazione dei dati osservati nell'esempio potrebbe essere allora riassunta come segue ove vengono indicate le cifre assolute come segue. Situazione reale A B x<s 1900 50 x>s 100 250 In realtà per potere condurre una analisi appropriata è comune “normalizzare” le popolazioni di A e B come se esse fossero equi-numerose. Basta dividere gli elementi della prima colonna per il totale della colonna e far lo stesso nella seconda colonna. Il risultato sarebbe quello della seguente tabella (valori approssimati): Situazione reale A B x<s .95 .16 x>s .05 .84 A questo punto è disponibile una pletora (una babele!) di aggettivi per le varie proporzioni che possiamo sensatamente calcolare su questi quattro numeri. Ecco un piccolo (non esaustivo) elenco. PRECISION = TP / (TP+FP) RECALL = SENSITIVITY = TP / (TP+FN) ACCURACY = (TP+TN) / (TP+TN+FN+FP) = (TP+TN)/U SPECIFICITY = TN / (TN+FP) Spesso questi indicatori sono preferiti in una applicazione o in un'altra. Spesso chi “vende” il test tende a scegliere tra essi quello che “appare” come il migliore... marketing! Supponiamo adesso che si proponga una nuova soglia s' > s. In questo caso il valore normalizzato TN salirebbe, e possiamo addirittura sperare che esso giunga a 1 (il test avrebbe quindi il massimo di specificità). Contemporaneamente però aumenterebbe il valore FN che potrebbe salire, per fissare le idee, a .24. Riassumiamo questa nuova situazione nella seguente tabella: Situazione reale A B x<s 1 .24 x>s 0 .76 Cosa accadrebbe se invece si scegliesse una nuova soglia s''<s? In questo caso il valore normalizzato dei FP salirebbe, per fissare le idee diciamo fino a .15.e il valore dei TN scenderebbe a .85. Sulla seconda colonna, per contro il valore dei FN scenderebbe diciamo a 0 e quello dei TP salirebbe a 1. Riassumiamo questa nuova situazione nella seguente tabella: Situazione reale A B x<s .85 0 x>s .15 1 Riassumendo tutto in una unica tabella avremmo: s piccolo s medio s grande FP TN FN TP precision recall accuracy specificity 0,15 0,85 0 1 0,87 1 0,93 0,85 0,05 0,95 0,16 0,84 0,94 0,84 0,9 0,95 0 1 0,24 0,76 1 0,76 0,88 1 Come si vede un aumento in precisione e specificità porta a una perdita di recall e accuratezza, e viceversa. La situazione si comprende meglio se si adotta l'espediente grafico di “segnare” le performance dello schema di classificazione su un diagramma bidimensionale come segue. L'asse delle ascisse x corrisponde al valore (1-specificity) e l'asse delle ordinate y corrisponde al valore della recall. In altri termini sull'asse delle ascisse segneremo il valore (1-TN / (TN+FP)) e sulle ordinate il valore TP / (TP+FN). A ciascuna scelta della soglia corrisponderà dunque un punto del diagramma. La curva risultante da tutte le possibili scelte di s si dice ROC curve del sistema dati/classificatore. Tale curva è quasi sempre determinata in maniera sperimentale. Solo in rari casi si riesce ad ottenere per essa una espressione analitica. Prima di esplorare le proprietà della curva osserviamo il seguente importante fatto. Il punto t = (x,y) = (FP/(TN+FP), TP/(TP+FN)) definisce assieme con (0,0), (1,1) e (1,0) un quadrilatero. L'area del quadrilatero (ottenuta scomponendolo in due triangoli di base 1 e altezza rispettivamente recall e specificity è data dalla espressione: Area = ½ TP/(TP+FN) + ½ TN/(TN+FP). Questa area rappresenta (nel caso di una popolazione in cui i casi positivi e negativi siano equi-numerosi, quale è quello in cui ci siamo messi standardizzando le due colonne della tabella separatamente) la probabilità di un elemento a caso tratto dalla popolazione di essere correttamente classificato. Infatti sono dati due casi mutualmente disgiunti. L'elemento è positivo ed è riconosciuto come vero positivo la cui probabilità è data da ½ TP / (TP+FN). Oppure l'elemento è negativo e viene riconosciuto come tale, evento che ha probabilità ½ TN / (TN+FP). Questa osservazione ci consente di dire che la situazione è tanto migliore quanto il punto che rappresenta la scelta della soglia si trova al di sopra della diagonale principale. Se il punto si trova sulla diagonale principale tale area è pari ad ½ e quindi, trovandoci nel caso di un classificatore binario la sua performance è simile a quella di una scelta casuale! Se addirittura il punto si trova sotto la diagonale possiamo affermare che si farà meglio a classificare lanciando una monetina! Questo caso in realtà indica che è più conveniente ribaltare lo schema cercando per i negativi piuttosto che per i positivi. Se nel nostro esempio la scelta del parametro s è portata al di sotto del dato minimo osservato tutto è classificato come positivo. Di conseguenza TN=0 e la sensitivity va a 1. D'altra parte non ci saranno neanche FN e quindi anche la recall andrà a 1. L'osservazione sull'area fatta sopra ci dice però che questa classificazione è inaccettabile. Viceversa se portiamo il parametro oltre il massimo dei valori osservati si avrà che non ci sono elementi positivi, cioè TP=0. Questo implica che la recall è 0 e la sensitivity diviene pari a 1. Il punto del grafico è dunque l'origine e di nuovo non abbiamo un classificatore utile. Un caso speciale spesso riportato nei testi è quello in cui le due calssi B e U-B sono equi-numerose e gaussiane di media m1 e m2 e di eguale varianza sigma. In questo caso la distanza d = (m1+m2)/2 si dice discriminabilità del sistema. Se d è maggiore di sigma le due campane, eccetto che per le code, sono ben separate. Ciò porta con una scelta della soglia di separazione equidistante tra le medie ad una elevata sensitività e a una elevata recall. Il punto sul grafico sarà quindi vicino al punto di coordinate (0,1). Se d fosse zero, le due campane sono perfettamente sovrapposte e qualsiasi scelta della soglia porterebbe ad un punto sulla diagonale principale indicando in questo caso la impossibilità di un classificatore a soglia utile. Se d è compreso tra zero e sigma le due campane hanno una notevole zona di overlapping. Questo porta, con le varie scelte di s alla costruzione di curve ROC che sono tanto più lontane dalla diagonale principale quanto più vicino è d a sigma. Si osservi che il caso di popolazioni gaussiane è comunque solo un caso particolare di utilizzo della analisi mediante curva ROC ed esso è sempre citato per la sua chiarezza. In generale la curva ROC come già osservato è calcolata sperimentalmente. Lo scopo dello studio di tale curva è quello di selezionare lungo essa il punto che garantisca la maggior area possibile sottesa dal quadrangolo illustrato sopra. Si tratta dunque di un vero metodo “grafico” di ottimizzazione. Esso era già noto e qualche volta adoperato a causa del suo diretto ed intuitivo significato sin da prima della introduzione dei computer. Si ricorda infine che lo studio di questa curva e il suo nome sono dovuti all'uso intenso di questo strumento nel campo delle trasmissioni radio dove è essenziale distinguere tra segnale (positivo) e rumore (negativo) in presenza di una notevole sovrapposizione tra le caratteristiche dei due segnali. Lo studio della curva ROC in questo caso produce un approccio di clasificazione implementabile già in hardware con una elettronica relativamente semplice. Più di recente i termini introdotti TP, FP etc sono divenuti ampiamente utilizzati nel campo farmaceutico e della diagnostica in medicina. Purtroppo la non diffusa competenza statistica di molti clinici e una tendenza a fare “marketing” dei propri algoritmi anche quando questi si mostrano un po' deboli da parte degli ideatori ha portato a scegliere per le qualità dei classificatori i nomi tutti “laudativi” che abbiamo visto sopra: precisione, recall, sensitivity etc. Se si ricorda che precision e recall sono però quasi sempre in controtendenza l'una rispetto all'altra si capisce come un buon “piazzatore” possa scegliere di volta in volta di sottolineare la precision o la recall del proprio sistema assegnato uno specifico valore di soglia al proprio algoritmo. In realtà una valutazione completa ed oggettiva di un sistema di classificazione a soglia richiede l'osservazione di tutta, o di gran parte della curva ROC. Di seguito, per concludere un esempio generale di curva ROC tratto dal Duda: