sfondo

Alice Giampino, Federico Melograna, Beatrice Somaschini

Beyond the linear model

Anche tu, come noi, ti sarai interrogato sul come poter trovare dati anomali all'interno del tuo dataset. Ma cosa sono precisamente gli outlier?

"An outlier is an observation that deviates so much from other observations as to arouse suspicion that it was generated by a different mechanism."

Hawkins, 1980

Spesso non si presta troppa attenzione all'outlier detection, utilizzando come unico metodo modelli lineari (o modelli lineari generalizzati). Quest'ultimi condizionano l'individuazione di valori anomali all'utilizzo di una variabile risposta vincolandoli al modello fittato.
Ma la definizione di outlier è molto più ampia!
Da novizi a questa analisi ci siamo proposti l'obiettivo di ricercare metodi alternativi NON supervisionati per l'outlier detection. Tali tecniche non solo sono utilizzate per trovare valori anomali al fine di eliminarli, considerandoli quindi come un noise rispetto alle osservazioni normali , bensì vengono largamente impiegate per unbalanced classification, come poterebbe ad esempio essere la fraud detection.
E' proprio questa la direzione che prenderà il nostro blog: OCSVM (One-Class Support Vector Machine, abbreviato in SVM), kNN (k Nearest-Neighbour), IF (Isolation Forest), LOF (Local Outlier Factor), Optics e DBSCAN (Density-Based Spatial Clustering of Applications with Noise) ti aiuteranno nella tua ricerca.
Trova il metodo che fa al caso tuo!

Analisi svolta

Dopo una lunga ricerca teorica e di dati per l'analisi, abbiamo testato i nostri metodi su 27 dataset appositi per outlier detection, diventati poi 53 dopo averne considerato diverse varianti (dati scalati, factor binarizzati,...). Di ogni dataset era già noto quanti e quali fossero i valori anomali, in particolare si tratta di valori della classe minoritaria in una classificazione non bilanciata.
Ogni tecnica è stata testata su ognuno dei dataset calcolandone appositi indici: AUC (Area Under Curve), precision e recall.
L'analisi non è stata un'impresa facile e i problemi riscontrati non sono stati pochi. In primis, è stato necessario un opportuno tuning dei parametri di ogni metodo, per far sì che si adattassero ai dati in analisi. In secondo luogo, abbiamo creato due apposite funzioni per rendere il più automatizzato possibile l'utilizzo di ogni metodo. Queste servono da supporto nell'individuazione della soglia oltre la quale un'osservazione è considerata outlier. Ciononostante la decisione finale di questo split è rimessa sempre all'utente.
Immagini esemplificative del riconoscimento di outlier per ogni metodo:

DBSCAN_score

Outlier score from DBSCAN.

Optics_split

Outlier score from Optics.


IF_split

Outlier score from IF.

kNN_split

Outlier score from kNN.


SVM_split

SVM outlier recognition.

LOF_split

Outlier score from LOF.

La descrizione dettagliata dell'analisi svolta, dei metodi e dei dataset è disponibile nella metodologia.

Risultati
Outlier

In generale, non esistono modelli migliori in assoluto. Ciò che abbiamo osservato è che modelli diversi hanno performato meglio degli altri in base a diverso numero di osservazioni (n), numero di variabili (p), nonchè in base a diverse strutture di dati.


Best_performance

Nel grafico soprastante è stato riportato dove performa meglio ogni metodo rispetto agli altri considerando i valori di AUC più alti raggiunti in base a combinazioni tra n e p.

ATTENZIONE: ciò non implica che per diverse coppie di (n,p) i metodi possano non eccellere, lo scopo del grafico è quello di mostrare tra questi chi raggiunge un AUC più alto.

Date le considerazioni precedenti, abbiamo deciso di mettere in evidenza i risultati ottenuti in base alle caratteristiche dei dataset. Per fare ciò, abbiamo deciso di raggruppare i nostri dati in 5 cluster differenti attraverso una cluster analysis. Il numero di righe si è rivelato essere la variabile più discriminante.
Vediamo ora nel dettaglio le caratteristiche comuni dei dataset in ogni cluster e il best method da utilizzare. Forniremo anche delle rappresentazioni grafiche dove verrà mostrato l'andamento dell'AUC in base al numero di osservazioni e di attributi, dove la grandezza delle bolle in ogni plot indica l'intensità del livello di AUC del metodo vincente per quello specifico dataset.


Cluster 1: 100 < n < 3000

legenda

Il primo cluster individuato è caratterizzato da un numero di osservazioni compreso tra 100 e 3000. Per i dataset in questo gruppo il numero di attributi non è rilevante, infatti hanno un range ampio da 6 a 270. Quando sono presenti tali caratteristiche il metodo che permette di ottenere performance migliori è il kNN. L'AUC medio ottenuto nel cluster è del 78%. Nel grafico è possibile anche osservare la distinzione tra dataset originali e scalati per cui le performance migliori possono esser date da due metodi differenti. Ad esempio, per il dataset "Wine" è possibile raggiungere un AUC di 0.99 con kNN, ma scalandolo la miglior performance è ottenuta da IF con un AUC di 0.89.


Cluster 2: 3000 < n < 6000

legenda

Il secondo cluster ha un numero di osservazioni da 3000 a 6000, il numero di attributi va da 6 a 400 (non discrimina, come già detto). Per questa tipologia di dataset il metodo SVM risulta vincente, perchè nonostante non porti ad ottenere AUC molto alti, non superano il 66%, resta comunque la tecnica che permette di distinguere le osservazioni anomale in modo migliore, in particolar modo con p elevato e con strutture di datidove risulta più difficile l'individuazione tra classe normale ed anomala. L'AUC medio del cluster è del 78%, ma con una variabilità molto elevata.


Cluster 3: 6000 < n < 30000

legenda

In questo cluster il range delle osservazioni va da 6000 a 30000. L'AUC medio è del 67%. Infatti, come nel cluster precedente, quando gli altri metodi non riescono a raggiungere buone performance, l'SVM è il metodo migliore.


Cluster 4: 30000 < n < 100000

legenda

Le osservazioni hanno un range da 30000 a 60000. In questi dataset notiamo che il numero di attributi è piccolo, va infatti da 3 a 9. Anche il rapporto tra numero di outlier ed osservazioni è molto basso. In questo cluster vengono raggruppati solo 4 dataset, dove il metodo migliore risulta nel complesso SVM, DBSCAN e IF hanno ottenuto buone performance. IF riesce a raggiungere il 97% di AUC nel dataset "Shuttle".


Cluster 5: 100000 < n < 600000

legenda

In quest'ultimo cluster, n risulta molto grande e p va da 3 a 54. Sono compresi sei dataset e gli unici due metodi che riescono a trattare dataset così grandi in modo efficiente sono IF e kNN, in particolare IF riesce a raggiungere valori di AUC molto elevati.


Performance dei metodi:

Vengono di seguito riportati i grafici dell'andamento generale dell'AUC di ogni metodo su tutti i dataset analizzati in base ai valori di p ed n. Sono anche evidenziate le differenze tra dataset originali e scalati. Vengono confermate, per ogni metodo, le intuizioni riportate per ogni cluster. Considerazioni più approfondite si possono trovare nella metodologia.


Conclusioni:

Dalle analisi svolte non è emerso un metodo chiaramente migliore degli altri, ma ognuno ha messo in mostra pregi e difetti diversi.
Il processo di selezione del metodo desiderato deve quindi necessariamente tenere conto della struttura del dataset da affrontare.
Non è quindi consigliabile nè desiderabile una scelta aprioristica del metodo, ma una fase essenziale del processo di individuazione degli outlier è necessariamente l'individuazione delle caratteristiche dei dati.
Ogni metodo ha punti di debolezza e di forza differenti: LOF è poco efficiente con dati semplici ma è la scelta ottima con dati factor, DBSCAN è efficiente esclusivamente con dati semplici mentre, le SVM funzionano bene dove gli altri metodi falliscono, le IF risultano migliori con una grande mole di dati mentre kNN è ottimo con moli intermedie di dati restando però performante su ogni tipologia di Dataset.
Le tre principali metriche di valutazioni considerate sono AUC, precision e recall. Nelle prove effettuate nei dataset considerati non esiste una corrispondenza tra precision con l’area sottesa dalla curva ROC. Al contrario, a valori elevati di AUC sono spesso associati valori molto bassi di precision, che segnalano come si stiano considerano come outlier molti valori che non lo sono effettivamente. Nei paper trovati online l’AUC riportato è generalmente molto elevato, dell’ordine del 90%, valore che potrebbe nascondere bassi valori di precision o analisi realizzate su dataset ideali per tale fine.