Qual è il modo migliore per identificare i valori anomali nei dati multivariati?


94

Supponiamo di avere un ampio set di dati multivariati con almeno tre variabili. Come posso trovare gli outlier? I grafici a dispersione a coppie non funzionano in quanto è possibile che esista un valore anomalo in 3 dimensioni che non sia un valore anomalo in nessuno dei sottospazi 2 dimensioni.

Non sto pensando a un problema di regressione, ma a dati multivariati veri. Quindi le risposte che implicano una regressione solida o una leva informatica non sono utili.

Una possibilità sarebbe quella di calcolare i punteggi dei componenti principali e cercare un valore anomalo nel grafico a dispersione bivariato dei primi due punteggi. Sarebbe garantito per funzionare? Ci sono approcci migliori?


3
Se una matrice scatterplot non la rileva, è possibile provare un diagramma a dispersione 3D. Ciò non funzionerà con la 4D, ovviamente, ma poi potresti creare una quarta dimensione nel tempo e fare un film. :)
Shane,

Che dire dell'analisi dei cluster (gerarchica)?
Andrej,

11
5 ° D nella tonalità del colore, 6 ° D nell'intensità del colore, 7 ° D nella dimensione in punti e possiamo andare ;-)

Risposte:


26

Dai un'occhiata al pacchetto mvoutlier che si basa su solide distanze mahalanobis ordinate, come suggerito da @drknexus.


4
Personalmente non credo in questo pacchetto! Penso che questo sia solo rumore della scienza. Questi tipi di teorie sono molto utili per i dati simulati, mentre solo pffff per i dati reali. Ho usato questo pacchetto ad esempio per rilevare valori anomali :-) purtroppo metà dei miei dati rilevati erano anomali MrGreen è divertente come la gente ne pubblichi alcuni (non so come chiamarlo). se hai qualche commento, sarò felice di vederlo. Abbiamo molti tipi di valori anomali ma dovremmo semplicemente rimuoverli dai nostri dati? Io credo di no.
Studente

1
Potresti spiegare quando e perché funziona?
eric_kernfeld,

19

Penso che la risposta di Robin Girard funzionerebbe piuttosto bene per 3 e forse 4 dimensioni, ma la maledizione della dimensionalità le impedirebbe di andare oltre. Tuttavia, il suo suggerimento mi ha portato ad un approccio correlato che è quello di applicare la stima della densità del kernel convalidata in modo incrociato ai primi tre punteggi dei componenti principali. Quindi un set di dati di dimensioni molto elevate può ancora essere gestito correttamente.

In sintesi, per i = 1 a n

  1. Calcola una stima della densità dei primi tre punteggi dei componenti principali ottenuti dal set di dati senza Xi.
  2. Calcola la probabilità di Xi per la densità stimata nel passaggio 1. chiamalo Li.

fine per

Ordinare Li (per i = 1, .., n) e gli outlier sono quelli con una probabilità inferiore a qualche soglia. Non sono sicuro di quale sarebbe una buona soglia - lo lascerò per chiunque scriva il documento su questo! Una possibilità è quella di creare un diagramma a scatole dei valori di log (Li) e vedere quali valori anomali vengono rilevati all'estremità negativa.


Grazie per questa risposta (dovrebbe essere un commento?) Come ho già accennato, come commento alla dimensione Alta della risposta di Rich non sono un problema (anche 1000 potrebbero funzionare) se si assume un'assunzione strutturale parametrica.
Robin Girard,

@rob "Non sono sicuro di quale sarebbe una buona soglia" questo sarebbe lo scopo della procedura multipla di test che ho citato .... ma sono pienamente d'accordo che le cose devono essere compilate e mi piace molto il rilevamento anomalo in il rilevamento anomalo! chi vuole scrivere un documento :)?
Robin Girard,

4
(-1) È un po 'sconvolgente il fatto che la risposta accettata a questa domanda non sia né utile (ad esempio troppo vaga e non implementata) né scientificamente corretta (come nemmeno in errore: per quanto ne so, non è nemmeno menzionata nella letteratura pertinente).
user603

6
(-1) questa sembra una risposta errata - questo metodo non rileverà valori anomali! è facile immaginare una nuvola di punti 3D simile a un pancake proiettata da PCA su un piano 2D e 1 punto esterno che è lontano dal piano ma la sua proiezione è proprio nel mezzo della nuvola proiettata, quindi la "densità del kernel" di il punto nel piano 2D sarà alto sebbene sia un valore anomalo.
Kochede,

1
Penso che PCA sarebbe problematico qui. PCA è un'approssimazione che considera i principali contributi alla varianza. Ma qui lo scopo è quello di trovare valori anomali : non "cadono tra le crepe"?
Omry Atia,

18

È possibile trovare un riepilogo pedagogico dei vari metodi disponibili in (1)

Per alcuni confronti numerici --recent-- dei vari metodi elencati, è possibile controllare (2) e (3) .

ci sono molti confronti numerici più vecchi (e meno esaustivi), tipicamente presenti nei libri. Ne troverai uno alle pagine 142-143 di (4), per esempio.

Si noti che tutti i metodi discussi qui hanno un'implementazione R open source, principalmente attraverso il pacchetto rrcov .

  • (1) P. Rousseeuw e M. Hubert (2013) Stimatori ad alto rischio di localizzazione e dispersione multivariata.
  • (2) M. Hubert, P. Rousseeuw, K. Vakili (2013). Orientamento alla forma di robusti stimatori di covarianza: uno studio empirico. Documenti statistici.
  • (3) K. Vakili ed E. Schmitt (2014). Trovare valori anomali multivariati con FastPCS. Statistiche computazionali e analisi dei dati.
  • (4) Maronna RA, Martin RD e Yohai VJ (2006). Statistica solida: teoria e metodi. Wiley, New York.

Non consiglierei documenti basati su dati simulati, credo che i primi due documenti siano basati su dati simulati. Sto lavorando su dati reali e RARAMENTE I quei valori anomali simulati possono essere trovati in un dato. Personalmente non ho mai trovato un set di dati con valori anomali molto forti. Se conosci dati reali, non esitare a condividere
Studente

Ciao Nemo: grazie per il tuo commento. In realtà, si scopre che per molti (purtroppo non tutti) di quei modelli sono effettivamente conosciute le peggiori configurazioni possibili di valori anomali e queste sono le configurazioni in cui si simulerebbero e valuterebbero quei modelli. Forse puoi formularlo come una domanda? Sarei più che felice di indicare alcuni riferimenti!
user603

1
Ho già fatto una domanda generale. Puoi trovare il mio post qui stats.stackexchange.com/questions/139645/…
Studente

13

Vorrei fare una sorta di "tralasciare un algoritmo di test" (n è il numero di dati):

per i = 1 a n

  1. Xio
  2. XioLio

fine per

Lio

Funzionerà se n è sufficientemente grande ... puoi anche usare "lascia la strategia di K Out" che può essere più rilevante quando hai "gruppi" di valori anomali ...


In che modo questo affronterebbe i casi in cui non sai quanti valori anomali hai, ovvero quando i punti N-1 hanno ancora una propensione poiché includono valori anomali?
Benjamin Bannier,

1
se n è sufficientemente grande e il numero di valori anomali è piccolo, questo pregiudizio è trascurabile. Se ci sono un gran numero di valori anomali allora, maibe non sono valori anomali e comunque, come ho già detto, puoi usare la strategia di lasciare k out ... (in questo caso, devi trovare una strategia per evitare il monitoraggio di tutte le configurazioni che potrebbero sii NP difficile ...) e se non conosci k, puoi provare molti valori per k e mantenerne il più pertinente.
Robin Girard,

1
Questa è una buona idea, ma se l'ho capita correttamente, sembra allargare l'idea di "outlier" per includere qualsiasi valore in un set di dati che è distante dagli altri. Ad esempio, nel batch {-110 [1] -90, 0, 90 [1] 110} di 43 numeri interi, la procedura non identificherebbe lo 0 (che è la mediana di questi numeri!) Come unico "outlier" "?
whuber

@whuber bella domanda! senza presupposto strutturale lo zero potrebbe essere rimosso. Tuttavia, puoi presumere che la distribuzione sia unimodale e calcolare la densità di conseguenza. In questo caso l'assunto strutturale (unimodalità) aiuterà la procedura a vedere lo zero come un valore "normale". Alla fine pensi che sia normale perché hai quel tipo di "presupposto strutturale" nella tua testa :)?
Robin Girard,

3
LioLio

12

È possibile trovare candidati per "valori anomali" tra i punti di supporto dell'ellissoide di delimitazione del volume minimo. ( Algoritmi efficienti per trovare questi punti in dimensioni abbastanza elevate, sia esattamente che approssimativamente, sono stati inventati in una serie di documenti negli anni '70 perché questo problema è intimamente connesso con una domanda nel design sperimentale.)


12

Il nuovo approccio che ho visto è stato dell'IT Jolliffe Principal Components Analysis . Esegui un PCA sui tuoi dati (Nota: il PCA può essere uno strumento di esplorazione dei dati abbastanza utile a sé stante), ma invece di guardare i primi componenti principali (PC), traccia gli ultimi PC. Questi PC sono le relazioni lineari tra le variabili con la minima varianza possibile. In questo modo rilevano relazioni "esatte" o quasi esatte nei dati multivariati.

Un grafico dei punteggi del PC per l'ultimo PC mostrerà valori anomali non facilmente rilevabili osservando individualmente ogni variabile. Un esempio è per altezza e peso - alcuni che hanno un'altezza "sopra la media" e un peso "sotto la media" verrebbero rilevati dall'ultimo PC di altezza e peso (supponendo che siano positivamente correlati), anche se la loro altezza e peso non lo fossero " estremo "individualmente (ad esempio qualcuno che era 180 cm e 60 kg).


11

Non ho visto nessuno menzionare le funzioni di influenza . Ho visto questa idea per la prima volta nel libro multivariato di Gnanadesikan .

In una dimensione un valore anomalo è un valore estremamente grande o estremamente piccolo. Nell'analisi multivariata è un'osservazione rimossa dalla maggior parte dei dati. Ma quale metrica dovremmo usare per definire l'estremo per il valore anomalo? Ci sono molte scelte La distanza di Mahalanobis è solo una. Penso che cercare ogni tipo di valore anomalo sia inutile e controproducente. Vorrei chiedere perché ti importa del valore anomalo? Nella stima di una media possono avere una grande influenza su tale stima. Stimatori robusti sottopeso e adattano i valori anomali, ma non li testano formalmente. Ora in regressione, i valori anomali - come i punti di leva - potrebbero avere grandi effetti sui parametri di pendenza nel modello. Con i dati bivariati possono influenzare indebitamente il coefficiente di correlazione stimato e in tre o più dimensioni il coefficiente di correlazione multipla.

Le funzioni di influenza sono state introdotte da Hampel come uno strumento di stima attendibile e Mallows ha scritto un bel documento inedito a sostegno del loro uso. La funzione influenza è una funzione del punto in cui ci si trova nello spazio n-dimensionale e del parametro. Misura essenzialmente la differenza tra la stima dei parametri con il punto nel calcolo e con il punto lasciato fuori. Invece di preoccuparti di fare il calcolo delle due stime e prendere la differenza, spesso puoi ricavarne una formula. Quindi i contorni di influenza costante ti dicono la direzione che è estrema rispetto alla stima di questo parametro e quindi ti dicono dove nello spazio n-dimensionale cercare il valore anomalo.

Per di più puoi guardare il mio articolo del 1983 sull'American Journal of Mathematical and Management Sciences intitolato "La funzione di influenza e la sua applicazione alla validazione dei dati". Nella convalida dei dati volevamo cercare valori anomali che incidessero sull'uso previsto dei dati. La mia sensazione è che dovresti indirizzare la tua attenzione su valori anomali che influenzano notevolmente i parametri che ti interessano stimare e che non ti interessano così tanto degli altri che non ti interessano.


1
+1 Ottima idea, soprattutto per la costante attenzione allo scopo dell'analisi.
whuber

Un'idea simile è il Random Sample Consensus ( RANSAC ).
GeoMatt22,


7

Per dimensioni moderate, come 3, una sorta di tecnica di convalida incrociata del kernel, come suggerito altrove, sembra ragionevole ed è la migliore che posso trovare.

Per dimensioni superiori, non sono sicuro che il problema sia risolvibile; atterra abbastanza esattamente nel territorio della "maledizione della dimensionalità". Il problema è che le funzioni di distanza tendono a convergere a valori molto grandi molto rapidamente quando si aumenta la dimensionalità, comprese le distanze derivate dalle distribuzioni. Se stai definendo un valore anomalo come "un punto con una funzione di distanza relativamente grande rispetto agli altri", e tutte le tue funzioni di distanza stanno iniziando a convergere perché sei in uno spazio ad alta dimensione, beh, sei nei guai .

Senza una sorta di assunzione distributiva che ti permetterà di trasformarlo in un problema di classificazione probabilistica, o almeno una rotazione che ti permetta di separare il tuo spazio in "dimensioni del rumore" e "dimensioni informative", penso che la geometria degli spazi ad alta dimensione vieterà qualsiasi identificazione facile o quantomeno robusta di valori anomali.


La procedura che ho già dato può essere applicata in grande dimensione, come ho detto, usando un presupposto gaussiano. Se la dimensione è davvero grande rispetto alla dimensione del campione (ad es. P >> n), è possibile ipotizzare una spartità (supporre che i parametri della distribuzione gaussiana si trovino in uno spazio dimensionale basso, ad esempio) e utilizzare una procedura di stima della soglia per la stima dei parametri ...
robin girard

1
Molto perspicace che la maledizione della dimensionalità precluda una soluzione senza ipotesi di distribuzione (a meno che non si disponga semplicemente di quantità folli di dati o la dimensione sia piccola)
John Robertson,

6

Non sono sicuro di cosa intendi quando dici che non stai pensando a un problema di regressione ma a "dati multivariati veri". La mia risposta iniziale sarebbe quella di calcolare la distanza di Mahalanobis poiché non richiede di specificare un particolare IV o DV, ma al suo centro (per quanto io capisco) è correlato a una statistica di leva.


Sì, potrei calcolare la distanza di Mahalanobis di ogni osservazione dalla media dei dati. Ma le osservazioni con la massima distanza dalla media non sono necessariamente valori anomali multivariati. Pensa a un grafico a dispersione bivariato con correlazione elevata. Un outlier può trovarsi al di fuori della nuvola di punti principale ma non così lontano dalla media.
Rob Hyndman,


4

La mia prima risposta sarebbe che se si può fare una regressione multivariata sui dati, quindi utilizzare i residui di quella regressione per individuare i valori anomali. (So ​​che hai detto che non è un problema di regressione, quindi questo potrebbe non aiutarti, scusa!)

Sto copiando parte di questo da una domanda StackOverflow a cui ho precedentemente risposto che ha qualche codice R di esempio

Innanzitutto, creeremo alcuni dati, quindi li contamineremo con un valore anomalo;

> testout<-data.frame(X1=rnorm(50,mean=50,sd=10),X2=rnorm(50,mean=5,sd=1.5),Y=rnorm(50,mean=200,sd=25)) 
> #Taint the Data 
> testout$X1[10]<-5 
> testout$X2[10]<-5 
> testout$Y[10]<-530 

> testout 
         X1         X2        Y 
1  44.20043  1.5259458 169.3296 
2  40.46721  5.8437076 200.9038 
3  48.20571  3.8243373 189.4652 
4  60.09808  4.6609190 177.5159 
5  50.23627  2.6193455 210.4360 
6  43.50972  5.8212863 203.8361 
7  44.95626  7.8368405 236.5821 
8  66.14391  3.6828843 171.9624 
9  45.53040  4.8311616 187.0553 
10  5.00000  5.0000000 530.0000 
11 64.71719  6.4007245 164.8052 
12 54.43665  7.8695891 192.8824 
13 45.78278  4.9921489 182.2957 
14 49.59998  4.7716099 146.3090 
<snip> 
48 26.55487  5.8082497 189.7901 
49 45.28317  5.0219647 208.1318 
50 44.84145  3.6252663 251.5620 

Spesso è molto utile esaminare graficamente i dati (il tuo cervello è molto più bravo a individuare valori anomali che in matematica)

> #Use Boxplot to Review the Data 
> boxplot(testout$X1, ylab="X1") 
> boxplot(testout$X2, ylab="X2") 
> boxplot(testout$Y, ylab="Y") 

È quindi possibile utilizzare le statistiche per calcolare i valori di cut off critici, qui utilizzando il test di Lund (Vedi Lund, RE 1975, "Tabelle per un test approssimativo per valori anomali nei modelli lineari", Technometrics, vol. 17, n. 4, pagg. 473 -476. E Prescott, P. 1975, "Un test approssimativo per i valori anomali nei modelli lineari", Technometrics, vol. 17, n. 1, pagg. 129-132.)

> #Alternative approach using Lund Test 
> lundcrit<-function(a, n, q) { 
+ # Calculates a Critical value for Outlier Test according to Lund 
+ # See Lund, R. E. 1975, "Tables for An Approximate Test for Outliers in Linear Models", Technometrics, vol. 17, no. 4, pp. 473-476. 
+ # and Prescott, P. 1975, "An Approximate Test for Outliers in Linear Models", Technometrics, vol. 17, no. 1, pp. 129-132. 
+ # a = alpha 
+ # n = Number of data elements 
+ # q = Number of independent Variables (including intercept) 
+ F<-qf(c(1-(a/n)),df1=1,df2=n-q-1,lower.tail=TRUE) 
+ crit<-((n-q)*F/(n-q-1+F))^0.5 
+ crit 
+ } 

> testoutlm<-lm(Y~X1+X2,data=testout) 

> testout$fitted<-fitted(testoutlm) 

> testout$residual<-residuals(testoutlm) 

> testout$standardresid<-rstandard(testoutlm) 

> n<-nrow(testout) 

> q<-length(testoutlm$coefficients) 

> crit<-lundcrit(0.1,n,q) 

> testout$Ynew<-ifelse(testout$standardresid>crit,NA,testout$Y) 

> testout 
         X1         X2        Y    newX1   fitted    residual standardresid 
1  44.20043  1.5259458 169.3296 44.20043 209.8467 -40.5171222  -1.009507695 
2  40.46721  5.8437076 200.9038 40.46721 231.9221 -31.0183107  -0.747624895 
3  48.20571  3.8243373 189.4652 48.20571 203.4786 -14.0134646  -0.335955648 
4  60.09808  4.6609190 177.5159 60.09808 169.6108   7.9050960   0.190908291 
5  50.23627  2.6193455 210.4360 50.23627 194.3285  16.1075799   0.391537883 
6  43.50972  5.8212863 203.8361 43.50972 222.6667 -18.8306252  -0.452070155 
7  44.95626  7.8368405 236.5821 44.95626 223.3287  13.2534226   0.326339981 
8  66.14391  3.6828843 171.9624 66.14391 148.8870  23.0754677   0.568829360 
9  45.53040  4.8311616 187.0553 45.53040 214.0832 -27.0279262  -0.646090667 
10  5.00000  5.0000000 530.0000       NA 337.0535 192.9465135   5.714275585 
11 64.71719  6.4007245 164.8052 64.71719 159.9911   4.8141018   0.118618011 
12 54.43665  7.8695891 192.8824 54.43665 194.7454  -1.8630426  -0.046004311 
13 45.78278  4.9921489 182.2957 45.78278 213.7223 -31.4266180  -0.751115595 
14 49.59998  4.7716099 146.3090 49.59998 201.6296 -55.3205552  -1.321042392 
15 45.07720  4.2355525 192.9041 45.07720 213.9655 -21.0613819  -0.504406009 
16 62.27717  7.1518606 186.6482 62.27717 169.2455  17.4027250   0.430262983 
17 48.50446  3.0712422 228.3253 48.50446 200.6938  27.6314695   0.667366651 
18 65.49983  5.4609713 184.8983 65.49983 155.2768  29.6214506   0.726319931 
19 44.38387  4.9305222 213.9378 44.38387 217.7981  -3.8603382  -0.092354925 
20 43.52883  8.3777627 203.5657 43.52883 228.9961 -25.4303732  -0.634725264 
<snip> 
49 45.28317  5.0219647 208.1318 45.28317 215.3075  -7.1756966  -0.171560291 
50 44.84145  3.6252663 251.5620 44.84145 213.1535  38.4084869   0.923804784 
       Ynew 
1  169.3296 
2  200.9038 
3  189.4652 
4  177.5159 
5  210.4360 
6  203.8361 
7  236.5821 
8  171.9624 
9  187.0553 
10       NA 
11 164.8052 
12 192.8824 
13 182.2957 
14 146.3090 
15 192.9041 
16 186.6482 
17 228.3253 
18 184.8983 
19 213.9378 
20 203.5657 
<snip> 
49 208.1318 
50 251.5620 

Ovviamente ci sono altri test anomali oltre al test di Lund (mi viene in mente Grubbs), ma non sono sicuro che siano più adatti ai dati multivariati.


1
I grafici a scatole univariati sono utili per individuare valori anomali univariati. Ma possono perdere completamente i valori anomali multivariati. L'idea di regressione è ok se avessi una Y e un gruppo di variabili X. Ma come ho detto nella domanda, non c'è Y, quindi la regressione è inappropriata.
Rob Hyndman,

@RobHyndman - si può correggere Y (renderlo una costante) e provare a modellare una regressione multipla senza intercettazione . Funziona magnificamente in pratica. In sostanza, questo trasforma un problema fondamentalmente senza supervisione, che è un tipico rilevamento di anomalie, in un problema supervisionato.
arielf

@arielf Interessante. Hai un riferimento per questo?
Rob Hyndman,

@RobHyndman non è un documento accademico, ma forse meglio, puoi provarlo tu stesso. Vedere la mia pagina GitHub su vw-top-errors@ goo.gl/l7SLlB (si noti che gli esempi ci capita di avere una Y, ma ho usato la stessa tecnica, con grande successo sui problemi non presidiati anche mediante la fissazione di Y.)
arielf

1

Una delle risposte di cui sopra è toccata a distanze mahalanobis .... forse un ulteriore passo avanti e il calcolo di intervalli di confidenza simultanei aiuterebbe a rilevare valori anomali!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.