Latar Belakang
Saya bekerja di Pusat Operasi Jaringan, kami memantau sistem komputer dan kinerjanya. Salah satu metrik utama untuk dipantau adalah sejumlah pengunjung \ pelanggan yang saat ini terhubung ke server kami. Untuk membuatnya terlihat, kami (tim Ops) mengumpulkan metrik seperti data deret waktu dan menggambar grafik. Graphite memungkinkan kita melakukannya, ia memiliki API yang cukup kaya yang saya gunakan untuk membangun sistem peringatan untuk memberi tahu tim kami jika tiba-tiba turun (kebanyakan) dan perubahan lainnya terjadi. Untuk saat ini saya telah menetapkan ambang statis berdasarkan nilai rata-rata tetapi tidak berfungsi dengan baik (ada banyak false-positif) karena beban yang berbeda di siang hari dan minggu (faktor musiman).
Itu terlihat seperti ini:
Data aktual (contoh untuk satu metrik, rentang waktu 15 menit; angka pertama adalah sejumlah pengguna, cap kedua kali):
[{"target": "metric_name", "datapoints": [[175562.0, 1431803460], [176125.0, 1431803520], [176125.0, 1431803580], [175710.0, 1431803640], [175710.0, 1431803700], [175733.0, 1431803760], [175733.0, 1431803820], [175839.0, 1431803880], [175839.0, 1431803940], [175245.0, 1431804000], [175217.0, 1431804060], [175629.0, 1431804120], [175104.0, 1431804180], [175104.0, 1431804240], [175505.0, 1431804300]]}]
Apa yang saya coba capai
Saya telah membuat skrip Python yang menerima titik data baru-baru ini, membandingkannya dengan rata-rata historis dan peringatan jika ada perubahan atau penurunan mendadak. Karena ambang "statis" musiman tidak berfungsi dengan baik dan skrip menghasilkan lansiran positif palsu. Saya ingin meningkatkan algoritme peringatan menjadi lebih tepat dan membuatnya bekerja tanpa menyetel ambang peringatan secara konstan.
Saran apa yang saya butuhkan dan hal-hal yang saya temukan
Dengan googling saya pikir saya sedang mencari algoritma pembelajaran mesin untuk deteksi anomali (yang tidak diawasi). Penyelidikan lebih lanjut menunjukkan bahwa ada banyak dari mereka dan sangat sulit untuk memahami mana yang berlaku dalam kasus saya. Karena pengetahuan matematika saya yang terbatas, saya tidak dapat membaca karya ilmiah yang canggih dan saya mencari sesuatu yang sederhana untuk pemula di bidangnya.
Saya suka Python dan terbiasa dengan R sedikit, jadi saya akan senang melihat contoh untuk bahasa ini. Harap rekomendasikan buku atau artikel bagus yang akan membantu saya untuk menyelesaikan masalah saya. Terima kasih atas waktu Anda dan permisi untuk deskripsi yang panjang
Tautan yang bermanfaat
Pertanyaan serupa:
- Deret waktu dan deteksi anomali
- Deteksi Anomali Time Series dengan Python
- Anomali seri waktu
- Algoritma untuk Deteksi Anomali Seri Waktu
- Aplikasi wavelet untuk algoritma deteksi anomali berbasis seri waktu
- Algoritme mana yang harus saya gunakan?
Sumber daya eksternal:
auto.arima
fungsi dari forecast
paket R yang sangat baik (lihat jstatsoft.org/v27/i03/paper ). Anda dapat menyetel tingkat kepercayaan dengan menyesuaikan level
parameter, misalnya data.model <- auto.arima(data.zoo, ic = c("bic")); data.prediction.warningLimits <- forecast(data.model, h=1, level=0.99)
.