Erkennung von Zeitreihenanomalien mit Python

9

Ich muss die Anomalieerkennung für mehrere Zeitreihendatensätze implementieren. Ich habe das noch nie gemacht und hoffte auf einen Rat. Ich bin mit Python sehr vertraut, daher würde ich es vorziehen, wenn die Lösung darin implementiert wird (der größte Teil meines Codes ist Python für andere Teile meiner Arbeit).

Beschreibung der Daten: Es handelt sich um monatliche Zeitreihendaten, deren Erfassung in den letzten 2 Jahren gerade erst begonnen hat (dh nur 24 bis 36 Zeiträume). Im Wesentlichen werden monatlich mehrere Metriken für mehrere Kunden überwacht.

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
...

Ich denke Folgendes: Ziehen Sie Daten in einen Datenrahmen (Pandas) und berechnen Sie dann einen rollierenden 6-Monats-Durchschnitt für jedes Client / Metrik-Paar. Wenn der Wert des aktuellen Zeitraums einen Schwellenwert überschreitet, der auf dem 6-Monats-Durchschnitt basiert, heben Sie das Flag an. Das Problem scheint ziemlich einfach zu sein. Ich möchte nur sicherstellen, dass ich einen soliden Ansatz verfolge.

Jeder Rat, um diese Idee ein wenig zu konkretisieren, wäre sehr dankbar. Ich weiß, dass die Frage etwas abstrakt ist, und ich entschuldige mich dafür.

Eric Miller
quelle
Ich kenne den Python-Weg nicht, aber diese Frage ist voller Ideen bezüglich der allgemeinen Ansätze: stats.stackexchange.com/questions/26688/…
Rapaio
pypi.org/project/anomaly-detection Dies ist in der Bibliothek für die Erkennung von Anomalien in Python integriert, die der Erkennung von Twitter-Anomalien ähnelt. Da Twitter Anomalieerkennung Code in R-Sprache ist. Ihr Problem ist eine kontextbezogene Anomalie. Auto.arima Modell auch
Saravanan Saminathan

Antworten:

1

Ich denke, ein Ansatz ähnlich der statistischen Prozesskontrolle mit Kontrolldiagrammen usw. könnte hier nützlich sein.

babelproofreader
quelle
Ich werde das lesen. Ist diese Methode für Zeitreihen mit kleinen Datenmengen (dh 24 Monate) geeignet?
Eric Miller
Ich habe das meiste davon gelesen. Nach dieser Methode sollte ich die 3. Standardabweichung für die Zeitreihe berechnen und eine Linie auf diesen Grenzen grafisch darstellen. Wenn ein Wert diese Grenzwerte jemals überschreitet, kennzeichnen Sie ihn. Dies ist eine Methode, die ich in Betracht gezogen hatte.
Eric Miller
1

Es gibt viele Optionen für die Erkennung von Anomalien, von einer Standardabweichung mit der Pandas-Standardabweichungsfunktion bis zu einer Bayes'schen Methode und vielen dazwischen liegenden Methoden des maschinellen Lernens wie Clustering, SVM, Gaußscher Prozess, Neuronale Netze.

Schauen Sie sich dieses Tutorial an: https://www.datascience.com/blog/python-anomaly-detection

Aus Bayes'scher Sicht empfehle ich den Facebook-Propheten. Es liefert sehr fortschrittliche Ergebnisse, ohne dass Sie ein Zeitreihenexperte sein müssen. Es bietet die Möglichkeit, an Monaten, Tagen usw. zu arbeiten, und "Unsicherheitsintervalle" helfen bei Anomalien.

Schließlich empfehle ich diesen Uber-Blog über die Verwendung von neuronalen Netzen (LSTM) zur Erkennung von Anomalien. Er enthält sehr gute Erkenntnisse: https://eng.uber.com/neural-networks/

Germán Alfaro
quelle
0

Wenn Sie davon ausgehen möchten, dass Ihr Datensatz normal verteilt ist, können Sie Quantile dieser Verteilung schätzen und feststellen, ob sie außerhalb des Quantils 95%, 80% usw. liegen. Ich bin mit Python-Bibliotheken nicht allzu vertraut, aber ich bin sicher, dass es bereits Funktionen dafür gibt.

Kevin Pei
quelle
Bei den meisten Kunden ist ein Aufwärtstrend zu verzeichnen. Ich bin nicht sicher, ob Sie die Daten zufällig nennen könnten.
Eric Miller
2
Dann nein in diesem Fall. Ich glaube, dass die Methode unter mir und Ihrer in dieser Situation gut funktionieren würde. Ich habe zuvor etwas Ähnliches getan: Nehmen Sie einen gleitenden Durchschnitt der gleitenden X-Periode und subtrahieren Sie den aktuellen Metrikwert vom gleitenden Durchschnitt. Finden Sie die Standardabweichungsgrenzen (oder verwenden Sie eine subjektive Eingabe, wenn Sie dies in diesem Szenario zufällig wissen) dieser Residuen, und alles, was über oder unter diesen Grenzen liegt, kann als Anomalie betrachtet werden. Diese Methode würde gut funktionieren, wenn ein Kunde plötzlich eine Erhöhung der Punktzahl sieht.
Kevin Pei