Jaki jest najlepszy sposób identyfikowania wartości odstających w danych wielowymiarowych?


94

Załóżmy, że mam duży zestaw danych wielowymiarowych z co najmniej trzema zmiennymi. Jak znaleźć wartości odstające? Pary rozproszone wykresy nie będą działać, ponieważ możliwe jest istnienie wartości odstającej w 3 wymiarach, która nie jest wartością odstającą w żadnej z dwuwymiarowych podprzestrzeni.

Nie myślę o problemie z regresją, ale o prawdziwych danych wielowymiarowych. Zatem odpowiedzi dotyczące silnej regresji lub dźwigni obliczeniowej nie są pomocne.

Jedną z możliwości byłoby obliczenie głównych wyników składowych i poszukiwanie wartości odstających w dwuwymiarowym wykresie rozrzutu pierwszych dwóch wyników. Czy to by zadziałało? Czy są lepsze podejścia?


3
Jeśli matryca rozrzutu nie złapie jej, możesz wypróbować trójwymiarowy wykres rozrzutu. To oczywiście nie zadziała w 4D, ale wtedy możesz stworzyć czwarty wymiar jako czas i nakręcić film. :)
Shane

Co z (hierarchiczną) analizą skupień?
Andrej

11
5 D w odcieniu koloru, 6 D w intensywności koloru, 7 D w rozmiarze punktowym i możemy iść ;-)

Odpowiedzi:


26

Rzuć okiem na pakiet mvoutlier , który opiera się na zamówionych mocnych odległościach mahalanobis, jak sugeruje @drknexus.


4
Ja osobiście nie wierzę w ten pakiet! Myślę, że to tylko szum nauki. Te typy teorii są bardzo dobre dla danych symulowanych, a po prostu pffff dla danych rzeczywistych. Użyłem tego pakietu, aby na przykład wykryć wartości odstające :-) niestety połowa moich danych została wykryta jako wartości odstające :-D to zabawne, że ludzie po prostu publikują niektóre (nie wiem, jak to nazwać). jeśli masz jakiś komentarz, chętnie go zobaczę. Mamy wiele typów wartości odstających, ale czy powinniśmy po prostu usunąć je z naszych danych? Nie wierzę.
Uczeń

1
Czy możesz wyjaśnić, kiedy i dlaczego to działa?
eric_kernfeld

19

Myślę, że odpowiedź Robina Girarda działałaby całkiem nieźle dla 3 i być może 4 wymiarów, ale przekleństwo wymiarowości uniemożliwiłoby jej działanie. Jednak jego sugestia doprowadziła mnie do pokrewnego podejścia, które polega na zastosowaniu szacunkowej oceny gęstości jądra do pierwszych trzech głównych ocen składowych. W takim przypadku bardzo wysoki zestaw danych może być nadal obsługiwany.

Podsumowując, dla i = 1 do n

  1. Oblicz szacunkową gęstość pierwszych trzech głównych ocen składowych uzyskanych ze zbioru danych bez Xi.
  2. Oblicz prawdopodobieństwo Xi dla gęstości oszacowanej w kroku 1. nazwij to Li.

koniec dla

Posortuj Li (dla i = 1, .., n), a wartości odstające to te, których prawdopodobieństwo jest poniżej pewnego progu. Nie jestem pewien, jaki byłby dobry próg - zostawię to każdemu, kto napisze o tym artykuł! Jedną z możliwości jest wykonanie wykresu wartości log (Li) i sprawdzenie, jakie wartości odstające są wykrywane na końcu ujemnym.


Dzięki za tę odpowiedź (powinien to być komentarz?) Jak już wspomniałem, jako komentarz do Wysokiego wymiaru odpowiedzi Rich nie stanowią problemu (nawet 1000 może działać), jeśli przyjmiesz parametryczne założenie strukturalne.
robin girard

@rob „Nie jestem pewien, jaki byłby dobry próg”, taki byłby cel procedury wielokrotnego testowania, o której wspomniałem… ale w pełni zgadzam się, że trzeba wypełnić i naprawdę podoba mi się wykrywanie wartości odstających w wykrywanie wartości odstających! kto chce napisać artykuł :)?
robin girard

4
(-1) Trochę denerwujące jest to, że zaakceptowana odpowiedź na to pytanie nie jest ani użyteczna (np. Zbyt niejasna i niewdrożona), ani naukowo poprawna (ponieważ nie jest nawet błędna: o ile wiem, nie jest nawet wspomniana w Odpowiednią literaturę).
user603

6
(-1) wydaje się to błędną odpowiedzią - ta metoda nie wykryje wartości odstających! łatwo wyobrazić sobie trójwymiarową chmurę punktów przypominającą naleśniki rzutowane przez PCA na płaszczyznę 2D i 1 punkt odstający, który jest daleko od płaszczyzny, ale jego rzut jest dokładnie w środku rzutowanej chmury, więc „gęstość jądra” punkt na płaszczyźnie 2D będzie wysoki, chociaż jest wartością odstającą.
Kochede

1
Sądzę, że PCA będzie tutaj problematyczne. PCA jest przybliżeniem uwzględniającym główny wkład w wariancję. Ale tutaj właśnie celem jest znalezienie wartości odstających - czy nie „wpadną między pęknięcia”?
Omry Atia

18

Pedagogiczne streszczenie różnych metod dostępnych w (1)

W celu uzyskania --recent - numerycznych porównań różnych metod tam wymienionych, możesz sprawdzić (2) i (3) .

istnieje wiele starszych (i mniej wyczerpujących) porównań numerycznych, zwykle spotykanych w książkach. Znajdziesz go na przykład na stronach 142–143 w (4).

Zauważ, że wszystkie omówione tutaj metody mają implementację R typu open source, głównie poprzez pakiet rrcov .

  • (1) P. Rousseeuw i M. Hubert (2013) Wysokowydajne estymatory wielowymiarowej lokalizacji i rozproszenia.
  • (2) M. Hubert, P. Rousseeuw, K. Vakili (2013). Kształtowanie stronniczości solidnych estymatorów kowariancji: badanie empiryczne. Dokumenty statystyczne.
  • (3) K. Vakili i E. Schmitt (2014). Znajdowanie wielowymiarowych wartości odstających w FastPCS. Statystyka obliczeniowa i analiza danych.
  • (4) Maronna RA, Martin RD i Yohai VJ (2006). Solidne statystyki: teoria i metody. Wiley, Nowy Jork.

Nie polecałbym artykułów opartych na danych symulowanych, uważam, że pierwsze dwa artykuły oparte są na danych symulowanych. Pracuję na prawdziwych danych i OCZYWIŚCIE, że te symulowane silne wartości odstające można znaleźć w danych. Osobiście nigdy nie znalazłem zestawu danych z bardzo silnymi wartościami odstającymi. Jeśli znasz jakieś prawdziwe dane, nie wahaj się podzielić
Uczeń

Cześć Nemo: dziękuję za komentarz. W rzeczywistości okazuje się, że dla wielu (niestety nie wszystkich) tych modeli najgorsza możliwa konfiguracja wartości odstających jest faktycznie znana i są to konfiguracje, z których zwykle można by symulować i oceniać te modele. Być może możesz sformułować to jako pytanie? Z przyjemnością wskazałbym na kilka referencji!
user603

1
Zadałem już ogólne pytanie. Mój post można znaleźć tutaj stats.stackexchange.com/questions/139645/…
Uczeń

13

Zrobiłbym coś w rodzaju „pomiń jeden algorytm testujący” (n to liczba danych):

dla i = 1 do n

  1. Xi
  2. XiLi

koniec dla

Li (dla i = 1, .., n) i użyj procedury testowania wielu hipotez, aby powiedzieć, które nie są dobre ...

Działa to, jeśli n jest wystarczająco duże ... możesz również użyć „strategii k out”, która może być bardziej odpowiednia, gdy masz „grupy” wartości odstających…


W jaki sposób poradziłoby to sobie z przypadkami, w których nie wiesz, ile masz wartości odstających, tj. Kiedy punkty N-1 nadal mają błąd, ponieważ obejmują wartości odstające?
Benjamin Bannier

1
jeśli n jest wystarczająco duże, a liczba wartości odstających jest niewielka, to odchylenie jest znikome. Jeśli istnieje duża liczba wartości odstających, to i tak nie są to wartości odstające, a zresztą, jak już wspomniałem, możesz użyć strategii „k k out” ... (w tym przypadku musisz znaleźć strategię pozwalającą uniknąć śledzenia wszystkich konfiguracji, które mogą bądź NP trudny ...), a jeśli nie znasz k, możesz wypróbować wiele wartości dla k i zachować najbardziej odpowiedni.
robin girard

1
To fajny pomysł, ale jeśli dobrze to zrozumiałem, wydaje się, że pomysł „odstające” rozszerza się, aby uwzględnić dowolną wartość w zbiorze danych odległym od innych. Na przykład, w partii {-110 [1] -90, 0, 90 [1] 110} z 43 liczb całkowitych, twoja procedura nie zidentyfikowałaby 0 (która jest medianą tych liczb!) Jako unikatowej „wartości odstającej” „?
whuber

@ Whuber dobre pytanie! bez założenia strukturalnego zero może zostać usunięte. Można jednak założyć, że rozkład jest jednomodalny i odpowiednio obliczyć gęstość. W takim przypadku założenie strukturalne (jednomodalność) pomoże procedurze postrzegać zero jako „normalną” wartość. Na koniec uważasz, że to normalne, ponieważ masz w głowie tego rodzaju „założenie strukturalne” :)?
robin girard

3
LiLi

12

Kandydatów na „wartości odstające” można znaleźć wśród punktów wsparcia elipsoidy ograniczającej minimalną objętość. ( Wydajne algorytmy do znajdowania tych punktów w dość wysokich wymiarach, zarówno dokładnie, jak i w przybliżeniu, zostały wynalezione w wielu artykułach w latach 70., ponieważ problem ten jest ściśle związany z pytaniem w projekcie eksperymentalnym.)


12

Moje nowatorskie podejście, które zobaczyłem, to analiza IT Jolliffe Principal Components . Uruchamiasz PCA na swoich danych (uwaga: PCA może być całkiem przydatnym narzędziem do eksploracji danych), ale zamiast patrzeć na kilka pierwszych głównych składników (PC), wykreślasz kilka ostatnich komputerów. Te komputery są liniowymi zależnościami między zmiennymi z najmniejszą możliwą wariancją. W ten sposób wykrywają „dokładne” lub bliskie dokładnych relacji wielowymiarowych w twoich danych.

Wykres wyników komputerowych dla ostatniego komputera pokaże wartości odstające, których nie można łatwo wykryć, patrząc indywidualnie na każdą zmienną. Jednym z przykładów jest wzrost i waga - niektórzy, którzy mają „powyżej średniej” wzrostu i „poniżej średniej” wagi, byliby wykrywani przez ostatni komputer wzrostu i masy ciała (zakładając, że są dodatnio skorelowane), nawet gdyby ich wzrost i waga nie były „ ekstremalne ”indywidualnie (np. ktoś, kto miał 180 cm i 60 kg).


11

Nie widziałem, żeby ktokolwiek wspominał o funkcjach wpływu . Pierwszy raz zobaczyłem ten pomysł w wielowymiarowej książce Gnanadesikana .

W jednym wymiarze wartość odstająca ma albo wyjątkowo dużą, albo bardzo małą wartość. W analizie wielowymiarowej jest to obserwacja usunięta z większości danych. Ale jakich danych powinniśmy użyć, aby zdefiniować skrajność dla wartości odstającej? Istnieje wiele możliwości wyboru. Odległość Mahalanobisa jest tylko jedna. Myślę, że szukanie każdego rodzaju wartości odstających jest daremne i przynosi efekt przeciwny do zamierzonego. chciałbym zapytać dlaczego zależy ci na wartości odstającej? Przy szacowaniu średniej mogą mieć duży wpływ na tę ocenę. Solidne estymatory mają niską wagę i uwzględniają wartości odstające, ale nie formalnie je testują. W regresji wartości odstające - podobnie jak punkty dźwigni - mogą mieć duży wpływ na parametry nachylenia w modelu. W przypadku danych dwuwymiarowych mogą one nadmiernie wpływać na szacowany współczynnik korelacji, aw co najmniej trzech wymiarach na wielokrotny współczynnik korelacji.

Funkcje wpływu zostały wprowadzone przez Hampela jako narzędzie w solidnych szacunkach, a Mallows napisał fajny niepublikowany artykuł zalecający ich użycie. Funkcja wpływu jest funkcją punktu, w którym się znajdujesz w przestrzeni n-wymiarowej i parametru. Zasadniczo mierzy różnicę między oszacowaniem parametru z punktem w obliczeniu i z pominiętym punktem. Zamiast zajmować się obliczaniem dwóch oszacowań i przyjmowaniem różnicy, często można wyprowadzić wzór na to. Następnie kontury stałego wpływu podają kierunek, który jest ekstremalny w stosunku do oszacowania tego parametru, a tym samym podpowiadają, gdzie w przestrzeni n-wymiarowej szukać wartości odstającej.

Więcej informacji można znaleźć w moim artykule z 1983 r. W American Journal of Mathematical and Management Sciences zatytułowanym „Funkcja wpływu i jej zastosowanie do sprawdzania poprawności danych”. Podczas sprawdzania poprawności danych chcieliśmy poszukać wartości odstających, które wpłynęłyby na zamierzone wykorzystanie danych. Mam wrażenie, że powinieneś zwrócić uwagę na wartości odstające, które mają duży wpływ na parametry, które chcesz oszacować, i nie przejmować się tak bardzo innymi, które tego nie robią.


1
+1 Bardzo fajny pomysł, szczególnie dla konsekwentnego skupienia się na celu analizy.
whuber

Podobnym pomysłem jest Random Sample Consensus ( RANSAC ).
GeoMatt22,


7

W przypadku umiarkowanych wymiarów, takich jak 3, to jakaś technika weryfikacji krzyżowej jądra, jak sugerowano gdzie indziej, wydaje się rozsądna i jest najlepsza, jaką mogę wymyślić.

W przypadku większych wymiarów nie jestem pewien, czy problem można rozwiązać; ląduje całkiem prosto w terytorium „klątwy wymiarowej”. Problem polega na tym, że funkcje odległości bardzo szybko zbliżają się do bardzo dużych wartości wraz ze wzrostem wymiarów, w tym odległości uzyskanych z rozkładów. Jeśli definiujesz wartość odstającą jako „punkt o stosunkowo dużej funkcji odległości w stosunku do innych”, a wszystkie funkcje odległości zaczynają się zbiegać, ponieważ jesteś w przestrzeni o dużych wymiarach, cóż, masz kłopoty .

Bez jakiegoś rodzaju założenia dystrybucyjnego, które pozwoli ci przekształcić go w probabilistyczny problem klasyfikacji, lub przynajmniej pewien obrót, który pozwoli ci podzielić twoją przestrzeń na „wymiary hałasu” i „wymiary informacyjne”, myślę, że geometria przestrzeni wielowymiarowych zabroni łatwej - a przynajmniej solidnej - identyfikacji wartości odstających.


Procedurę, którą już podałem, można zastosować w dużym wymiarze, jak powiedziałem, stosując założenie gaussowskie. Jeśli wymiar jest naprawdę duży w stosunku do wielkości próbki (tj. P >> n), możesz przyjąć pewne założenie rzadkości (zakładając, że parametry rozkładu gaussowskiego leżą na przykład w przestrzeni niskiego wymiaru) i zastosować procedurę estymacji progowej do oszacowania parametrów ...
robin girard

1
Bardzo wnikliwe, że klątwa wymiarowości wyklucza rozwiązanie bez założeń dotyczących dystrybucji (chyba że masz po prostu szalone ilości danych lub rozmiar jest niewielki)
John Robertson,

6

Nie jestem pewien, co masz na myśli, mówiąc, że nie myślisz o problemie z regresją, ale o „prawdziwych danych wielowymiarowych”. Moja początkowa odpowiedź polegałaby na obliczeniu odległości Mahalanobisa, ponieważ nie wymaga ona podania konkretnej wartości IV lub DV, ale jej rdzeń (o ile ją rozumiem) jest związany ze statystyką dźwigni.


Tak, mógłbym obliczyć odległość Mahalanobisa każdej obserwacji na podstawie średniej danych. Jednak obserwacje o największej odległości od średniej niekoniecznie są wartościami wielowymiarowymi. Pomyśl o dwuwymiarowym wykresie rozrzutu o wysokiej korelacji. Wartość odstająca może znajdować się poza główną chmurą punktów, ale nie tak daleko od średniej.
Rob Hyndman,


4

Moją pierwszą odpowiedzią byłoby to, że jeśli możesz przeprowadzić regresję wielowymiarową na danych, to użyj reszt z tej regresji do wykrycia wartości odstających. (Wiem, że powiedziałeś, że to nie jest problem regresji, więc to może ci nie pomóc, przepraszam!)

Kopiuję część tego z pytania Stackoverflow, na które wcześniej odpowiedziałem, które zawiera przykładowy kod R.

Najpierw stworzymy pewne dane, a następnie skażymy je wartością odstającą;

> 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 

Często najbardziej przydatne jest graficzne analizowanie danych (twój mózg jest znacznie lepszy w wykrywaniu wartości odstających niż matematyka)

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

Następnie można użyć statystyk do obliczenia krytycznych wartości odcięcia, używając testu Lunda (patrz Lund, RE 1975, „Tabele przybliżonego testu dla wartości odstających w modelach liniowych”, Technometrics, vol. 17, nr 4, str. 473 -476. I Prescott, P. 1975, „Anroximate Test for Outliers in Models Linear”, Technometrics, tom 17, nr 1, str. 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 

Oczywiście istnieją inne testy odstające od testu Lunda (przypomina to Grubbsa), ale nie jestem pewien, które lepiej pasują do danych wielowymiarowych.


1
Wykresy jednoznaczne są przydatne do wykrywania wartości odstających jednoznacznych. Ale mogą całkowicie ominąć wielowymiarowe wartości odstające. Pomysł regresji jest w porządku, gdybym miał Y i kilka zmiennych X. Ale jak powiedziałem w pytaniu, nie ma Y, więc regresja jest niewłaściwa.
Rob Hyndman,

@RobHyndman - można naprawić Y (uczynić go stałym) i spróbować modelować regresję wielokrotną bez przechwytywania . Działa pięknie w praktyce. Zasadniczo przekształca to problem zasadniczo nie nadzorowany, którym jest typowe wykrywanie anomalii, w problem nadzorowany.
arielf

@arielf Ciekawe. Czy masz na to referencje?
Rob Hyndman

@RobHyndman nie jest pracą naukową, ale być może lepiej, możesz spróbować sam. Zobacz moją stronę github na vw-top-errors@ goo.gl/l7SLlB (zauważ, że w przykładach występuje Y, ale użyłem tej samej techniki, bardzo skutecznie również w przypadku problemów bez nadzoru, ustalając Y.)
arielf

1

Jedna z powyższych odpowiedzi dotyczyła dystansu mahalanobisa ... być może jeszcze jeden krok dalej i obliczanie równoczesnych przedziałów ufności pomogłoby wykryć wartości odstające!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.