Каков наилучший способ выявления выбросов в многомерных данных?


94

Предположим, у меня есть большой набор многомерных данных, по крайней мере, с тремя переменными. Как я могу найти выбросы? Парные диаграммы рассеяния не будут работать, поскольку выброс может существовать в трех измерениях, который не является выбросом ни в одном из двухмерных подпространств.

Я имею в виду не проблему регрессии, а истинные многомерные данные. Таким образом, ответы, включающие надежную регрессию или вычислительные рычаги, не помогают.

Одной из возможностей будет вычисление оценок главных компонентов и поиск отклонения в двумерной диаграмме рассеяния первых двух оценок. Будет ли это гарантированно работать? Есть ли лучшие подходы?


3
Если матрица диаграммы рассеяния не уловит ее, вы можете попробовать трехмерную диаграмму рассеяния. Конечно, это не сработает с 4D, но тогда вы можете создать 4-е измерение как время и сделать фильм. :)
Шейн

Как насчет (иерархического) кластерного анализа?
Андрей

11
5-й D в цветном оттенке, 6-й D в интенсивности цвета, 7-й D в размере точки, и мы можем идти ;-)

Ответы:


26

Посмотрите на пакет mvoutlier , который опирается на упорядоченные надежные расстояния махаланобисов, как предлагает @drknexus.


4
Я лично не верю в этот пакет! Я думаю, что это просто шум науки. Эти типы теорий очень хороши для смоделированных данных, в то время как просто для реальных данных. Я использовал этот пакет, например, для обнаружения выбросов :-) к сожалению, половина моих данных была обнаружена как выбросы: - это забавно, как люди просто публикуют некоторые (я не знаю, как это назвать). если у вас есть какие-либо комментарии, я буду рад видеть. У нас есть много типов выбросов, но мы должны просто удалить их из наших данных? Я верю, что нет.
Ученик

1
Не могли бы вы объяснить, когда и почему это работает?
eric_kernfeld

19

Я думаю, что ответ Робина Джирарда будет хорошо работать для 3 и, возможно, 4 измерений, но проклятие размерности помешает ему работать за пределами этого. Однако его предложение привело меня к связанному подходу, который заключается в применении перекрестной проверки оценки плотности ядра к первым трем основным оценкам компонентов. Тогда очень большой размерный набор данных все еще может быть обработан хорошо.

В итоге для i = 1 до n

  1. Вычислите оценку плотности первых трех оценок основных компонентов, полученных из набора данных без Xi.
  2. Рассчитайте вероятность Xi для плотности, оцененной на шаге 1. Назовите ее Li.

конец для

Сортировать Li (для i = 1, .., n) и выбросы те, которые с вероятностью ниже некоторого порога. Я не уверен, что было бы хорошим порогом - я оставлю это для того, кто пишет статью об этом! Одна возможность состоит в том, чтобы сделать коробочную диаграмму значений log (Li) и посмотреть, какие выбросы обнаружены на отрицательном конце.


Спасибо за этот ответ (должен быть комментарий?) Как я уже упоминал, в качестве комментария к Большому измерению ответа не проблема (даже 1000 может работать), если вы сделаете параметрическое структурное предположение.
Робин Жирар

@rob «Я не уверен, что было бы хорошим порогом», это было бы целью процедуры множественного тестирования, о которой я упоминал… но я полностью согласен, что все должно быть заполнено, и мне действительно нравится обнаружение выбросов в обнаружение выброса! кто хочет написать статью :)?
Робин Жирар

4
(-1) Немного огорчает то, что принятый ответ на этот вопрос не является ни полезным (например, слишком расплывчатым и не реализованным), ни научно правильным (как даже не ошибочным: насколько я знаю, он даже не упоминается в соответствующая литература).
user603

6
(-1) это выглядит как неправильный ответ - этот метод не обнаружит выбросы! легко представить трехмерное блиноподобное облако точек, спроецированное PCA на 2D-плоскость и 1 точку выброса, которая находится далеко от плоскости, но ее проекция находится прямо в середине проецируемого облака, поэтому «плотность ядра» точка в 2D-плоскости будет высокой, хотя и является выбросом.
Кочеде

1
Я думаю, что PCA будет проблематичным здесь. PCA - это приближение, которое учитывает основной вклад в дисперсию. Но здесь самая цель - найти выбросы - разве они не «упадут между трещинами»?
Омри Атия

18

Вы можете найти педагогическое резюме различных методов, доступных в (1)

Для некоторых --recent-- численных сравнений различных методов, перечисленных там, вы можете проверить (2) и (3) .

Есть много более старых (и менее исчерпывающих) числовых сравнений, обычно встречающихся в книгах. Например, вы найдете его на страницах 142-143 из (4).

Обратите внимание, что все методы, обсуждаемые здесь, имеют реализацию с открытым исходным кодом R, в основном через пакет rrcov .

  • (1) P. Rousseeuw и M. Hubert (2013) Оценки высокого разброса многомерного местоположения и разброса.
  • (2) М. Хьюберт, П. Руссеув, К. Вакили (2013). Смещение формы робастных оценок ковариации: эмпирическое исследование. Статистические документы.
  • (3) К. Вакили и Э. Шмитт (2014). Поиск многовариантных выбросов с помощью FastPCS. Вычислительная статистика и анализ данных.
  • (4) Maronna RA, Martin RD и Yohai VJ (2006). Робастная статистика: теория и методы. Вилли, Нью-Йорк.

Я не рекомендовал бы статьи, которые основаны на смоделированных данных, я полагаю, что первые две статьи основаны на смоделированных данных. Я работаю с реальными данными, и РЕАЛЬНО я эти смоделированные сильные выбросы можно найти в данных. Лично я никогда не находил набор данных с очень сильными выбросами. Если вы знаете какие-либо реальные данные, пожалуйста, не стесняйтесь поделиться
Learner

Привет Немо: спасибо за ваш комментарий. На самом деле, оказывается, что для многих (к сожалению, не для всех) этих моделей наихудшая возможная конфигурация выбросов фактически известна, и это конфигурации, на которых обычно моделируют и оценивают эти модели. Возможно, вы можете сформулировать это как вопрос? Я был бы более чем рад указать на некоторые ссылки!
user603 27.02.15

1
Я уже задавал общий вопрос. Вы можете найти свой пост здесь stats.stackexchange.com/questions/139645/...
Learner

13

Я хотел бы сделать что-то вроде «опустить один алгоритм тестирования» (n - количество данных):

для i = 1 до n

  1. Икся
  2. ИксяLя

конец для

Lя

Это сработает, если n достаточно велико ... вы также можете использовать "стратегию ухода из вне", которая может быть более подходящей, когда у вас есть "группы" выбросов ...


Как бы это относилось к случаям, когда вы не знаете, сколько у вас всплесков, т.е. когда точки N-1 все еще имеют смещение, поскольку они включают выбросы?
Бенджамин Баннье

1
если n достаточно велико и число выбросов мало, то это смещение незначительно. Если имеется большое количество выбросов, то, возможно, это не выбросы, и в любом случае, как я уже упоминал, вы можете использовать стратегию ухода из аута ... (в этом случае вы должны найти стратегию, чтобы избежать отслеживания всех конфигураций, которые могут быть NP трудным ...) и если вы не знаете, k, вы можете попробовать много значений для k и сохранить наиболее подходящие.
Робин Жирар

1
Это хорошая идея, но если я правильно ее понял, кажется, что она расширяет идею "выброса", чтобы включить любое значение в набор данных, который далек от других. Например, в пакете {-110 [1] -90, 0, 90 [1] 110} из 43 целых чисел ваша процедура не идентифицирует 0 (который является медианой этих чисел!) Как уникальный "выброс" «?
whuber

@ хороший вопрос! без структурного предположения ноль может быть удален. Однако вы можете предположить, что распределение является унимодальным и рассчитать плотность соответственно. В этом случае структурное допущение (унимодальность) поможет процедуре увидеть ноль как «нормальное» значение. В конце вы думаете, что это нормально, потому что у вас в голове есть такое «структурное предположение» :)?
Робин Жирар

3
LяLя

12

Вы можете найти кандидатов на «выбросы» среди точек поддержки ограничивающего эллипсоида минимального объема. ( Эффективные алгоритмы для нахождения этих точек в довольно больших измерениях, как точных, так и приблизительных, были изобретены во множестве работ в 1970-х годах, потому что эта проблема тесно связана с вопросом в экспериментальном дизайне.)


12

Я применил новый подход к анализу основных компонентов IT Jolliffe . Вы запускаете PCA для своих данных (Примечание: PCA может быть довольно полезным инструментом для самостоятельного исследования данных), но вместо того, чтобы рассматривать первые несколько основных компонентов (ПК), вы строите последние несколько ПК. Эти ПК представляют собой линейные отношения между вашими переменными с наименьшим возможным отклонением. Таким образом, они обнаруживают «точные» или близкие к точным многовариантные отношения в ваших данных.

График оценок ПК для последнего ПК покажет выбросы, которые не так легко обнаружить, глядя на каждую переменную в отдельности. Одним из примеров является рост и вес - тот, кто имеет «выше среднего» рост и «ниже среднего» вес, будет обнаружен последним ПК роста и веса (при условии, что они положительно коррелируют), даже если их рост и вес не были " Экстрим "индивидуально (например, тот, кто был 180см и 60кг).


11

Я не видел, чтобы кто-то упоминал функции влияния . Впервые я увидел эту идею в многомерной книге Гнанадесикана .

В одном измерении выброс является либо чрезвычайно большим, либо чрезвычайно малым значением. В многомерном анализе это наблюдение удаляется из основной массы данных. Но какой показатель мы должны использовать, чтобы определить экстремум для выброса? Есть много вариантов. Расстояние Махаланобиса только одно. Я думаю, что поиск любого типа выброса бесполезен и контрпродуктивен. Я хотел бы спросить, почему вы заботитесь о выбросах? При оценке среднего значения они могут оказать большое влияние на эту оценку. Надежные оценки весят и приспосабливают выбросы, но они формально не проверяют их. Теперь в регрессии выбросы - например, точки воздействия - могут оказать большое влияние на параметры наклона в модели. С помощью двумерных данных они могут чрезмерно влиять на расчетный коэффициент корреляции и в трех или более измерениях коэффициент множественной корреляции.

Функции влияния были введены Хэмпелом как инструмент для надежной оценки, и Мэлловс написал хорошую неопубликованную статью, пропагандирующую их использование. Функция влияния - это функция точки, в которой вы находитесь в n-мерном пространстве, и параметра. Он по существу измеряет разницу между оценкой параметра с точкой в ​​расчете и с опущенной точкой. Вместо того, чтобы заниматься вычислением двух оценок и анализировать разницу, часто вы можете получить формулу для нее. Затем контуры постоянного влияния сообщают вам направление, которое является крайним по отношению к оценке этого параметра, и, следовательно, сообщают вам, где в n-мерном пространстве искать выбросы.

Более подробно вы можете посмотреть на мою статью 1983 года в Американском журнале математических и управленческих наук под названием «Функция влияния и ее применение к проверке данных». При проверке данных мы хотели найти выбросы, которые повлияли на предполагаемое использование данных. Я чувствую, что вы должны обратить свое внимание на выбросы, которые сильно влияют на параметры, которые вы хотите оценить, и не заботитесь о других, которые этого не делают.


1
+1 Очень хорошая идея, особенно для последовательной ориентации на цель анализа.
whuber

Аналогичной идеей является случайный выборочный консенсус ( RANSAC ).
GeoMatt22


7

Для умеренных измерений, таких как 3, какой-то метод перекрестной проверки ядра, предложенный в другом месте, кажется разумным и является лучшим, что я могу придумать.

Для более высоких измерений я не уверен, что проблема разрешима; он приземляется довольно прямо на территорию «проклятия размерности». Проблема заключается в том, что функции расстояния имеют тенденцию очень быстро сходиться к очень большим значениям по мере увеличения размерности, включая расстояния, полученные из распределений. Если вы определяете выброс как «точку со сравнительно большой функцией расстояния относительно других», и все ваши функции расстояния начинают сходиться, потому что вы находитесь в многомерном пространстве, значит, у вас проблемы ,

Без какого-либо предположения о распределении, которое позволит вам превратить его в вероятностную проблему классификации, или, по крайней мере, в какое-то вращение, которое позволит вам разделить ваше пространство на «измерения шума» и «информативные измерения», я думаю, что геометрия многомерных пространств собирается запретить любую простую - или, по крайней мере, надежную - идентификацию выбросов.


Процедура, которую я уже дал, может быть применена в большом измерении, как я уже сказал, используя гауссовское допущение. Если размерность действительно велика относительно размера выборки (т. Е. P >> n), то вы можете сделать некоторое предположение о нехватке (например, предположим, что параметры вашего гауссова распределения лежат в пространстве с низкой размерностью) и использовать процедуру оценки порогового значения для оценки параметров ...
Робин Жирар

1
Очень проницательно, что проклятие размерности исключает решение без предположений о распределении (если у вас просто безумные объемы данных или размерность невелика)
Джон Робертсон,

6

Я не уверен, что вы имеете в виду, когда говорите, что вы думаете не о проблеме регрессии, а о «истинных многомерных данных». Моим первоначальным ответом было бы рассчитать расстояние Махаланобиса, поскольку не требуется указывать конкретный IV или DV, но по своей сути (насколько я понимаю) оно связано со статистикой рычагов.


Да, я мог бы вычислить расстояние Махаланобиса каждого наблюдения из среднего значения данных. Но наблюдения с наибольшим расстоянием от среднего значения не обязательно являются многомерными выбросами. Подумайте о двумерной диаграмме рассеяния с высокой корреляцией. Выброс может быть вне основного облака точек, но не так далеко от среднего значения.
Роб Хиндман

5

Я не знаю, что кто-то делает это, но я обычно хотел бы попытаться уменьшить размерность, когда у меня есть проблема, подобная этой. Вы можете посмотреть на метод из многократного обучения или нелинейного уменьшения размерности .

Примером может служить карта Кохонена . Хорошая ссылка на R - «Самоорганизующиеся и суперорганизующиеся карты в R: пакет Кохонена» .


4

Мой первый ответ будет таким: если вы можете сделать многомерную регрессию на данных, то использовать остатки от этой регрессии, чтобы определить выбросы. (Я знаю, что вы сказали, что это не проблема регрессии, так что это может вам не помочь, извините!)

Я копирую часть этого из вопроса Stackoverflow, на который я ранее ответил, у которого есть некоторый пример кода R

Сначала мы создадим некоторые данные, а затем испортим их выбросами;

> 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 

Часто наиболее полезно просматривать данные графически (ваш мозг гораздо лучше распознает выбросы, чем математика)

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

Затем вы можете использовать статистику для расчета критических значений отсечки, здесь с помощью теста Лунда (см. Lund, RE 1975, «Таблицы приблизительного теста для выбросов в линейных моделях», Technometrics, том 17, № 4, с. 473). -476 и Прескотт, стр. 1975, «Приблизительное испытание на выбросы в линейных моделях», Technometrics, том 17, № 1, с. 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 

Очевидно, есть и другие посторонние тесты, кроме теста Лунда (на ум приходит Grubbs), но я не уверен, какие из них лучше подходят для многомерных данных.


1
Одномерные боксы полезны для выявления одномерных выбросов. Но они могут полностью пропустить многовариантные выбросы. Идея регрессии в порядке, если бы у меня были Y и куча X переменных. Но, как я сказал в этом вопросе, Y не существует, поэтому регрессия неуместна.
Роб Хиндман

@RobHyndman - можно исправить Y (сделать его константой) и попытаться смоделировать мультирегрессию без перехвата . Это прекрасно работает на практике. По сути, это превращает принципиально неконтролируемую проблему, которая является типичным обнаружением аномалий, в контролируемую.
Ариэльф

@arielf Интересно. У вас есть ссылка на это?
Роб Хиндман

@RobHyndman не академическая статья, но, возможно, лучше, вы можете попробовать сами. См. Мою страницу github на vw-top-errors@ goo.gl/l7SLlB (обратите внимание, что в примерах там есть буква Y, но я применил ту же технику, очень успешно при решении неконтролируемых проблем, исправив Y.)
arielf

1

Один из приведенных выше ответов касался расстояний махаланобисов ... возможно, еще один шаг вперед и расчет одновременных доверительных интервалов помогут обнаружить выбросы!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.