Arka fon
Network Operations Center'da çalışıyorum, bilgisayar sistemlerini ve performanslarını izliyoruz. İzlenecek kilit ölçütlerden biri, şu anda sunucularımıza bağlı bir dizi ziyaretçi \ müşterisidir. Bunu görünür kılmak için (Ops ekibi) zaman serisi verileri gibi metrikleri topluyoruz ve grafikler çiziyoruz. Grafit bunu yapmamızı sağlıyor, ani düşüşler (çoğunlukla) ve diğer değişiklikler meydana gelirse ekibimize bildirmek için uyarı sistemi oluşturmak için kullandığım oldukça zengin bir API'ye sahip. Şimdilik avg değerini temel alan statik bir eşik belirledim, ancak gün ve hafta boyunca farklı yükler nedeniyle (mevsimsellik faktörü) çok iyi çalışmıyor (birçok yanlış pozitif var).
Bu gibi bir şey görünüyor:
Gerçek veriler (bir metrik için bir örnek, 15 dakikalık bir zaman aralığı; ilk sayı bir kullanıcı sayısı, ikinci zaman damgası):
[{"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]]}]
Ne yapmaya çalışıyorum
Son veri noktalarını alan, bunları geçmiş ortalama ile karşılaştıran ve ani bir değişiklik veya düşüş olursa uyarıları içeren bir Python betiği oluşturdum. Mevsimsellikten dolayı "statik" eşik değeri iyi çalışmaz ve script yanlış pozitif uyarılar oluşturur. Daha hassas olması için bir uyarı algoritmasını geliştirmek ve uyarı eşiğini sürekli ayarlamadan çalışmasını sağlamak istiyorum.
Neye ihtiyacım var ve keşfettiğim şeyler
Google tarafından, anormallik tespiti için (denetimsiz olanlar) makine öğrenme algoritmaları aradığımı düşündüm. Daha ileri araştırmalar bunlardan ton olduğunu gösterdi ve benim durumumda hangisinin uygulanabilir olduğunu anlamak çok zor. Sınırlı matematik bilgimden dolayı, sofistike bilim yazıları okuyamıyorum ve bu alanda yeni başlayanlar için basit bir şey arıyorum.
Python'u seviyorum ve biraz R ile tanıştım, bu yüzden bu dillere ait örnekleri görmekten mutlu olacağım. Lütfen sorunumu çözmeme yardımcı olacak iyi bir kitap veya makale önerin. Zaman ayırdığınız için teşekkür ederim ve bu kadar uzun bir açıklama için özür dilerim.
Kullanışlı bağlantılar
Benzer sorular:
- Zaman serileri ve anomali tespiti
- Python ile Zaman Serileri Anomalisi Tespiti
- Zaman serileri anomalileri
- Zaman Serileri Anomalisi Tespiti için Algoritmalar
- Dalgacıkların zaman serisi temelli anomali tespit algoritmalarına uygulanması
- Hangi algoritmayı kullanmalıyım?
Dış kaynaklar:
auto.arima
R'nin mükemmel forecast
paketindeki işlevi kullanarak sürekli periyodik tahminler oluşturarak uyarıları ayarlamaktı (bkz. Jstatsoft.org/v27/i03/paper ). level
Parametreyi ayarlayarak güven seviyelerini ayarlayabilirsiniz , örn data.model <- auto.arima(data.zoo, ic = c("bic")); data.prediction.warningLimits <- forecast(data.model, h=1, level=0.99)
.