Deteksi anomali: algoritma apa yang digunakan?

10

Konteks: Saya sedang mengembangkan sistem yang menganalisis data klinis untuk menyaring data tidak masuk akal yang mungkin salah ketik.

Apa yang saya lakukan sejauh ini:

Untuk mengukur masuk akal, upaya saya sejauh ini adalah untuk menormalkan data dan kemudian menghitung nilai masuk akal untuk titik p berdasarkan jaraknya ke titik data yang diketahui di set D (= set pelatihan):

hal masuk akal(hal)=qDGauss(jarak(hal,q))

Dengan kuantifikasi itu, saya kemudian dapat memilih ambang yang memisahkan data yang masuk akal dari data yang tidak masuk akal. Saya menggunakan python / numpy.

Masalah saya:

  1. Algoritma ini tidak dapat mendeteksi dimensi independen. Idealnya, saya bisa memasukkan apa pun yang saya ketahui tentang catatan ke dalam algoritma dan membiarkannya mengetahui sendiri bahwa dimensi X tidak memengaruhi masuk akalnya catatan tersebut.
  2. Algoritma tidak benar-benar berfungsi untuk nilai-nilai diskrit seperti boolean atau input terpilih. Mereka dapat dipetakan pada nilai kontinu, tetapi berlawanan intuitif bahwa Select 1 lebih dekat ke Select 2 daripada Select 3.

Pertanyaan:

Algoritme seperti apa yang harus saya perhatikan untuk tugas ini? Tampaknya ada banyak pilihan termasuk pendekatan tetangga terdekat, berbasis clustering dan statistik. Juga, saya mengalami kesulitan menemukan makalah yang berhubungan dengan deteksi anomali kompleksitas ini.

Setiap saran sangat dihargai.

[Sunting] Contoh:

Misalkan data terdiri dari Ketinggian Seseorang, Bobot Seseorang dan Stempel Waktu - jadi ini 3D-Data. Berat dan Tinggi berkorelasi, tetapi stempel waktu sepenuhnya independen. Jika saya hanya mempertimbangkan jarak euclidean, saya harus memilih ambang kecil agar sesuai dengan sebagian besar data validasi silang saya. Idealnya, algoritma hanya akan mengabaikan dimensi timestamp, karena tidak relevan untuk menentukan apakah suatu catatan masuk akal, karena timestamp tidak berkorelasi dengan dimensi lain dengan cara apa pun. Stempel waktu apa pun masuk akal.

Di sisi lain, orang bisa membuat contoh di mana cap waktu itu penting. Misalnya bisa jadi nilai Y untuk fitur X masuk akal ketika diukur sebelum tanggal tertentu, tetapi tidak setelah tanggal tertentu.

Georg
sumber
Silakan lihat tanggapan saya untuk stats.stackexchange.com/questions/97946/changepoints-in-r karena itu memperlakukan pertanyaan menjengkelkan (untuk beberapa!) Ini.
IrishStat
Apakah stats.stackexchange.com/questions/213 akan menjadi hal yang Anda cari?
Whuber
Saya ragu Anda dapat membuat ini berhasil untuk boolean.
Aksakal
@whuber Saya tidak yakin, sepertinya tidak membahas bagaimana dimensi yang tidak relevan dapat diabaikan.
Georg
1
Ngomong-ngomong, saya juga berjuang untuk menemukan formalisasi untuk pendekatan yang saya jelaskan. Jika saya tahu istilah formal, itu juga akan membantu saya dengan penelitian saya. Mungkin ada variasi untuk algoritme ini yang membahas setidaknya masalah dimensi independen / tidak relevan.
Georg

Jawaban:

7

Formulasi khas dari Anomaly Detection adalah untuk menemukan mean dan varians untuk setiap fitur dari data non anomali dan jika x adalah vektor dari fitur-fitur yang memiliki komponen x i maka tentukan probabilitas p ( x ) dari kombinasi fitur sebagaimxxsayahal(x)

hal(x)=saya=1mhal(xsaya;μsaya,σsaya2)

di mana setiap didistribusikan gaussian: x iN ( μ i , σ 2 i )xsayaxsayaN(μsaya,σsaya2)

anomali terjadi setiap kali hal(x)<ϵ

xsayaxsayalHaiglHaig(xsaya)xsaya

q=μ

ϵ

ϵF1

F1=2PrecsayassayaHainRecSebuahllPrecsayassayaHain+RecSebuahll

Tetapi untuk menghitung F1 Anda perlu tahu apa yang aneh dan apa yang tidak; yang benar positif adalah ketika sistem memprediksi anomali dan itu sebenarnya adalah anomali, positif palsu diprediksi anomali yang sebenarnya tidak dan sebagainya. Jadi, kecuali Anda memilikinya, maka Anda mungkin harus kembali menebak.

Masalah fitur terkait

mΣ

hal(x)=1(2π)m2(detΣ)1/2e-12(x-μ)TΣ-1(x-μ)

ϵΣ

waTeim
sumber
Saya sudah mencoba pendekatan ini, termasuk distribusi gaussian multivariat. Memang, fitur yang tidak terkait tidak banyak masalah dengan pendekatan ini. Apa yang saya temukan adalah bahwa pendekatan ini tidak cocok untuk model yang kompleks. Sebagai contoh, jika saya memiliki dataset 2D dengan fitur F1, F2 di mana terjadi pada kasus yang kira-kira F2 = F1 ^ 3, distribusi gaussian multivariat hanya akan menggambar elips di sekitar data dan memodelkan data dengan sangat kasar. Itu sebabnya saya pergi untuk pendekatan yang dijelaskan dalam pertanyaan (di mana tidak ada satu q tetapi banyak qs).
Georg
Jadi, apakah ada cara untuk mengambil pendekatan gaussian multivariat dan menerapkannya untuk menangkap model data yang lebih kompleks? Misalnya, dapatkah model campuran membantu saya dalam kasus ini? Saya sudah membaca sedikit tentang itu dalam penelitian saya, tetapi belum sepenuhnya memahami bagaimana menerapkannya.
Georg
(F1,F2)(F1,F21/3)
Ya, underfitting adalah yang saya maksud. Dan ya, itu akan berhasil, tetapi saya ingin algoritma mendeteksi itu secara otomatis. Saya tidak dapat memodifikasi fitur secara manual, itu harus berfungsi untuk kasus apa pun.
Georg
Berikut ini contohnya: Kedua plot menampilkan data untuk tinggi (sumbu x) dan berat (sumbu y) (Maaf untuk teks bahasa Jerman;)). Plot pertama menunjukkan hasil dari pendekatan gaussian multivariat, yang kedua dari pendekatan yang dijelaskan dalam pertanyaan. Dalam kedua kasus, ambang dipilih sehingga 97% dari data CV dianggap masuk akal. Pendekatan kedua adalah mampu menangkap kompleksitas data dengan lebih baik. 1: dl.dropboxusercontent.com/u/26034024/anomaly/gauss.png 2: dl.dropboxusercontent.com/u/26034024/anomaly/distance.png
Georg
3

Saya hampir menyelesaikan proyek di mana saya perlu menyelesaikan masalah ini dan saya ingin membagikan solusi saya, kalau-kalau ada yang punya masalah yang sama.

Pertama-tama, pendekatan yang saya jelaskan sangat mirip dengan Kernel Density Estimation . Jadi, itu baik untuk diketahui untuk penelitian ...

Fitur Independen

||x1-x2||dsayastSebuahnce(x1,x2)

Berhati-hatilah: koefisien korelasi hanya dapat mengukur korelasi linear. Lihat halaman wiki yang tertaut untuk detailnya. Jika korelasi dalam data dapat diperkirakan secara linear, ini berfungsi dengan baik. Jika tidak, Anda harus melihat halaman terakhir makalah ini dan melihat apakah Anda dapat menggunakan pengukuran korelasinya untuk menghasilkan faktor penskalaan.

Nilai diskrit

Saya menggunakan algoritma yang dijelaskan hanya untuk nilai-nilai berkelanjutan. Nilai diskrit digunakan untuk menyaring set pelatihan. Jadi jika saya memiliki tinggi dan berat badan seseorang dan saya tahu bahwa dia perempuan, saya hanya akan melihat sampel dari perempuan lain untuk memeriksa anomali.

Georg
sumber