Apa cara terbaik untuk mengidentifikasi pencilan dalam data multivarian?


94

Misalkan saya memiliki satu set besar data multivarian dengan setidaknya tiga variabel. Bagaimana saya bisa menemukan outlier? Scatterplots berpasangan tidak akan berfungsi karena dimungkinkan untuk pencilan yang ada dalam 3 dimensi yang bukan pencilan di salah satu dari subruang 2 dimensi.

Saya tidak memikirkan masalah regresi, tetapi data multivariat yang sebenarnya. Jadi jawaban yang melibatkan regresi yang kuat atau leverage komputasi tidak membantu.

Salah satu kemungkinan adalah menghitung skor komponen utama dan mencari pencilan di sebar bivariat dari dua skor pertama. Apakah itu dijamin berhasil? Apakah ada pendekatan yang lebih baik?


3
Jika matriks sebar tidak akan menangkapnya, Anda bisa mencoba sebar 3D. Itu tidak akan berhasil pada 4D, tentu saja, tetapi kemudian Anda dapat membuat dimensi ke-4 sebagai waktu dan membuat film. :)
Shane

Bagaimana dengan analisis klaster (hierarkis)?
Andrej

11
5th D dalam rona warna, 6 D dalam intensitas warna, 7 D dalam ukuran titik dan kita bisa pergi ;-)

Jawaban:


26

Silahkan lihat di mvoutlier paket yang mengandalkan memerintahkan jarak mahalanobis kuat, seperti yang disarankan oleh @drknexus.


4
Saya pribadi tidak percaya pada paket ini! Saya pikir ini hanya suara sains. Jenis-jenis teori ini sangat baik untuk data simulasi sementara hanya pffff untuk data nyata. Saya memang menggunakan paket ini untuk misalnya mendeteksi outlier :-) sayangnya setengah dari data saya terdeteksi outlier :-D lucu bagaimana orang hanya mempublikasikan beberapa (saya tidak tahu harus memanggil apa ini). jika Anda memiliki komentar, saya akan senang melihatnya. Kami memiliki banyak jenis pencilan tetapi haruskah kami menghapusnya dari data kami? Saya percaya tidak.
Pelajar

1
Bisakah Anda menjelaskan kapan dan mengapa ini berhasil?
eric_kernfeld

19

Saya pikir jawaban Robin Girard akan bekerja cukup baik untuk 3 dan mungkin 4 dimensi, tetapi kutukan dimensi akan mencegahnya bekerja lebih dari itu. Namun, sarannya membawa saya ke pendekatan terkait yaitu menerapkan estimasi kepadatan kernel yang divalidasi silang ke tiga skor komponen utama pertama. Kemudian set data yang sangat tinggi masih dapat ditangani dengan baik.

Singkatnya, untuk i = 1 ke n

  1. Hitung estimasi kepadatan dari tiga skor komponen utama pertama yang diperoleh dari kumpulan data tanpa Xi.
  2. Hitung kemungkinan Xi untuk kepadatan yang diperkirakan pada langkah 1. sebut saja Li.

berakhir untuk

Sortir Li (untuk i = 1, .., n) dan outlier adalah yang memiliki kemungkinan di bawah ambang tertentu. Saya tidak yakin apa yang akan menjadi ambang batas yang baik - saya akan meninggalkan itu untuk siapa pun yang menulis makalah tentang ini! Salah satu kemungkinan adalah dengan melakukan boxplot dari nilai-nilai log (Li) dan melihat outlier apa yang terdeteksi pada ujung negatif.


Terima kasih atas jawaban ini (harus menjadi komentar?) Seperti yang telah saya sebutkan, sebagai komentar untuk dimensi Tinggi jawaban Rich tidak menjadi masalah (bahkan 1000 dapat bekerja) jika Anda membuat asumsi struktural parametrik.
robin girard

@rob "Saya tidak yakin apa yang akan menjadi ambang batas yang baik" ini akan menjadi tujuan dari beberapa prosedur pengujian yang saya sebutkan .... tapi saya sepenuhnya setuju bahwa hal-hal harus diisi dan saya sangat suka deteksi outlier di deteksi outlier! siapa yang mau menulis makalah :)?
robin girard

4
(-1) Agak mengecewakan bahwa jawaban yang diterima untuk pertanyaan ini tidak berguna (misalnya terlalu kabur dan tidak diterapkan) atau benar secara ilmiah (seperti yang bahkan tidak salah: sejauh yang saya tahu, itu bahkan tidak disebutkan dalam literatur yang relevan).
user603

6
(-1) ini sepertinya jawaban yang salah - metode ini tidak akan mendeteksi outlier! mudah untuk membayangkan awan titik pancake 3D yang diproyeksikan oleh PCA pada bidang 2D dan 1 titik outlier yang jauh dari pesawat tetapi proyeksinya tepat di tengah awan yang diproyeksikan, jadi "kepadatan kernel" dari titik di bidang 2D akan tinggi meskipun merupakan outlier.
Kochede

1
Saya pikir PCA akan bermasalah di sini. PCA adalah perkiraan yang mempertimbangkan kontribusi utama varians. Tapi di sini tujuannya adalah untuk menemukan outlier - bukankah mereka "jatuh di antara celah-celah"?
Omry Atia

18

Anda dapat menemukan ringkasan pedagogis dari berbagai metode yang tersedia di (1)

Untuk beberapa --recent-- perbandingan numerik dari berbagai metode yang tercantum di sana, Anda dapat memeriksa (2) dan (3) .

ada banyak perbandingan numerik yang lebih lama (dan kurang lengkap), biasanya ditemukan dalam buku. Anda akan menemukan satu di halaman 142-143 dari (4), misalnya.

Perhatikan bahwa semua metode yang dibahas di sini memiliki implementasi open source R, terutama melalui paket rrcov .

  • (1) P. Rousseeuw dan M. Hubert (2013) Estimator High-Breakdown dari Multivariate Location dan Scatter.
  • (2) M. Hubert, P. Rousseeuw, K. Vakili (2013). Bentuk bias penaksir kovarian yang kuat: studi empiris. Makalah Statistik.
  • (3) K. Vakili dan E. Schmitt (2014). Menemukan pencilan multivarian dengan FastPCS. Statistik Komputasi & Analisis Data.
  • (4) Maronna RA, Martin RD dan Yohai VJ (2006). Statistik Kuat: Teori dan Metode. Wiley, New York.

Saya tidak akan merekomendasikan makalah yang didasarkan pada data simulasi, saya percaya dua makalah pertama didasarkan pada data simulasi. Saya bekerja pada data nyata dan Jarang saya mereka outlier kuat simulasi dapat ditemukan dalam data. Saya pribadi tidak pernah menemukan kumpulan data dengan outlier yang sangat kuat. Jika Anda mengetahui data nyata, jangan ragu untuk berbagi
Learner

Hai Nemo: terima kasih atas komentar Anda. Sebenarnya, ternyata untuk banyak (sayangnya tidak semua) dari model-model konfigurasi outlier terburuk yang mungkin benar-benar diketahui dan ini adalah konfigurasi yang biasanya akan disimulasikan dari dan mengevaluasi model-model tersebut. Mungkin Anda bisa merumuskan ini sebagai pertanyaan? Saya akan dengan senang hati menunjukkan beberapa referensi!
user603

1
Saya sudah mengajukan pertanyaan umum. Anda dapat menemukan posting saya di sini stats.stackexchange.com/questions/139645/…
Learner

13

Saya akan melakukan semacam "tinggalkan satu algoritma pengujian" (n adalah jumlah data):

untuk i = 1 hingga n

  1. Xi
  2. XiLi

berakhir untuk

Li

Ini akan bekerja jika n cukup besar ... Anda juga dapat menggunakan "tinggalkan strategi" yang bisa lebih relevan ketika Anda memiliki "grup" outlier ...


Bagaimana ini menangani kasus-kasus di mana Anda tidak tahu berapa banyak outlier yang Anda miliki, yaitu ketika poin N-1 masih memiliki bias karena mereka termasuk outlier?
Benjamin Bannier

1
jika n cukup besar dan jumlah pencilan kecil maka bias ini dapat diabaikan. Jika ada banyak outlier maka, mungkin itu bukan outlier dan, seperti yang saya sebutkan, Anda dapat menggunakan strategi cuti keluar ... (dalam hal ini, Anda harus mencari tahu strategi untuk menghindari pelacakan semua konfigurasi yang mungkin menjadi NP hard ...) dan jika Anda tidak tahu k, Anda dapat mencoba banyak nilai untuk k dan menyimpan yang paling relevan.
robin girard

1
Ini adalah ide yang bagus, tetapi jika saya telah memahaminya dengan benar, sepertinya memperbesar ide "outlier" untuk memasukkan nilai apa pun dalam dataset yang jauh dari yang lain. Misalnya, dalam batch {-110 [1] -90, 0, 90 [1] 110} dari 43 bilangan bulat, bukankah prosedur Anda akan mengidentifikasi 0 (yang merupakan median angka-angka ini!) Sebagai unik "outlier "?
whuber

@whuber pertanyaan bagus! tanpa asumsi struktural, nol bisa dihilangkan. Namun Anda dapat mengasumsikan distribusi unimodal dan menghitung kepadatan yang sesuai. Dalam hal ini asumsi struktural (unimodality) akan membantu prosedur untuk melihat nol sebagai nilai "normal". Pada akhirnya Anda berpikir itu normal karena Anda memiliki jenis "asumsi struktural" di kepala Anda :)?
robin girard

3
LiLi

12

Anda dapat menemukan kandidat untuk "pencilan" di antara titik-titik dukungan ellipsoid dengan volume minimum. ( Algoritme yang efisien untuk menemukan titik-titik ini dalam dimensi yang cukup tinggi, baik secara tepat maupun kira-kira, diciptakan dalam serentetan makalah pada tahun 1970-an karena masalah ini terkait erat dengan pertanyaan dalam desain eksperimental.)


12

Pendekatan baru yang saya lihat adalah dengan Analisis Komponen Utama IT Jolliffe . Anda menjalankan PCA pada data Anda (Catatan: PCA bisa menjadi alat penjelajahan data yang sangat berguna dengan caranya sendiri), tetapi alih-alih melihat beberapa Komponen Utama (PC) pertama, Anda membuat plot beberapa PC terakhir. PC ini adalah hubungan linier antara variabel Anda dengan varians sekecil mungkin. Dengan demikian mereka mendeteksi "tepat" atau dekat dengan hubungan multivarian yang tepat dalam data Anda.

Plot skor PC untuk PC terakhir akan menunjukkan outlier yang tidak mudah terdeteksi dengan melihat secara individual pada masing-masing variabel. Salah satu contoh adalah untuk tinggi dan berat badan - beberapa yang memiliki tinggi "di atas rata-rata" dan berat "di bawah rata-rata" akan terdeteksi oleh PC tinggi dan berat badan terakhir (dengan asumsi ini berkorelasi positif), bahkan jika tinggi dan beratnya tidak " ekstrim "secara individual (mis. seseorang yang 180cm dan 60kg).


11

Saya tidak melihat ada yang menyebutkan fungsi pengaruh . Saya pertama kali melihat ide ini dalam buku multivariat Gnanadesikan .

Dalam satu dimensi outlier adalah nilai yang sangat besar atau sangat kecil. Dalam analisis multivariat, ini adalah pengamatan yang dihapus dari sebagian besar data. Tetapi metrik apa yang harus kita gunakan untuk mendefinisikan ekstrim untuk pencilan? Ada banyak pilihan. Jarak Mahalanobis hanya satu. Saya pikir mencari setiap jenis pencilan itu sia-sia dan kontraproduktif. Saya akan bertanya mengapa Anda peduli dengan pencilan itu? Dalam mengestimasi mean, mereka dapat memiliki pengaruh besar pada estimasi tersebut. Penduga yang kuat menurunkan berat badan dan mengakomodasi pencilan tetapi mereka tidak secara resmi menguji mereka. Sekarang dalam regresi, outlier - seperti poin leverage - dapat memiliki efek besar pada parameter kemiringan dalam model. Dengan data bivariat mereka dapat terlalu mempengaruhi estimasi koefisien korelasi dan dalam tiga atau lebih dimensi koefisien korelasi berganda.

Fungsi pengaruh diperkenalkan oleh Hampel sebagai alat dalam estimasi yang kuat dan Mallows menulis makalah yang tidak dipublikasikan yang menganjurkan penggunaannya. Fungsi pengaruh adalah fungsi dari titik Anda berada dalam ruang n-dimensi dan parameter. Ini pada dasarnya mengukur perbedaan antara estimasi parameter dengan titik dalam perhitungan dan dengan titik yang ditinggalkan. Daripada bersusah payah melakukan perhitungan dari dua perkiraan dan mengambil perbedaan, seringkali Anda dapat memperoleh formula untuk itu. Kemudian kontur pengaruh konstan memberi tahu Anda arah yang ekstrem sehubungan dengan perkiraan parameter ini dan karenanya memberi tahu Anda di mana di ruang n-dimensi untuk mencari pencilan.

Untuk lebih lanjut, Anda dapat melihat makalah saya tahun 1983 di American Journal of Matematika dan Ilmu Manajemen berjudul "Fungsi pengaruh dan aplikasinya untuk validasi data." Dalam validasi data kami ingin mencari outliers yang memengaruhi tujuan penggunaan data. Perasaan saya adalah bahwa Anda harus mengarahkan perhatian Anda ke pencilan yang sangat memengaruhi parameter yang ingin Anda perkirakan dan tidak terlalu peduli dengan orang lain yang tidak.


1
+1 Ide yang sangat bagus, terutama untuk fokus yang konsisten pada tujuan analisis.
whuber

Gagasan serupa adalah Random Sample Consensus ( RANSAC ).
GeoMatt22

8

Ini mungkin overshoot, tetapi Anda dapat melatih Hutan Acak tanpa pengawasan pada data dan menggunakan ukuran kedekatan objek untuk mendeteksi outlier. Lebih detail di sini .


4
Lihat fungsi outlier di paket randomForest
George Dontas

7

Untuk dimensi moderat, seperti 3, maka semacam teknik cross-validasi kernel seperti yang disarankan di tempat lain tampaknya masuk akal dan merupakan yang terbaik yang bisa saya lakukan.

Untuk dimensi yang lebih tinggi, saya tidak yakin bahwa masalahnya dapat dipecahkan; itu mendarat tepat di wilayah 'kutukan dimensi'. Masalahnya adalah bahwa fungsi jarak cenderung konvergen ke nilai yang sangat besar dengan sangat cepat saat Anda meningkatkan dimensi, termasuk jarak yang diperoleh dari distribusi. Jika Anda mendefinisikan outlier sebagai "titik dengan fungsi jarak yang relatif besar relatif terhadap yang lain", dan semua fungsi jarak Anda mulai menyatu karena Anda berada di ruang dimensi tinggi, well, Anda dalam kesulitan .

Tanpa semacam asumsi distribusi yang akan memungkinkan Anda mengubahnya menjadi masalah klasifikasi probabilistik, atau setidaknya beberapa rotasi yang memungkinkan Anda memisahkan ruang Anda menjadi "dimensi kebisingan" dan "dimensi informatif", saya berpikir bahwa geometri ruang dimensi tinggi akan melarang identifikasi outlier yang mudah - atau setidaknya kuat -.


Prosedur yang sudah saya berikan dapat diterapkan dalam dimensi besar, seperti yang saya katakan, menggunakan asumsi gaussian. Jika dimensi benar-benar besar sehubungan dengan ukuran sampel (yaitu p >> n) maka Anda dapat membuat beberapa asumsi sparcity (asumsikan bahwa parameter distribusi gaussian Anda terletak di ruang dimensi rendah misalnya) dan gunakan prosedur estimasi ambang batas untuk estimasi parameter ...
robin girard

1
Sangat memahami bahwa kutukan dimensi menghalangi solusi tanpa asumsi distribusi (kecuali jika Anda hanya memiliki jumlah data yang gila atau dimensi kecil)
John Robertson

6

Saya tidak yakin apa yang Anda maksudkan ketika Anda mengatakan bahwa Anda tidak memikirkan masalah regresi tetapi tentang "data multivariat sejati". Respons awal saya adalah menghitung jarak Mahalanobis karena tidak mengharuskan Anda menentukan IV atau DV tertentu, tetapi pada intinya (sejauh yang saya mengerti) itu terkait dengan statistik leverage.


Ya, saya bisa menghitung jarak setiap pengamatan dari rata-rata data. Tetapi pengamatan dengan jarak terjauh dari rerata tidak harus pencilan multivarian. Pikirkan sebaran bivariat dengan korelasi tinggi. Pencilan bisa berada di luar awan utama poin tetapi tidak jauh dari rata-rata.
Rob Hyndman


4

Respons pertama saya adalah jika Anda dapat melakukan regresi multivariat pada data, maka untuk menggunakan residu dari regresi tersebut untuk mengenali outlier. (Saya tahu Anda mengatakan itu bukan masalah regresi, jadi ini mungkin tidak membantu Anda, maaf!)

Saya menyalin beberapa dari pertanyaan Stackoverflow yang sebelumnya saya jawab yang memiliki beberapa contoh kode R

Pertama, kita akan membuat beberapa data, dan menodainya dengan pencilan;

> 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 

Sering kali paling berguna untuk memeriksa data secara grafis (otak Anda jauh lebih baik dalam melihat outlier daripada matematika)

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

Anda kemudian dapat menggunakan statistik untuk menghitung nilai cut off kritis, di sini menggunakan Lund Test (Lihat Lund, RE 1975, "Tabel untuk Sebuah Perkiraan Tes untuk Outliers dalam Model Linear", Technometrics, vol. 17, no. 4, hlm. 473 -476 dan Prescott, P. 1975, "Sebuah Perkiraan Tes untuk Pencilan dalam Model Linier", Technometrics, vol. 17, no. 1, hlm. 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 

Jelas ada tes outlier lain selain tes Lund (Grubbs muncul dalam pikiran), tapi saya tidak yakin mana yang lebih cocok untuk data multivariat.


1
Boxplots univariat berguna untuk melihat outlier univariat. Tetapi mereka benar-benar dapat kehilangan pencilan multivarian. Ide regresi adalah ok jika saya memiliki variabel Y dan banyak variabel X. Tetapi seperti yang saya katakan dalam pertanyaan, tidak ada Y sehingga regresi tidak tepat.
Rob Hyndman

@RobHyndman - seseorang dapat memperbaiki Y (membuatnya konstan) dan mencoba memodelkan multi-regresi tanpa intersep . Ini bekerja dengan indah dalam latihan. Pada dasarnya ini mengubah masalah mendasar yang tidak diawasi, yang merupakan pendeteksian anomali tipikal, menjadi masalah yang diawasi.
arielf

@diri menarik. Apakah Anda punya referensi untuk itu?
Rob Hyndman

@RobHyndman bukan makalah akademis, tapi mungkin lebih baik, Anda bisa mencobanya sendiri. Lihat halaman github saya di vw-top-errors@ goo.gl/l7SLlB (perhatikan bahwa contoh-contoh di sana kebetulan memiliki Y, tapi saya menggunakan teknik yang sama, sangat berhasil pada masalah yang tidak terawasi juga dengan memperbaiki Y.)
arielf

1

Salah satu jawaban di atas menyentuh jarak mahalanobis .... mungkin langkah lebih jauh dan menghitung interval kepercayaan simultan akan membantu mendeteksi outlier!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.