Deteksi outlier dalam set yang sangat kecil

12

Saya perlu mendapatkan seakurat mungkin nilai untuk kecerahan sumber cahaya yang stabil terutama yang diberikan dua belas nilai luminositas sampel. Sensornya tidak sempurna, dan cahayanya kadang-kadang bisa "berkedip" lebih terang atau lebih gelap, yang bisa diabaikan, karenanya saya perlu deteksi outlier (saya pikir?).

Saya sudah membaca beberapa pendekatan di sini dan tidak bisa memutuskan pendekatan mana yang harus diambil. Jumlah outlier tidak pernah diketahui sebelumnya dan seringkali akan menjadi nol. Flicker umumnya merupakan penyimpangan yang sangat besar dari kecerahan yang stabil (cukup untuk benar-benar mengacaukan dengan rata-rata yang diambil dengan hadiah besar), tetapi tidak harus demikian.

Berikut ini adalah 12 sampel pengukuran untuk kelengkapan pertanyaan:

295.5214, 277.7749, 274.6538, 272.5897, 271.0733, 292.5856, 282.0986, 275.0419, 273.084, 273.1783, 274.0317, 290.1837

Perasaan saya adalah mungkin tidak ada outlier dalam set tertentu, meskipun 292 dan 295 terlihat agak tinggi.

Jadi, pertanyaan saya adalah, apa yang akan menjadi pendekatan terbaik di sini? Saya harus menyebutkan bahwa nilai-nilai berasal dari mengambil jarak euclidean komponen RG dan B dari cahaya dari titik nol (hitam). Akan menyakitkan secara pemrograman, tetapi mungkin, untuk kembali ke nilai-nilai ini jika diperlukan. Jarak euclidean digunakan sebagai ukuran "kekuatan keseluruhan" karena saya tidak tertarik pada warna, hanya kekuatan output. Namun, ada kemungkinan yang masuk akal bahwa flicker yang saya sebutkan memiliki komposisi RGB yang berbeda dengan output yang biasa.

Saat ini saya sedang mempermainkan beberapa fungsi yang akan berulang sampai keanggotaan stabil dari tindakan yang diizinkan tercapai oleh:

  1. Menemukan standar deviasi
  2. Menempatkan segala sesuatu di luar mengatakan 2 SD ke daftar abaikan
  3. Menghitung ulang rata-rata dan SD dengan daftar abaikan dikecualikan
  4. Menentukan kembali siapa yang harus diabaikan berdasarkan rata-rata dan SD yang baru (nilai semua 12)
  5. Ulangi sampai stabil.

Apakah ada nilai dalam pendekatan itu?

Semua komentar diterima dengan rasa terima kasih!

teknolabel
sumber
Meskipun menyakitkan, spekulasi Anda bahwa sebuah flicker mungkin sebenarnya memiliki komponen RGB yang berbeda (meskipun kadang-kadang jarak yang sama dari hitam) akan layak untuk dikejar. Pilihan lain adalah dengan menggunakan median, bukan rata-rata, tergantung pada tujuan Anda.
Wayne

Jawaban:

7

Pencilan dalam sampel kecil selalu sangat sulit dideteksi. Dalam kebanyakan kasus sebenarnya saya akan menganjurkan bahwa jika Anda merasa bahwa data Anda tidak terus-menerus rusak, nilai "outlierish" mungkin tidak bermasalah dan pengecualiannya mungkin tidak masuk akal. Mungkin menggunakan teknik statistik yang kuat akan lebih masuk akal dan lebih dekat ke solusi jalan tengah. Anda memiliki sampel kecil; cobalah untuk membuat setiap titik sampel dihitung. :)

Mengenai pendekatan yang Anda sarankan: Saya tidak akan terburu-buru menerapkan asumsi normalitas data Anda dengan aturan 68-95-99.7 pada mereka (seperti yang tampaknya Anda lakukan dengan aturan heuristik 2SD Anda). Ketidaksetaraan Chebyshev untuk sekali mengasumsikan aturan 75-88.9-93.8 tentang mereka yang jelas kurang kaku. " Aturan " lain juga ada; bagian Mengidentifikasi pencilan dalam lemma Outlier di wikipedia memiliki kumpulan heuristik.

ZM

Mi=.6745(xix~)/MAD

x~M3.5

Sekali lagi, mengingat Anda memiliki sampel yang sangat kecil, jika Anda yakin bahwa sampel Anda tidak jelas rusak (tinggi manusia 9'4 "), saya akan menyarankan Anda untuk tidak mengecualikan data dengan tergesa-gesa." Yang diduga pencilan "Anda mungkin adalah data yang tidak rusak; penggunaannya dapat benar-benar membantu daripada merusak analisis Anda.

usεr11852
sumber
1
x¯x¯x~
1
+1 untuk penekanan kuat pada nilai ringkasan yang kuat. Lihat juga utas lainnya di situs ini.
Nick Cox
1
@NickCox: Poin bagus, saya tidak tahu apa yang saya pikirkan sejak awal. Mengubahnya sekarang. Terima kasih untuk sarannya.
usεr11852
0

Arahkan yang pertama - mungkin layak untuk kembali ke warna rgb. Jarang membuang data, dan besarnya vektor rgb bukanlah satu-satunya cara untuk mewakili kecerahan - kecerahan yang dirasakan berbeda, seperti halnya nilai dalam HSV.

Tetapi menempatkan itu di satu sisi dan berurusan dengan data yang Anda miliki, sudahkah Anda mempertimbangkan membentuk ini sebagai masalah klasifikasi, bukan pemodelan, dan melakukan pembelajaran mesin? Anda memiliki input, yang merupakan vektor dengan 12 nilai riil di dalamnya (pembacaan kecerahan). Anda memiliki output, yang merupakan vektor dari 12 nilai biner (1 = inlier, 0 = outlier). Dapatkan beberapa set pembacaan kecerahan dan beri label sendiri, yang menunjukkan pembacaan kecerahan di setiap set adalah inlier / outlier. Sesuatu seperti ini:

Kemudian, jalankan seluruh lot melalui semacam classifier:

  • Anda bisa menggunakan classifier tunggal yang menghasilkan 12 nilai biner yang berbeda - jaringan saraf akan membuat Anda mengatur ini dengan mudah.
  • Atau, Anda bisa menggunakan classifier biner standar (mis. SVMlite ) dan melatih 12 model yang berbeda, satu mengklasifikasikan apakah setiap elemen output adalah inlier / outlier.

Dan kamu selesai! Tidak perlu repot mencari 'aturan' yang memisahkan inliers dari outlier sendiri. Hanya dapatkan beberapa set data yang terlihat masuk akal dan biarkan mesin melakukannya untuk Anda :)

~~~

EDIT: Kebetulan, metode yang Anda usulkan, di mana Anda secara iteratif cocok dengan gaussian kemudian mengklasifikasikan setiap sampel lebih dari 2 standar deviasi sebagai pencilan, sangat mirip dengan algoritma maksimalisasi harapan. Sesuatu seperti ini:

  • Komponen gaussian tunggal (memodelkan inliers)
  • Komponen latar belakang yang seragam (outlier)
  • Beberapa probabilitas sebelumnya dari masing-masing yang bergantung pada cara yang tidak jelas pada lebar gaussian (aturan 'klasifikasikan pada 2 standar deviasi').
  • Klasifikasi sulit pada langkah harapan.

Jika Anda turun rute itu mungkin layak googling untuk algoritma EM dan memeriksa asumsi apa yang Anda bangun ke dalam model Anda.

Menepuk
sumber