Penentuan ambang batas otomatis untuk deteksi anomali

9

Saya bekerja dengan serangkaian waktu skor anomali (latar belakang adalah deteksi anomali di jaringan komputer). Setiap menit, saya mendapatkan sebuah anomali mencetak yang memberitahu saya bagaimana "tak terduga" atau abnormal keadaan saat ini jaringan. Semakin tinggi skor, semakin abnormal kondisi saat ini. Skor mendekati 5 secara teori dimungkinkan tetapi terjadi hampir tidak pernah.xt[0,5]

Sekarang saya ingin membuat algoritma atau formula yang secara otomatis menentukan ambang batas untuk rangkaian waktu anomali ini. Segera setelah skor anomali melebihi ambang ini, alarm dipicu.

Distribusi frekuensi di bawah ini adalah contoh untuk rangkaian waktu anomali lebih dari 1 hari. Namun, tidak aman untuk menganggap bahwa setiap rangkaian waktu anomali akan terlihat seperti itu. Dalam contoh khusus ini, ambang anomali seperti .99-quantile akan masuk akal karena beberapa skor pada bagian paling kanan dapat dianggap sebagai anomali.

masukkan deskripsi gambar di sini

Dan distribusi frekuensi yang sama dengan deret waktu (hanya berkisar dari 0 hingga 1 karena tidak ada skor anomali yang lebih tinggi dalam deret waktu):

seri waktu

Sayangnya, distribusi frekuensi mungkin memiliki bentuk, di mana .99-quantile tidak berguna . Contohnya di bawah ini. Ekor kanan sangat rendah, jadi jika .99-quantile digunakan sebagai ambang, ini mungkin menghasilkan banyak positif palsu. Distribusi frekuensi ini tampaknya tidak mengandung anomali sehingga ambang harus berada di luar distribusi di sekitar 0,25.

masukkan deskripsi gambar di sini

Kesimpulannya, perbedaan antara dua contoh ini adalah bahwa yang pertama tampaknya menunjukkan anomali sedangkan yang kedua tidak.

Dari sudut pandang naif saya, algoritma harus mempertimbangkan dua kasus ini:

  • Jika distribusi frekuensi memiliki ekor kanan yang besar (yaitu beberapa skor abnormal), maka .99-quantile dapat menjadi ambang batas yang baik.
  • Jika distribusi frekuensi memiliki ekor kanan yang sangat pendek (yaitu tidak ada skor abnormal), maka ambang batas harus berada di luar distribusi.

/ edit: Ada juga tidak ada kebenaran dasar, yaitu set data berlabel tersedia. Jadi algoritma ini "buta" terhadap sifat skor anomali.

Sekarang saya tidak yakin bagaimana pengamatan ini dapat diungkapkan dalam hal algoritma atau formula. Adakah yang punya saran bagaimana masalah ini bisa diselesaikan? Saya harap penjelasan saya cukup karena latar belakang statistik saya sangat terbatas.

Terima kasih atas bantuan Anda!

cryptron
sumber
Sekedar catatan, grafik pertama tidak terlihat seperti sesuatu yang normal bagi saya.
mpiktas
1
@cryptron, pertanyaan kuncinya adalah apa itu ambang batas suara . Misalnya jika setiap alarm dinaikkan dan alarm tidak dinaikkan menimbulkan biaya tertentu, ambang dapat dipilih sedemikian sehingga meminimalkan total biaya. Untuk itu diperlukan data biaya. Tanpa definisi suara yang tepat , tidak mungkin untuk mengukur bagaimana mengevaluasi metode yang dipilih untuk memilih ambang batas.
mpiktas
@mpiktas: Saya harus mengakui, kata "sound" sangat disayangkan dalam konteks ini karena saya tidak punya cara untuk mengevaluasi ambang secara ketat (karenanya, saya menyuntingnya). Pada dasarnya, ambang batas seharusnya meminimalkan false positive karena jauh lebih mahal daripada false negative dalam deteksi anomali jaringan.
cryptron
@cryptron, apakah Anda memiliki data apa yang salah positif?
mpiktas
1
{xt}0<xt50<xt0.5

Jawaban:

2

Anda mungkin menemukan makalah yang menarik ini. Lihat juga presentasi yang lebih rinci dari model serupa di West & Harrison . Ada contoh lain dari jenis pemantauan ini, banyak yang lebih baru, tetapi ini bukan ruang kemudi saya :). Tidak diragukan lagi ada implementasi yang sesuai dari model-model ini, tapi saya tidak tahu apa yang mereka lakukan begitu saja ...

Ide dasarnya adalah bahwa Anda memiliki model switching di mana beberapa pengamatan / urutan pengamatan dikaitkan dengan keadaan jaringan yang tidak normal sementara sisanya dianggap normal. Campuran seperti ini dapat menjelaskan ekor kanan panjang di plot pertama Anda. Model dinamis juga bisa memperingatkan Anda untuk lompatan abnormal seperti pukul 8:00 dan 4:00 secara real-time dengan menetapkan probabilitas tinggi untuk pengamatan baru yang termasuk dalam status masalah. Bisa juga dengan mudah diperluas untuk memasukkan hal-hal seperti prediktor, komponen periodik (mungkin skor Anda naik / turun sedikit dengan aktivitas) dan hal-hal semacam itu.

Sunting: Saya juga harus menambahkan, model semacam ini "tidak diawasi" dalam arti bahwa anomali ditangkap baik dengan menunjukkan pergeseran rata-rata yang besar atau peningkatan varian. Saat Anda mengumpulkan data, Anda dapat meningkatkan model dengan distribusi sebelumnya yang lebih informatif. Tetapi mungkin begitu Anda memiliki cukup data (dan contoh pelatihan yang sulit diperoleh dengan menangani masalah jaringan!), Anda dapat menyusun beberapa aturan pemantauan sederhana (ambang batas, dll.)

JMS
sumber
1

Apakah Anda memiliki contoh 'berlabel' tentang apa yang merupakan anomali? yaitu nilai-nilai yang terkait dengan kegagalan jaringan, atau sesuatu seperti itu?

Satu ide yang mungkin Anda pertimbangkan untuk diterapkan adalah kurva ROC, yang berguna untuk memilih ambang batas yang memenuhi kriteria tertentu, seperti memaksimalkan positif sejati atau meminimalkan negatif palsu.

Tentu saja, untuk menggunakan kurva ROC, Anda perlu memberi label data Anda dengan beberapa cara.

Zach
sumber
1
Sayangnya, saya tidak memiliki set data berlabel. Hanya ada asumsi, bahwa ekor panjang atau outlier menunjukkan anomali dalam kumpulan data.
cryptron
@cryptron saya mengerti. Jadi yang Anda butuhkan adalah cara mengidentifikasi outlier secara dinamis.
Zach
Itu akan menyelesaikan sebagian dari masalah, ya.
cryptron
1

Grafik "seri asli" tidak harus memperlihatkan struktur yang telah ditentukan sebelumnya. Yang penting adalah bahwa grafik "residu dari seri model yang sesuai" perlu menunjukkan struktur gaussian. "Struktur gaussian" ini biasanya dapat diperoleh dengan memasukkan satu atau lebih dari "transformasi" berikut: 1. MODEL arima 2. Penyesuaian untuk Pergeseran Tingkat Lokal atau Tren Waktu Lokal atau Pulsa Musiman atau Pulsa Biasa 3. analisis berbobot yang mengeksploitasi heterogenitas varians yang terbukti. 4. transformasi kekuatan yang mungkin (log dll) untuk menangani heterogenitas varians tertentu 5. deteksi titik waktu di mana model / parameter mungkin telah berubah.

Deteksi Intervensi akan menghasilkan pernyataan tentang signifikansi statistik dari peristiwa terbaru yang menunjukkan normalitas atau anomali

IrishStat
sumber
0

Sebagai tanggapan OP atas jawaban saya sebelumnya, dia telah memposting datanya ke web. 60 pembacaan per jam selama 24 jam selama 6 hari . Karena ini adalah alat cross-sectional seri waktu seperti DBSCAN memiliki relevansi terbatas karena data memiliki ketergantungan temporal. Dengan data seperti ini biasanya mencari struktur intra-jam dan intra-hari. Selain jenis struktur ini seseorang dapat mengejar deteksi anomali yang dapat berupa satu kali saja (denyut nadi) atau bersifat sistematis (pergeseran level) menggunakan metode yang didokumentasikan dengan baik (lihat literatur Tsay, Tiao, Chen et. al.) Prosedur-prosedur ini menghasilkan "anomali-anomali" berikut. Perhatikan bahwa perubahan level pada dasarnya menunjukkan "kelompok" yang terpisah. anomali diidentifikasi atas

                                HOUR/MINUTE     TIME
IrishStat
sumber
-1

Setelah seorang teman saya mengarahkan saya ke arah algoritma clustering , saya menemukan DBSCAN yang membangun cluster dalam ruang n-dimensi berdasarkan dua parameter yang telah ditentukan. Ide dasarnya adalah pengelompokan berbasis kepadatan, yaitu daerah padat membentuk kelompok. Pencilan dikembalikan secara terpisah oleh algoritma. Jadi, ketika diterapkan pada histogram 1 dimensi saya, DBSCAN dapat memberi tahu saya, apakah skor anomali saya menampilkan outlier. Catatan: Di DBSCAN, pencilan hanyalah titik yang bukan milik kelompok mana pun. Selama operasi normal, saya berharap algoritma hanya menghasilkan satu cluster (dan tidak ada outlier).

ϵ0.1

Setelah dapat mengidentifikasi pencilan, menemukan ambang batas bermuara pada aturan sederhana seperti:

  • Jika himpunan menunjukkan outlier, atur ambang antara kluster "normal" dan "outlier" sehingga margin untuk keduanya dimaksimalkan.
  • Jika set tidak menunjukkan outlier, atur ambang batas satu standar deviasi dari titik kanan terluar.

Bagaimanapun, terima kasih atas semua balasan yang bermanfaat!

cryptron
sumber
@crypton Bagaimana DBSCAN menangani seri autocorrelated. Misalnya deret waktu 1,9,1,9,1,9,5 akan memiliki nilai yang lebih awal / tidak biasa. Apakah ini berurusan dengan Level Shift dalam seri atau sejumlah tren yang mungkin? Bagaimana cara berurusan dengan data autoregresif musiman di mana selain mengatakan Juni setiap bulan seri adalah "biasa" sedangkan setiap Juni seri adalah "besar". Apakah "nilai-nilai Juni yang besar" terdeteksi sebagai outlier? Hanya penasaran !
IrishStat
2
@IrishStat Pada dasarnya, cluster DBSCAN menunjuk pada ruang n-dimensional. Jadi kesesuaiannya untuk analisis deret waktu sangat terbatas. Ini berfungsi untuk kasus khusus saya karena saya hanya mengharapkan satu cluster dalam histogram (1-dimensi) saya. Untuk menjawab pertanyaan Anda: Saat menggunakan parameter yang sesuai, nilai 5 dari contoh Anda akan terdeteksi sebagai outlier. Saya kira itu bisa berurusan dengan tren, tetapi dalam deret waktu '1, 2, 3, 4, 5, 6, 7, 2', nilai 2 tidak akan dianggap sebagai outlier! Saya harap, itu memberikan gambaran kasar tentang kemampuan dan keterbatasan DBSCAN.
cryptron
1
@crypton Terima kasih atas informasinya. Tampak bagi saya bahwa ketika Anda merujuk ke 1 cluster, Anda berarti 1 dan hanya 1 rata-rata. Meskipun tidak ada perubahan dalam autokorelasi rata-rata dalam data Anda, ia menjadikannya "deret waktu" yang menunjukkan bahwa DBSCAN mungkin tidak berguna seperti yang Anda pikirkan untuk memisahkan sinyal dari noise yang mengarah ke identifikasi data anamolous yang efisien.
IrishStat
1
@crypton Tampak bagi saya bahwa satu cluster menyiratkan 1 rata-rata dibandingkan dengan serangkaian waktu yang mengatakan 1,1,1,1,2,2,2,2 dengan beberapa penyimpangan kecil di sekitar nilai-nilai ini.
IrishStat
2
@ crpton Saya pikir Anda menggunakan alat cross-sectional untuk masalah deret waktu. Posting data aktual dan saya akan mencoba untuk menunjukkan deteksi anomali kepada Anda dengan analisis deret waktu
IrishStat