Anomalieerkennung in Zeitreihen

8

Ich bin ein Anfänger mit maschinellem Lernen (ich habe Ngs Kurs beendet), ich benutze Scikit-Learn in Python. Ich möchte den besten Weg finden, um Anomalien in unserem System zu erkennen.

Wir haben laufende Ereignisse, die nach einem Zeitplan auftreten (alle paar Minuten / Stunden), und ich möchte erkennen, wenn etwas Anormales passiert. Beispieldaten:

ID | epoch-time | duration (Sec) | status | is_manual

0400 | 1488801454  | 500 | completed | 1

0401 | 1488805055  | 500 | completed | 1

0402 |  1488812254  | 40000 | failed | 1

6831 | 1488805050  | 200 | failed | 0

.

... (Millions of examples)

.

0014 |  1488805055 | 1200 | completed | 0

So tritt beispielsweise die Ereignis-ID 0400 einmal pro Stunde auf. Ich möchte sagen, wann es nicht läuft.

Was ich vorhabe, ist, dem Algorithmus alle Ereignisse der letzten 10 Minuten zuzuführen.

Hauptfragen: Wie wird die ID-Spalte behandelt? Was ist der beste Ansatz, den ich wählen sollte?

XOmri
quelle
Ist Anomalie dasselbe wie ein Ausreißer? In der Statistik verwenden wir den Begriff Ausreißer, während sie in der Weltraumwissenschaft als Anomalie bezeichnet werden.
Michael R. Chernick
Unterschied zwischen Outliner und Anomalie: stats.stackexchange.com/questions/189664/…
XOmri
Können Sie etwas näher erläutern, was ein Ereignis in diesem Fall ist? Wie viele eindeutige Ereignisse sind ungefähr in Ihren Daten enthalten? Außerdem haben Sie ein Beispiel angegeben, in dem das "abnormale" Verhalten das fehlgeschlagene Ereignis war. Gibt es andere Fälle, die Sie als abnormal ansehen würden?
Deemel
@ Rickyfox Mit Ereignis meine ich eine Zeile oder Eingabe. Es war falsch, dieselbe ID für verschiedene Ereignisse zu verwenden, und ich habe sie in der Frage behoben. Abnormal wäre der Fall, wenn ein Ereignis nicht mit den vorherigen Ereignissen übereinstimmt, die basierend auf der Zeit korrelieren. Beispiel: Wenn alle 30 Sekunden ein Ereignis mit denselben Parametern auftritt (Dauer: 500, abgeschlossen, 1), ist dies abnormal, wenn nach 30 Sekunden kein Ereignis aufgetreten ist. Oder wenn es fehlgeschlagen und nicht abgeschlossen ist: Es ist auch eine Anomalie.
XOmri
Ich sehe nicht, wie du ML hier brauchst. Es scheint, als ob eine einfache bedingte Abfrage gut funktionieren sollte
Aksakal

Antworten:

1

Ich fand diesen Artikel in meinem Fall sehr hilfreich:

https://mapr.com/blog/deep-learning-tensorflow/

Mit dieser grundlegenden RNN-Struktur konnte ich das Ergebnis des nächsten Zeitschritts vorhersagen. Durch Zentrieren aller Ereignisse auf die nächste Minute konnte das Netzwerk das Muster erkennen, das innerhalb der Zeitachse korreliert.

XOmri
quelle
-4

Es gibt verschiedene Möglichkeiten, wie Sie dies angehen können. Bevor Sie mit dem Entwerfen von Modellen beginnen, standardisieren Sie Ihre Daten. Ihre Daten scheinen unbeschriftet zu sein. Sie können also zunächst eine t-SNE-Visualisierung durchführen, die Ihnen viele Einblicke in Ihre Daten gibt. Basierend auf dem Ergebnis können Sie sinnvollere Modelle entwickeln, mit denen die Stichproben in normale und Anomalien gruppiert werden können. Mehr zu t-SNE hier

S. P.
quelle
2
Willkommen bei stats.SE! Das Hilfezentrum bietet einige gute Informationen zum Stellen / Beantworten von Fragen. Detaillierte Antworten sind in der Regel am besten. Können Sie etwas näher darauf eingehen? Wie würde beispielsweise t-SNE mit Zeitreihendaten und diskreten ID-Eingaben verwendet und wie würde es zum Entwurf eines Anomalieerkennungssystems verwendet?
user20160
Ich möchte die Daten gemäß Ihrem Vorschlag mit t-SNE visualisieren, bin mir aber nicht sicher, wie weit ich damit kommen werde. Wir haben noch einige weitere Funktionen hinzuzufügen, die ich nicht erwähnt habe. Ich werde sie bearbeiten und dem Beitrag hinzufügen. Ich kann immer noch nicht herausfinden, was ich tun soll, wenn die Visualisierung funktioniert
XOmri
Darüber hinaus hängt t-SNE stark von Hyperparametern ab und bewahrt keine Abstände. Wie genau würden Sie also Ausreißer finden, die darauf basieren? Ja, es würde Sie seltsame Punkte finden lassen, aber dies wäre Kirschernte.
Tim