Python ile Zaman Serisi Anomali Tespiti


10

Birkaç zaman serisi veri kümesinde anomali tespiti uygulamam gerekiyor. Bunu daha önce hiç yapmadım ve tavsiye almayı umuyordum. Ben python ile çok rahat, bu yüzden çözüm uygulanmasını tercih ederdim (benim kod çoğu işimin diğer bölümleri için python olduğunu).

Verilerin açıklaması: Son 2 yılda toplanmaya başlanan aylık zaman serisi verileri (yani sadece 24-36 zaman diliminde). Temel olarak, birkaç müşteri için aylık olarak izlenen birkaç metrik vardır.

time_period    client    metric    score
01-2013        client1   metric1   100
02-2013        client1   metric1   119
01-2013        client2   metric1   50
02-2013        client2   metric2   500
...

İşte düşündüğüm şey: verileri bir veri çerçevesine (pandalar) çekin, ardından her bir müşteri / metrik çifti için yuvarlanan 6 aylık bir ortalama hesaplayın. Geçerli zaman diliminin değeri 6 aylık ortalamaya göre bir eşiği aşarsa, bayrağı yükseltin. Sorun oldukça basit görünüyor. Sadece sağlam bir yaklaşım benimsediğimden emin olmak istiyorum.

Bu fikri biraz dışlamak için herhangi bir tavsiye büyük mutluluk duyacağız. Sorunun biraz soyut olduğunu biliyorum ve bunun için özür dilerim.


Python yolunu bilmiyorum, ancak bu soru genel yaklaşımlarla ilgili fikirlerle dolu: stats.stackexchange.com/questions/26688/…
rapaio

pypi.org/project/anomaly-detection Bu, python'da twitter anomali tespitine benzer anomali tespiti için kütüphanede oluşturulmuştur. Twitter anomalisi algılama kodu R dilinde olduğundan. Sorununuz bağlamsal bir anomali. Auto.arima model çok
saravanan saminathan

Yanıtlar:


1

İstatistiksel süreç kontrolüne benzer , kontrol çizelgeleri vb. Yaklaşımların burada yararlı olabileceğini düşünüyorum.


Bunu okuyacağım. Bu yöntem az miktarda veri içeren (yani 24 ay) zaman serileri için iyi mi?
Eric Miller

çoğu okumayı bitirdi. Bu yönteme göre, zaman serileri için 3. standart sapmayı hesaplamalı ve bu sınırlar üzerine bir çizgi çizmeliyim. Bir değer bu sınırları aşarsa, o değeri işaretleyin. Bu benim düşündüğüm bir yöntem.
Eric Miller

1

Pandas std sapma işlevini kullanan standart sapmadan Bayesian yöntemine ve kümeleme, SVM, Gauss Süreci, Sinir ağları arasında birçok Makine öğrenme yöntemine kadar anomali tespiti için birçok seçenek vardır.

Bu eğiticiye bir göz atın: https://www.datascience.com/blog/python-anomaly-detection

Bayesci bakış açısıyla Facebook Peygamberimi tavsiye ederim. Zaman serisi uzmanı olmanıza gerek kalmadan çok gelişmiş sonuçlar verir. Aylar, günler vb. Üzerinde çalışma seçenekleri ve anormalliklerle ilgili "belirsizlik aralıkları" yardımı vardır.

Son olarak, anormallik tespiti için Sinir ağlarını (LSTM) kullanma hakkında bu Uber blogunu tavsiye ederim, çok mal anlayışına sahip: https://eng.uber.com/neural-networks/


0

Veri kümenizin normal olarak dağıtıldığını varsaymak istiyorsanız, bu dağılımın miktarlarını tahmin edebilir ve örneğin% 95,% 80 vb. Python kütüphanelerine çok aşina değilim ama bunun için zaten inşa edilmiş fonksiyonlar olduğundan eminim.


Çoğu müşteri için artış eğilimi var. Verileri rastgele çağırabileceğinizden emin değilim.
Eric Miller

2
O zaman bu durumda hayır. Ben aşağıdaki yöntemin benim ve sizin bu durumda iyi çalışacağına inanıyorum. Daha önce buna benzer bir şey yaptım: hareketli bir X periyodu hareketli ortalaması alın, mevcut metrik değerini hareketli ortalamadan çıkarın. Bu kalıntıların standart sapma sınırlarını bulun (veya bu senaryoda biliyorsanız, öznel bir girdi kullanın) ve bu sınırların üstünde veya altında herhangi bir anomali olarak kabul edilebilir. Bir müşteri aniden bir puan artışı görürse bu yöntem iyi çalışır.
Kevin Pei
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.