Automatische Schwellenwertbestimmung zur Erkennung von Anomalien


9

Ich arbeite mit einer Zeitreihe von Anomalie-Scores (Hintergrund ist die Anomalieerkennung in Computernetzwerken). Jede Minute erhalte ich einen Anomalie-Score der mir sagt, wie "unerwartet" oder abnormal der aktuelle Status des Netzwerks ist. Je höher die Punktzahl, desto abnormaler ist der aktuelle Zustand. Scores nahe 5 sind theoretisch möglich, treten jedoch fast nie auf.xt[0,5]

Jetzt möchte ich einen Algorithmus oder eine Formel entwickeln, die automatisch einen Schwellenwert für diese Anomalie-Zeitreihe bestimmt. Sobald ein Anomalie-Score diesen Schwellenwert überschreitet, wird ein Alarm ausgelöst.

Die folgende Häufigkeitsverteilung ist ein Beispiel für eine Anomalie-Zeitreihe über 1 Tag. Es ist jedoch nicht sicher anzunehmen, dass jede Anomalie-Zeitreihe so aussehen wird. In diesem speziellen Beispiel wäre eine Anomalieschwelle wie das .99-Quantil sinnvoll, da die wenigen Punkte ganz rechts als Anomalien angesehen werden können.

Geben Sie hier die Bildbeschreibung ein

Und die gleiche Häufigkeitsverteilung wie bei Zeitreihen (sie reicht nur von 0 bis 1, da es in den Zeitreihen keine höheren Anomaliewerte gibt):

Zeitfolgen

Leider kann die Häufigkeitsverteilung Formen haben, bei denen das .99-Quantil nicht nützlich ist . Ein Beispiel ist unten. Der rechte Schwanz ist sehr niedrig. Wenn also das 0,99-Quantil als Schwellenwert verwendet wird, kann dies zu vielen falsch positiven Ergebnissen führen. Diese Häufigkeitsverteilung scheint keine Anomalien zu enthalten, daher sollte der Schwellenwert bei etwa 0,25 außerhalb der Verteilung liegen.

Geben Sie hier die Bildbeschreibung ein

Zusammenfassend besteht der Unterschied zwischen diesen beiden Beispielen darin, dass das erste Anomalien zu zeigen scheint, während das zweite keine Anomalien aufweist.

Aus meiner naiven Sicht sollte der Algorithmus diese beiden Fälle berücksichtigen:

  • Wenn die Häufigkeitsverteilung einen großen rechten Schwanz hat (dh ein paar abnormale Werte), kann das 0,99-Quantil ein guter Schwellenwert sein.
  • Wenn die Häufigkeitsverteilung einen sehr kurzen rechten Schwanz hat (dh keine abnormalen Werte), sollte der Schwellenwert außerhalb der Verteilung liegen.

/ edit: Es gibt auch keine Grundwahrheit, dh beschriftete Datensätze verfügbar. Der Algorithmus ist also "blind" gegenüber der Art der Anomalie-Scores.

Jetzt bin ich mir nicht sicher, wie diese Beobachtungen in Form eines Algorithmus oder einer Formel ausgedrückt werden können. Hat jemand einen Vorschlag, wie dieses Problem gelöst werden könnte? Ich hoffe, dass meine Erklärungen ausreichen, da mein statistischer Hintergrund sehr begrenzt ist.

Danke für Ihre Hilfe!


Nur eine Anmerkung, das erste Diagramm sieht für mich nicht normal aus.
mpiktas

1
@cryptron, die Schlüsselfrage ist, was eine Schallschwelle ist . Wenn beispielsweise für jeden ausgelösten Alarm und jeden nicht ausgelösten Alarm bestimmte Kosten anfallen, kann der Schwellenwert so gewählt werden, dass die Gesamtkosten minimiert werden. Dafür benötigen wir Kostendaten. Ohne die genaue Definition des Klangs ist es unmöglich zu messen, wie die zur Auswahl des Schwellenwerts gewählte Methode zu bewerten ist.
mpiktas

@mpiktas: Ich muss zugeben, das Wort "Sound" war in diesem Zusammenhang unglücklich, weil ich keine Möglichkeit habe, den Schwellenwert rigoros zu bewerten (daher habe ich ihn weggeschnitten). Grundsätzlich soll der Schwellenwert falsch positive Ergebnisse minimieren, da diese bei der Erkennung von Netzwerkanomalien weitaus teurer sind als falsch negative Ergebnisse.
Cryptron

@cryptron, hast du irgendwelche Daten darüber, was falsch positiv ist?
mpiktas

1
Ich bin verwirrt von Ihren Verschwörungen. Dies ist eine univariate Zeitreihe mit Werten in ? Oder sollte es ? (vom Betrachten der x-Achse in Ihrem ersten Diagramm). Ein Traceplot wäre auch hilfreicher. Erhalten Sie beispielsweise über einen längeren Zeitraum oder in kurzen Stößen (oder in beiden Fällen) hohe Punktzahlen? Wenn beides, ist einer beunruhigender als der andere? Wenn Sie ein vernünftiges Modell für die Daten erstellen können, können Sie theoretische Quantile aus der angepassten Verteilung verwenden, um das Problem zu lösen, das Sie mit den Stichprobenquantilen identifiziert haben. 0 < x t5 0 < x t0,5{xt}0<xt50<xt0.5
JMS

Antworten:


2

Möglicherweise finden Sie dieses Papier von Interesse. Siehe auch detailliertere Darstellung ähnlicher Modelle in West & Harrison . Es gibt auch andere Beispiele für diese Art der Überwachung, viele davon sind neueren Datums, aber das ist nicht gerade mein Steuerhaus :). Zweifellos gibt es geeignete Implementierungen dieser Modelle, aber ich weiß nicht, was sie ohne weiteres sein könnten ...

Die Grundidee ist, dass Sie ein Schaltmodell haben, bei dem einige Beobachtungen / Beobachtungssequenzen abnormalen Netzwerkzuständen zugeordnet werden, während der Rest als normal betrachtet wird. Eine Mischung wie diese könnte für den langen rechten Schwanz in Ihrer ersten Handlung verantwortlich sein. Ein dynamisches Modell kann Sie auch in Echtzeit auf abnormale Sprünge wie 8:00 und 4:00 Uhr aufmerksam machen, indem neuen Beobachtungen, die zu einem Problemzustand gehören, eine hohe Wahrscheinlichkeit zugewiesen wird. Es könnte auch leicht erweitert werden, um Dinge wie Prädiktoren, periodische Komponenten (vielleicht steigt / fällt Ihre Punktzahl mit der Aktivität ein wenig) und dergleichen einzubeziehen.

Bearbeiten: Ich sollte auch hinzufügen, dass diese Art von Modell in dem Sinne "unbeaufsichtigt" ist, dass Anomalien entweder durch eine große mittlere Verschiebung oder durch eine Zunahme der Varianz erfasst werden. Während Sie Daten sammeln, können Sie das Modell mit informativeren vorherigen Verteilungen verbessern. Aber wenn Sie genug Daten haben (und hart erkämpfte Trainingsbeispiele durch den Umgang mit Netzwerkproblemen!), Können Sie vielleicht einige einfache Überwachungsregeln (Schwellenwerte usw.) entwickeln.


1

Haben Sie "beschriftete" Beispiele für eine Anomalie? dh Werte, die mit einem Netzwerkfehler verbunden sind, oder so etwas?

Eine Idee, die Sie möglicherweise anwenden möchten, ist eine ROC-Kurve, die nützlich ist, um Schwellenwerte auszuwählen, die bestimmte Kriterien erfüllen, z. B. das Maximieren von echten Positiven oder das Minimieren von falschen Negativen.

Um eine ROC-Kurve zu verwenden, müssen Sie Ihre Daten natürlich auf irgendeine Weise kennzeichnen.


1
Leider habe ich keine beschrifteten Datensätze. Es besteht nur die Annahme, dass lange Schwänze oder Ausreißer Anomalien im Datensatz anzeigen.
Cryptron

@ryptron Ich verstehe. Sie benötigen also eine Möglichkeit, Ausreißer dynamisch zu identifizieren.
Zach

Das würde einen Teil des Problems lösen, ja.
Cryptron

1

Der Graph der "Originalserie" muss keine vordefinierte Struktur aufweisen. Entscheidend ist, dass der Graph der "Residuen aus einer geeigneten Modellreihe" entweder eine Gaußsche Struktur aufweisen muss. Diese "Gaußsche Struktur" kann normalerweise erhalten werden, indem eine oder mehrere der folgenden "Transformationen" einbezogen werden: 1. ein Arima-MODELL 2. Anpassungen für lokale Pegelverschiebungen oder lokale Zeittrends oder saisonale Impulse oder gewöhnliche Impulse 3. eine gewichtete Analyse unter Ausnutzung der nachgewiesenen Varianzheterogenität 4. eine mögliche Leistungstransformation (Protokolle usw.) zur Bewältigung einer bestimmten Varianzheterogenität 5. Erkennung von Zeitpunkten, an denen sich das Modell / die Parameter möglicherweise geändert haben.

Die Interventionserkennung liefert eine Aussage über die statistische Signifikanz des jüngsten Ereignisses, die entweder auf Normalität oder auf eine Anomalie hindeutet


0

In der Antwort des OP auf meine vorherige Antwort hat er seine Daten ins Internet gestellt. 60 Ablesungen pro Stunde für 24 Stunden für 6 Tage . Da es sich um Zeitreihen handelt, haben Querschnittswerkzeuge wie DBSCAN eine begrenzte Relevanz, da die Daten zeitlich abhängig sind. Bei Daten wie diesen wird normalerweise nach einer Intra-Hour- und Intra-Day-Struktur gesucht. Zusätzlich zu diesen Arten von Strukturen kann man die Erkennung von Anomalien verfolgen, die entweder nur einmal (Puls) oder systematisch (Pegelverschiebung) sein können, indem man Methoden verwendet, die gut dokumentiert sind (siehe die Literatur von Tsay, Tiao, Chen et. al.) Diese Verfahren ergaben die folgenden "Anomalien". Beachten Sie, dass eine Pegelverschiebung im Wesentlichen auf separate "Cluster" hindeutet. oben identifizierte Anomalien

                                HOUR/MINUTE     TIME

-1

Nachdem mich ein Freund in die Richtung von Clustering-Algorithmen geführt hatte , stieß ich auf DBSCAN , das Cluster im n-dimensionalen Raum nach zwei vordefinierten Parametern erstellt. Die Grundidee ist dichtebasiertes Clustering, dh dichte Regionen bilden Cluster. Ausreißer werden vom Algorithmus separat zurückgegeben. Wenn DBSCAN auf mein eindimensionales Histogramm angewendet wird, kann es mir also sagen, ob meine Anomalie-Scores Ausreißer aufweisen. Hinweis: In DBSCAN ist ein Ausreißer nur ein Punkt, der keinem Cluster angehört. Während des normalen Betriebs erwarte ich, dass der Algorithmus nur einen einzigen Cluster (und keine Ausreißer) liefert.

Nach einigen Experimenten fand ich heraus, dass die Parameter gut funktionieren. Dies bedeutet, dass Punkte einen Abstand von mindestens 0,1 zum "normalen" Cluster aufweisen müssen, um als Ausreißer angesehen zu werden.ϵ0.1

Nachdem Sie Ausreißer identifiziert haben, läuft das Ermitteln des Schwellenwerts auf einfache Regeln wie:

  • Wenn der Satz Ausreißer aufweist, stellen Sie den Schwellenwert zwischen dem "normalen" und dem "Ausreißer" -Cluster so ein, dass der Spielraum für beide maximiert wird.
  • Wenn der Satz keine Ausreißer aufweist, stellen Sie den Schwellenwert eine Standardabweichung vom äußersten rechten Punkt entfernt ein.

Trotzdem danke für all die hilfreichen Antworten!


@crypton Wie geht DBSCAN mit autokorrelierten Serien um? Zum Beispiel hätte eine Zeitreihe 1,9,1,9,1,9,5 einen früheren / ungewöhnlichen Wert. Befasst es sich mit Level Shifts in der Serie oder einer Reihe möglicher Trends? Wie geht es mit saisonalen autoregressiven Daten um, bei denen die Serie, abgesehen vom Juni eines jeden Monats, "regelmäßig" ist, während die Serie jeden Juni "groß" ist? Werden die "großen Juni-Werte" als Ausreißer erkannt? Nur neugierig !
IrishStat

2
@IrishStat Grundsätzlich gruppiert DBSCAN Punkte im n-dimensionalen Raum. Daher ist seine Eignung für die Zeitreihenanalyse sehr begrenzt. Dies funktioniert für meinen Sonderfall, da ich in meinem (eindimensionalen) Histogramm nur einen einzigen Cluster erwarte. So beantworten Sie Ihre Fragen: Bei Verwendung geeigneter Parameter wird der Wert 5 Ihres Beispiels als Ausreißer erkannt. Ich nehme an, es kann sich mit Trends befassen, aber in der Zeitreihe '1, 2, 3, 4, 5, 6, 7, 2' würde der Wert 2 nicht als Ausreißer angesehen! Ich hoffe, das gibt eine ungefähre Vorstellung von den Fähigkeiten und Einschränkungen von DBSCAN.
Cryptron

1
@rypton Danke für die Info. Es scheint mir, dass wenn Sie sich auf 1 Cluster beziehen, Sie 1 und nur 1 Durchschnitt meinen. Obwohl sich die durchschnittliche Autokorrelation in Ihren Daten nicht verschiebt, werden sie zu "Zeitreihen", was darauf hindeutet, dass DBSCAN möglicherweise nicht so nützlich ist, wie Sie denken, um das Signal vom Rauschen zu trennen, was zu einer effizienten Identifizierung anamolöser Daten führt.
IrishStat

1
@crypton Es scheint mir, dass ein Cluster 1 Durchschnitt im Vergleich zu einer Zeitreihe impliziert, die 1,1,1,1,2,2,2,2 mit einigen kleinen Abweichungen um diese Werte hatte.
IrishStat

2
@crpton Ich denke, Sie verwenden ein Querschnittswerkzeug für ein Zeitreihenproblem.
Veröffentlichen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.