Sunday 2 July 2017

Moving Average Outlier Detection

Ich arbeite mit einer großen Menge an Zeitreihen. Diese Zeitreihen sind grundsätzlich Netzwerkmessungen, die alle 10 Minuten kommen, und einige von ihnen sind periodisch (d. h. die Bandbreite), während ein anderer Arent (d. h. die Menge an Routing-Verkehr). Ich möchte eine einfache Algorithmus für eine Online-Outlier-Erkennung. Grundsätzlich möchte ich die gesamten historischen Daten für jede Zeitreihe im Speicher (oder auf der Festplatte) speichern und jeden Ausreißer in einem Live-Szenario (jedesmal, wenn ein neues Sample erfasst wird) erkennen. Was ist der beste Weg, um diese Ergebnisse zu erzielen Im derzeit mit einem gleitenden Durchschnitt, um etwas Rauschen zu entfernen, aber dann was nächsten Einfache Dinge wie Standardabweichung, verrückt. Gegen den ganzen Datensatz funktioniert nicht gut (ich kann nicht davon ausgehen, die Zeitreihen sind stationär), und ich möchte etwas genauer, idealerweise eine Black Box wie: double outlierdetection (double vector, double value), wo Vektor ist das Array von Doppel-enthalten Die historischen Daten, und der Rückgabewert ist die Anomaly-Score für den neuen Sample-Wert. Ja, ich habe angenommen, dass die Frequenz bekannt und spezifiziert ist. Es gibt Methoden, um die Frequenz automatisch abzuschätzen, aber das würde die Funktion erheblich komplizieren. Wenn Sie die Frequenz abschätzen müssen, versuchen Sie, eine separate Frage darüber zu stellen - und ich werde wahrscheinlich eine Antwort geben. Aber es braucht mehr Platz, als ich in einem Kommentar zur Verfügung habe. Ndash Rob Hyndman Eine gute Lösung wird mehrere Zutaten, darunter: Verwenden Sie eine resistente, bewegende Fenster glatt, um Nichtstationarität zu entfernen. Re-Express die ursprünglichen Daten, so dass die Residuen in Bezug auf die glatte sind etwa symmetrisch verteilt. Angesichts der Natur Ihrer Daten, seine wahrscheinlich, dass ihre Quadratwurzeln oder Logarithmen würde symmetrische Residuen geben. Wenden Sie Steuerkartenmethoden oder zumindest Steuerelementdiagramm auf die Residuen an. Soweit das letzte geht, zeigt das Kontrolldiagramm-Denken, dass herkömmliche Schwellen wie 2 SD oder das 1,5-fache des IQR über die Quartile schlecht funktionieren, weil sie zu viele falsche Out-of-Control-Signale auslösen. Die Leute benutzen normalerweise 3 SD in der Kontrollkartenarbeit, woher 2.5 (oder sogar 3) mal die IQR jenseits der Quartile ein guter Ausgangspunkt wäre. Ich habe mehr oder weniger die Art der Rob Hyndmans-Lösung skizziert, während ich zwei wesentliche Punkte hinzufüge: die potenzielle Notwendigkeit, die Daten erneut auszudrücken und die Weisheit, konservativer bei der Signalisierung eines Ausreißers zu sein. Im nicht sicher, dass Loess ist gut für einen Online-Detektor, aber, weil es nicht gut funktioniert an den Endpunkten. Sie könnten stattdessen etwas so einfaches wie ein bewegter Medianfilter verwenden (wie bei Tukeys resistentes Glätten). Wenn Ausreißer nicht in Bursts kommen, können Sie ein schmales Fenster verwenden (5 Datenpunkte, die vielleicht nur mit einem Burst von 3 oder mehr Ausreißern innerhalb einer Gruppe von 5 aufbrechen). Sobald Sie die Analyse durchgeführt haben, um eine gute Re-Expression der Daten zu bestimmen, ist es unwahrscheinlich, youll müssen die Re-Expression ändern. Daher muss Ihr Online-Detektor wirklich nur auf die jüngsten Werte (das neueste Fenster) verweisen, weil es nicht die früheren Daten verwenden. Wenn Sie wirklich lange Zeitreihen haben, könnten Sie weiter gehen, um Autokorrelation und Saisonalität (wie wiederkehrende tägliche oder wöchentliche Schwankungen) zu analysieren, um das Verfahren zu verbessern. Antwort # 1 am: August 25, 2010, 10:31:13 am »IQR ist Tukey39s ursprüngliche Empfehlung für die längsten Schnurrhaare auf einem Boxplot und 3 IQR ist seine Empfehlung für die Kennzeichnung von Punkten als quotfar outliersquot (ein Riff auf einer beliebten 6039s Phrase). Dies ist in viele Boxplot-Algorithmen eingebaut. Die Empfehlung wird theoretisch in Hoaglin, Mosteller, amp Tukey, Understanding Robust und Exploratory Data Analysis analysiert. Ndash whuber 9830 Oct 9 12 at 21:38 Das bestätigt Zeitreihen-Daten, die ich versucht habe zu analysieren. Fenster Durchschnitt und auch ein Fenster Standardabweichungen. ((X - avg) / sd) gt 3 scheinen die Punkte zu sein, die ich als Ausreißer markieren möchte. Nun zumindest als Ausreißer zu warnen, kennzeichnen ich etwas höher als 10 sd als extreme Fehler Ausreißer. Das Problem, das ich eingehen ist, was ist eine ideale Fensterlänge I39m spielen mit etwas zwischen 4-8 Datenpunkte. Ndash NeoZenith Jun 29 at 8:00 Neo Ihre beste Wette kann sein, um mit einer Teilmenge Ihrer Daten experimentieren und bestätigen Sie Ihre Schlussfolgerungen mit Tests auf dem Rest. Sie könnten auch eine formale Kreuzvalidierung durchführen, aber aufgrund der Interdependenz aller Werte ist besondere Sorgfalt bei den Zeitreihendaten erforderlich. Ndash whuber 9830 Jun 29 at 12:10 (Diese Antwort antwortete auf eine doppelte (jetzt geschlossene) Frage beim Erkennen von herausragenden Ereignissen, die einige Daten in grafischer Form präsentierten.) Die Ausreißererkennung hängt von der Art der Daten und von dem ab, was du willst Übernehmen. Allgemeingültige Methoden beruhen auf robusten Statistiken. Der Geist dieser Vorgehensweise besteht darin, den Großteil der Daten in einer Weise zu charakterisieren, die nicht durch irgendwelche Ausreißer beeinflusst wird und dann auf individuelle Werte hinweist, die nicht in diese Charakterisierung passen. Da es sich um eine Zeitreihe handelt, fügt es die Komplikation hinzu, dass Ausreißer kontinuierlich (neu) erkannt werden müssen. Wenn dies geschieht, wenn die Serie entfaltet, dann dürfen wir nur ältere Daten für die Erkennung verwenden, nicht für zukünftige Daten. Darüber hinaus möchten wir als Schutz gegen die vielen wiederholten Tests eine Methode verwenden, die eine sehr niedrige falsch hat Positive Rate. Diese Überlegungen deuten darauf hin, dass ein einfacher, robuster beweglicher Fensterausreißertest über die Daten ausgeführt wird. Es gibt viele Möglichkeiten, aber eine einfache, leicht verständliche und leicht umsetzbare basiert auf einer laufenden MAD: medianen absoluten Abweichung vom Median. Dies ist ein stark robustes Maß für die Variation innerhalb der Daten, ähnlich einer Standardabweichung. Ein Outside Peak wäre mehrere MADs oder höher als der Median. Es gibt noch einige Tuning getan werden. Wie viel von einer Abweichung von der Masse der Daten betrachtet werden sollte outlying und wie weit zurück in der Zeit sollte man aussehen Lassen Sie diese als Parameter für das Experimentieren. Heres eine R-Implementierung angewendet auf Daten x (1,2, ldots, n) (mit n1150, um die Daten zu emulieren) mit entsprechenden Werten y: Angewendet auf eine Datenmenge wie die rote Kurve in der Frage dargestellt, erzeugt es dieses Ergebnis: Die Daten Werden in rot dargestellt, das 30-Tage-Fenster der median5MAD-Schwellen grau und die Ausreißer - die einfach jene Datenwerte über der grauen Kurve - schwarz sind. (Die Schwelle kann erst beginnend am Anfang des Anfangsfensters berechnet werden, für alle Daten innerhalb dieses Anfangsfensters wird der erste Schwellwert verwendet, weshalb die graue Kurve zwischen x0 und x30 flach ist.) Die Auswirkungen der Änderung der Parameter sind (A) die Erhöhung des Wertes des Fensters dazu neigt, die graue Kurve zu glätten, und (b) die ansteigende Schwelle die graue Kurve erhöht. Wissend, kann man ein anfängliches Segment der Daten nehmen und schnell die Werte der Parameter identifizieren, die am besten die äußeren Peaks vom Rest der Daten segregieren. Übernehmen Sie diese Parameterwerte, um den Rest der Daten zu überprüfen. Wenn ein Diagramm zeigt, dass sich die Methode im Laufe der Zeit verschlechtert, bedeutet dies, dass sich die Daten ändern und die Parameter möglicherweise neu eingestellt werden müssen. Beachten Sie, wie wenig diese Methode über die Daten annimmt: Sie müssen nicht normal verteilt sein, sie brauchen keine Periodizität zu zeigen, die sie selbst nicht negativ sein müssen. Sie geht davon aus, dass sich die Daten in vernünftiger Weise über die Zeit verhalten und dass die äußeren Peaks sichtbar höher sind als die restlichen Daten. Wenn jemand möchte experimentieren (oder vergleichen Sie eine andere Lösung, die hier angeboten wird), hier ist der Code, den ich verwendet, um Daten wie die in der Frage gezeigt. Ich vermute, anspruchsvolle Zeitreihen-Modell wird nicht für Sie arbeiten, weil die Zeit dauert es zu erkennen Ausreißer mit dieser Methode. Daher ist hier ein Workaround: Zuerst legen Sie eine Baseline normalen Verkehrsmuster für ein Jahr auf der Grundlage der manuellen Analyse von historischen Daten, die für die Zeit des Tages, Wochentag vs Wochenende, Monat des Jahres usw. Verwenden Sie diese Grundlinie zusammen mit einigen einfachen Mechanismus (Z. B. gleitender Durchschnitt von Carlos vorgeschlagen), um Ausreisser zu erkennen. Sie können auch die statistische Prozesskontrolle Literatur für einige Ideen überprüfen. Ja, das ist genau das, was ich tue: Bis jetzt habe ich das Signal manuell in Perioden aufgeteilt, so dass ich für jeden von ihnen ein Konfidenzintervall definieren kann, innerhalb dessen das Signal stationär sein soll und deshalb kann ich Standardmethoden verwenden Als Standardabweichung. Das eigentliche Problem ist, dass ich das erwartete Muster für alle Signale, die ich analysieren muss, nicht entscheiden kann, und das ist der Grund, warum ich nach etwas Intelligenterem suche. Ndash gianluca Hier ist eine einzige Idee: Schritt 1: Implementieren und Schätzen eines generischen Zeitreihenmodells auf einer einmaligen Basis basierend auf historischen Daten. Dies kann offline geschehen. Schritt 2: Verwenden Sie das resultierende Modell, um Ausreißer zu erkennen. Schritt 3: Bei einer gewissen Häufigkeit (eventuell jeden Monat) das Zeitreihenmodell neu kalibrieren (dies kann offline geschehen), so dass die Erkennung von Ausreißern im Schritt 2 nicht zu viel mit den aktuellen Verkehrsmustern zu tun hat. Würde die Arbeit für Ihren Kontext ndash user28 Aug 2 10 am 22:24 Ja, könnte dies funktionieren. Ich dachte über einen ähnlichen Ansatz (Neuberechnung der Grundlinie jede Woche, die CPU-intensiv sein kann, wenn Sie Hunderte von univariate Zeitreihen zu analysieren haben). BTW die echte schwierige Frage ist, was ist die beste Blackbox-Stil-Algorithmus für die Modellierung eines völlig generischen Signal, unter Berücksichtigung Rauschen, Trendschätzung und Saisonalität. AFAIK, jeder Ansatz in der Literatur erfordert eine wirklich harte Quoteparameter Tuningquot Phase, und die einzige automatische Methode fand ich ein ARIMA-Modell von Hyndman (robjhyndman / Software / Prognose). Bin ich etwas fehlt ndash gianluca Auch dies funktioniert ziemlich gut, wenn das Signal soll eine Saisonalität wie die haben, aber wenn ich eine völlig andere Zeitreihe (dh die durchschnittliche TCP Rundreise Zeit im Laufe der Zeit ), Wird diese Methode nicht funktionieren (da es besser wäre, diese mit einer einfachen globalen Mittelwert und Standardabweichung unter Verwendung eines Schiebefensters zu behandeln, das historische Daten enthält). Ndash gianluca Es sei denn, Sie sind bereit, ein allgemeines Zeitreihenmodell (das in seiner Nachteile in Bezug auf Latenz usw. bringt) zu implementieren. Ich bin pessimistisch, dass Sie eine allgemeine Umsetzung finden, die zugleich einfach genug ist Um für alle möglichen Zeitreihen zu arbeiten. Ich weiß, eine gute Antwort könnte sein, so können Sie die Periodizität des Signals zu schätzen, und entscheiden Sie den Algorithmus nach itquot verwenden, aber ich didn39t finden eine wirklich gute Lösung für diese andere Problem (Ich spielte ein bisschen mit Spektralanalyse mit DFT und Zeitanalyse mit der Autokorrelation Funktion, aber meine Zeitreihe enthält eine Menge von Rauschen und solche Methoden geben einige verrückte Ergebnisse die meisten der Zeit) ndash gianluca Aug 2 10 am 22:06 A Kommentar zu Ihrem letzten Kommentar: that39s, warum I39m auf der Suche nach einem generischen Ansatz, aber ich brauche eine Art von quotblack boxquot, weil ich can39t keine Annahme über das analysierte Signal, und daher kann ich nicht die quotbest Parametersatz für die Lernalgorithmquot erstellen. Ndash gianluca Da es sich um eine Zeitreihen-Daten, eine einfache exponentielle Filter de. wikipedia. org/wiki/Exponentialsmoothing glättet die Daten. Es ist ein sehr guter Filter, da Sie nicht brauchen, um alte Datenpunkte zu akkumulieren. Vergleichen Sie jeden neu geglätteten Datenwert mit seinem nicht geglätteten Wert. Sobald die Abweichung eine bestimmte vordefinierte Schwelle überschreitet (je nachdem, was Sie glauben, ein Ausreißer in Ihren Daten ist), dann kann Ihr Ausreißer leicht erkannt werden. Sie können die Standardabweichung der letzten N Messungen (Sie haben, um eine geeignete N wählen) verwenden. Ein guter Anomalie-Score wäre, wie viele Standardabweichungen eine Messung aus dem gleitenden Durchschnitt ist. Ich danke Ihnen für Ihre Antwort, aber was ist, wenn das Signal eine hohe Saisonalität zeigt (dh eine Menge von Netzwerk-Messungen sind durch eine tägliche und wöchentliche Muster zur gleichen Zeit, zum Beispiel Nacht vs Tag oder Wochenende gekennzeichnet Vs Arbeitstagen) Ein Ansatz, der auf Standardabweichung basiert, wird in diesem Fall nicht funktionieren. Ndash gianluca ZB wenn ich ein neues Beispiel alle 10 Minuten erhalte und I39m, das eine Ausreißererkennung der Netzbandbreite Gebrauch einer Firma tut, im Grunde um 18 Uhr diese Maßnahme unten fallen wird (dieses ist ein erwartet Ein normales Gesamtmuster), und eine Standardabweichung, die über einem Schiebefenster berechnet wird, schlägt fehl (weil es eine Warnung sicher auslöst). Zur gleichen Zeit, wenn die Maßnahme fällt um 16 Uhr (abweichend von der üblichen Grundlinie), ist dies ein echter Ausreißer. Ndash gianluca Aug 2 10 at 20:58 was ich tue ist die Gruppe von Messungen von Stunde und Wochentag und vergleichen Standardabweichungen davon. Immer noch nicht korrigieren für Dinge wie Urlaub und Sommer / Winter Saisonalität aber seine richtige die meiste Zeit. Der Nachteil ist, dass Sie wirklich brauchen, um ein Jahr oder so von Daten zu sammeln, um genug, so dass stddev beginnt Sinn zu sammeln. Die Spektralanalyse erkennt die Periodizität in stationären Zeitreihen. Der Frequenzbereich Ansatz auf der Grundlage der spektralen Dichte Schätzung ist ein Ansatz, den ich als erster Schritt empfehlen würde. Wenn für bestimmte Perioden Unregelmäßigkeit bedeutet einen viel höheren Peak als typisch für diesen Zeitraum dann die Serie mit solchen Unregelmäßigkeiten wäre nicht stationär und Spektralanolyse wäre nicht angemessen. Aber vorausgesetzt, Sie haben die Periode, die die Unregelmäßigkeiten, die Sie in der Lage sein, um zu bestimmen, was die normale Höhe Höhe wäre, und dann können Sie einen Schwellenwert auf einem Niveau über diesem Durchschnitt, um die irregulären Fälle zu bestimmen. Ich schlage vor, das Schema unten, die implementiert werden sollte in einem Tag oder so: Sammeln Sie so viele Samples wie Sie im Speicher halten können Offensichtliche Ausreißer mit der Standardabweichung für jedes Attribut berechnen und speichern Sie die Korrelationsmatrix Und auch der Mittelwert jedes Attributes Berechnen und speichern Sie die Mahalanobis-Abstände aller Ihrer Proben Berechnen Ausreißer: Für die einzelne Probe, von denen Sie wissen wollen, ihre Ausreißer: Abrufen der Mittel, Kovarianzmatrix und Mahalanobis Abstand s aus dem Training Berechnen Sie die Mahalanobis Abstand d Für Ihre Probe Geben Sie das Perzentil, in dem d fällt (mit dem Mahalanobis Distanzen aus dem Training) Das wird Ihre Outlier Punktzahl: 100 ist ein extremer Ausreißer. PS. Bei der Berechnung der Mahalanobis Distanz. Verwenden Sie die Korrelationsmatrix, nicht die Kovarianzmatrix. Dies ist robuster, wenn die Probenmessungen in Einheit und Anzahl variieren. Trend-Schätzer und seine Anwendung in Outlier-Erkennung Dies ist die Follow-up der letzten Post auf Fraud Detection Overview. In diesem Artikel werden wir uns auf die Zeitreihendaten und einige Methoden konzentrieren, um Ausreißer in Zeitreihendaten zu finden. Zeitreihen-Daten Zeitreihen-Daten Zeitreihen sind definiert als eine Sammlung von Datenpunkten, die über ein kontinuierliches Zeitintervall beobachtet wird. Zeitreihendaten werden häufig verwendet, um die Änderungen der Daten über die Zeit zu finden. Zum Beispiel können wir messen, wie viel Kalorien wir jeden Tag verbrannt haben, um zu sehen, ob wie fit wir sind, könnten wir auch das Geld berechnen, das wir jeden Tag ausgegeben haben, um unser Ausgabenverhalten zu finden. Wechselstube (Euro in VN). Quelle: google Die obige Abbildung, wenn ein Beispiel von Zeitreihen-Daten (dargestellt durch das Liniendiagramm auf der rechten Seite). Wir könnten auch viele andere Features in der Grafik zu identifizieren. Zum Beispiel, wenn man die Grafik betrachtet, konnten wir feststellen, dass nach 5 Jahren der Wert von Euro reduziert wurde (von 30.000 VND auf 25.000 VND). Darüber hinaus gab es Ende 2014 drastische Veränderungen (was ihrer Krise entspricht). Auch der Trend der Daten im letzten Jahr konnte identifiziert werden. Was ist ein Ausreißer in Zeitreihen-Daten In der letzten Post haben wir einen Ausreißer als Beobachtungspunkt definiert, der von anderen Beobachtungen weit entfernt ist. Wie im letzten Abschnitt erwähnt, konnten wir mit Hilfe von Zeitreihendaten die zeitliche Entwicklung der Daten erkennen. Kombinieren Sie diese beiden, ist ein Ausreißer in Zeitreihendaten ein Datenpunkt, der von dem Gesamttrend des gesamten Datensatzes entfernt ist. Unter Verwendung der obigen Definition könnten wir eine allgemeine Methode schaffen, um Ausreißer in Zeitreihendaten wie folgt zu finden: Sammeln Sie Zeitreihendaten mit Geräuschen und Ausreißern. Normalisieren der Wertedaten Finden Sie den gesamten Trend der Daten Identifizieren Sie die Punkte, die nicht dem Gesamttrend folgen (Punkte, die den geschätzten Werten entsprechend dem Gesamttrend zu weit entfernt sind) Erkennen von Ausreißern in Zeitreihendaten Es gibt viele Möglichkeiten, die Bewegung zu berechnen Trend der Daten. In diesem Abschnitt werden wir über zwei Methoden sprechen: gleitender Durchschnitt und Regression. Um den Algorithmus zu veranschaulichen, können wir die Eingangsdaten definieren. Angenommen, wir sind gegeben: Moving Average Moving Average ist eine der einfachsten Methoden, um den Trend der Zeitreihendaten zu berechnen und zu visualisieren. Die Idee ist einfach, der entsprechende Wert eines Zeitstempels wird als Mittelwert der umgebenden Punkte berechnet. Zum Beispiel sei 2k die Fenster des gleitenden Mittelwerts. Zum Zeitstempel xi können wir yi wie folgt berechnen: Wenden wir diese Gleichung auf alle gegebenen Punkte an, so erreichen wir die Schätzwerte jedes Zeitstempels. Das Finden von Ausreißern in den gegebenen Daten ist jetzt ganz einfach. Definieren Sie einfach einen Schwellwert und identifizieren Sie dann alle Datenpunkte j, die haben: Die Verwendung von Umgebungspunkten ist kein Muss. Wir könnten auch k Punkte verwenden, die vor (oder nach) dem ausgewählten Punkt beobachtet werden. Es gibt mehrere Verbesserungen für gleitende durchschnittliche Algorithmus. Sie finden sie hier Medianfilter Moving Average bietet eine einfache Möglichkeit, den Trend der Zeitreihendaten abzuschätzen und zu visualisieren. Allerdings hat es einen großen Nachteil, dass: Ausreißer oft führt eine drastische Veränderung in den durchschnittlichen Wert. Aus diesem Grund können Sie am Ende erkennen einige Datenpunkte, die nicht gefiltert werden sollten. Zum Glück konnte der Medianfilter dieses Problem lösen, indem er die beobachteten Werte als Median der umgebenden Werte schätzte. Mit anderen Worten haben wir: Ähnlich dem gleitenden Durchschnitt müssen wir nun einen Grenzwert definieren und dann den Ausreißer nach dem Schwellenwert finden. Sowohl der gleitende Durchschnitt als auch der Medianfilter müssen demselben Problem begegnen: Sie können keinen effektiven Weg bieten, den Wert zukünftig vorherzusagen, weil wir in Zukunft keine Daten haben. Beispielsweise steigt der Wert von Euro gegenüber VND entsprechend der Grafik im letzten Abschnitt. Das Anwenden der gleitenden mittleren oder mittleren Filteralgorithmen für den nächsten Schritt führt zu einem vorhergesagten Wert, der niedriger als die zuletzt gemessene Zeit ist. Daher wird der vorhergesagte Wert nicht dem Gesamttrend der Daten folgen. Um dieses Problem zu lösen, können wir die Regressionsmethode verwenden. Regression Im Gegensatz zum gleitenden Mittel - und Medianfilter berechnet die Regression die Beziehung zwischen jedem Paar beobachteter Daten im Datensatz. Unter Regressionsmethoden wird die lineare Regression als die einfachste Methode betrachtet. Es schätzt einfach eine Gerade, die als der bewegte Trend der Daten betrachtet werden kann. Mit anderen Worten, wir versuchen, eine Linie zu schätzen, die ist: Angesichts der Daten können wir die Fehlerrate berechnen: und der Gesamtfehler ist: Minimierung der Gesamtfehlererträge Outlier-Erkennung mit Gaussian Process Lineare Regression bietet eine Methode, um den Trend zu finden Der Daten. Es ist jedoch nur eine Gerade. In realen Weltdaten haben wir viele Daten gesehen, die nicht als gerade Linie geschätzt werden sollten. Das obige Währungsgraph ist ein Beispiel. Daher benötigen wir eine bessere Regressionsmethode, die nicht nur die Natur des gegebenen Datensatzes erfasst, sondern auch robust gegenüber dem Rauschen (oder Ausreißer) ist. Gaußscher Prozess ist eine nichtparametrische Methode, um den Trend der Daten zu entdecken. Es bietet auch ein gutes probabilistisches Modell, das robust gegenüber dem Eingangsrauschen ist (was als Ausreißer betrachtet werden kann). Bewegt den Algorithmus des Gaußschen Prozesses selbst. Im Gaußschen Prozeß nehmen wir an, daß Datenpunkte eine Sammlung von Zufallsvariablen sind, deren endliche Anzahl eine gemeinsame Gaußsche Verteilung Rasmussen aufweist. Ähnlich wie die Gaußsche Verteilung wird der Gaußsche Prozeß durch seine mittlere Funktion und Kovarianzfunktion definiert. Sie können wie folgt berechnet werden: In diesem Moment wird ein Gaußscher Prozeß durch die Kovarianzfunktion gesteuert. Wir betrachten die häufigste Kovarianzfunktion: RBF-Funktion (oder Gaußsche Funktion). In der RBF-Funktion wird k (xi, xj) durch die folgende Gleichung berechnet: Angenommen, wir wollen den Wert ym in xm vorhersagen. Wir müssen vorbereiten Dann können wir die vorhergesagte ym berechnen durch: Beachten Sie, dass alle Parameter des Gaußschen Prozesses aus den gegebenen Daten mit Hilfe der Marginal-Gradienten-Aufstiegsmethode erlernt werden können. In der Statistik haben wir die 67-95-99.7 Regel. Wenn wir diese Regel in unserem Problem anwenden, haben wir das prädiktive Vertrauen von ym. Dies hilft uns auch, den Ausreißer in den Daten zu identifizieren (die beobachteten Daten bleiben nicht im gewählten Konfidenzintervall der vorhergesagten Daten) Inputdaten Ermöglicht die Erzeugung einer Eingabe mittels Python Moving Average Median Filter Lineare Regression Gaussian ProzessGeben eine Reihe von Zeitstempeln numerischen Werte, die den Outlier-Operator in einer Abfrage verwenden, können Werte in einer Sequenz identifizieren, die unerwartet scheinen, und eine Warnung oder einen Verstoß beispielsweise für eine geplante Suche identifizieren. Zu diesem Zweck verfolgt der Outlier-Operator den gleitenden Durchschnitt und die Standardabweichung von Der Wert, und erkennt oder warnt, wenn die Differenz zwischen dem Wert größer als ein Vielfaches der Standardabweichung ist, z. B. 3 Standardabweichung: mallice 1m max (x) als Ansprechzeit von timeslice Ausreißerzeit timelice 1m count (sourcehost) as Sourcehost von timeslice outlier count Stellen Sie sicher, dass Ihre Syntax nur ein Schlüsselfeld enthält: timeslice Dies ist notwendig, um die Liniendiagrammoption verfügbar zu machen. Das zweite Syntaxbeispiel verwendet eine zusätzliche ldquogroup byrdquo-Klausel, um Ausreißer für mehrere Werte von sourcehost zu finden. Siehe untenstehendes Beispiel. Diese Syntax fügt der Ausgabe die folgenden Felder hinzu: responsetimeerror - Dies ist die responsetime - mean. Responsetimelower - Dies ist die mittlere Schwellenwertabweichung. Responsetimeupper - Dies ist die mittlere Schwellenwertabweichung. Responsetimeindicator - Dies ist 1 für den Wert außerhalb der unteren und oberen Grenzen. Responsetimeviolation - Dies ist 1 zum Schlagen der angegebenen Anzahl aufeinanderfolgender Indikatoren. Es gibt Standardwerte für alle Parameter, aber Sie können Parameter über Schlüsselwortargumente wie Fensterlänge oder Schwellenwert konfigurieren. Zum Beispiel würde diese Abfrage die folgenden Parameter setzen: Ausreißerantwortzeitfenster5, Schwellenwert3, Konsekutiv2, Richtungsfenster - Verwenden Sie die nachfolgenden 5 Datenpunkte, um Mittelwert und Sigma zu berechnen. Der Standardwert ist 10. Schwelle - Berechne den Verstoß anhand von / - 3 Standardabweichungen. Die Voreinstellung ist 3.0. Konsekutiv - Nur die Reaktionszeitverletzung auf 1 setzen, wenn 2 oder mehr aufeinander folgende Datenpunkte weiter als 3 Standardabweichungen vom rollenden Mittel beobachtet werden. Die Voreinstellung ist 1. Richtung - Verwendet -, oder -, für welche Richtung Verletzungen ausgelöst wird: Verwendung - für positive oder negative Abweichungen. Dies ist die Standardeinstellung. Verwenden Sie für nur positive Abweichungen (mehr als erwartet). Verwendung - für nur negative Abweichungen (weniger als erwartet). Der Outlier-Operator muss nach einer Gruppe nach Aggregator, z. B. count, min, max oder sum erscheinen. Das ursprüngliche Zielfeld muss numerisch sein. Einschränkungen Da der letzte Zeitbereich in einer Abfrage unvollständige Daten aufweisen kann, wird er von Ausreißer ignoriert. Wenn eine Warnung darauf eingestellt ist, dass ltfieldnamegtviolation auf 1 ausgelöst wird, löst diese Warnung später ein Mal aus. Führen Sie die folgende Abfrage aus, um Ausreißerwerte in IIS-Protokollen in den letzten 6 Stunden zu finden. SourceCategoryIIS / Zugriff parse regex quotd-dd d: d (dt) (ltserveripgtS) (ltcsuristemgt / S) S d (ltuserientS) (ltclientipgt. d) parse regex quotd dd (ltresponsetimegtd) mallice 15m max (responsetime) as Ansprechzeit von timeslice outlier responsetime window5, threshold3, consecutive2, direction - Die Ausreißerwerte werden durch die rosa Dreiecke in der resultierenden Tabelle dargestellt. Apache-Logs - Sever Errors Over Time Führen Sie die folgende Abfrage aus, um Outlier-Werte in Apache-Protokollen in den letzten 3 Stunden zu finden. SourceCategoryApache / Zugriff parse quotHTTP / 1.1quot als Statuscode, bei dem Statuscode mit quadratischen Ziffern übereinstimmt. 5) Zählen (Statuscode) als Statuscode durch Timelice-Ausreißer statuscode window5, threshold3, consecutive1, direction - Die Outlier-Werte werden durch die rosa Dreiecke im resultierenden Diagramm dargestellt. Verwenden Sie eine zusätzliche ldquogroup byrdquo-Klausel, um Ausreißer für mehrere Werte von sourcehost zu finden. Sie können auch eine Abfrage wie folgt ausführen: sourcecategorydatabase timeslice 1m count von timeslice, sourcehost outlier count von sourcehost Auf diese Weise können Sie Outlier-Analyse für jeden Wert von sourcehost separat ausführen. wie gezeigt. Dieses Beispiel erzeugt nur eine Aggregationstabelle, nicht ein Diagramm, aber die Indikator - und die Verletzungsfelder werden jede Sourcehost-Verarbeitung korrekt wiedergeben. Multidimensionale Outlier-Erkennung Der Outlier-Operator unterstützt mehrdimensionale oder mehrzeitige Erkennung. Die multidimensionale Ausreißererkennung ist nützlich, wenn Sie das Verhalten eines jeden Benutzers, eines Servers, eines Anwendungsfeatures oder eines anderen ldquoentityrdquo statt einer Aggregation über alle Entitäten überwachen möchten. Beispielsweise können Sie fehlgeschlagene Anmeldungen nach Benutzer erkennen. Um dies zu tun, möchten Sie verstehen, ob jedes Benutzerkonto, einzeln, eine seltsame Menge an fehlgeschlagenen Anmeldungen erlebt hat, nicht, ob wersquove einige Spike in der durchschnittlichen oder Gesamtmenge der fehlgeschlagenen Anmeldungen über alle Benutzer gesehen. Letzteres kann nützlich sein, aber mit Hunderten oder Tausenden von Benutzern (Entitäten) kann ein Spike in fehlgeschlagenen Logins im Rauschen eines ldquonormalrdquo Summe fehlgeschlagenen Logins verloren gehen, und Sie könnten einen Spike in fehlgeschlagenen Anmeldungen für einen bestimmten Benutzer verpassen . Weitere Beispiele sind: Erkennen von Anomalien bei der Verfolgung von Seitenfehlern, Plattenbetrieb oder CPU-Auslastung für alle Knoten in einem Cluster gleichzeitig. Überwachung der Leistung von jedem Arbeitsplatz gleichzeitig, ohne die Notwendigkeit, einen Ausreißer Bericht für jeden erstellen. Monitoring fehlgeschlagenen Bild-Uploads für jeden Benutzer einer Anwendung (nicht insgesamt fehlgeschlagen Uploads über alle Benutzer). Wenn Sie den Ausreißer-Operator verwendet haben, ist es einfach, einen multidimensionalen Ausreißerbetrieb zu erstellen. Fügen Sie einfach durch ltdimensiongt an das Ende der Abfrage. Beispielsweise bestimmt die folgende Beispielabfrage viele Zeitreihen, eine für jeden sourcehost: sourcecategorydatabase timeslice 1m count von timeslice, sourcehost outlier count von sourcehost Sie können die Rohergebnisse einer multidimensionalen Zeitreihe in einem Tabellen-Chart anzeigen, aber zur Zeit anderes Diagramm Optionen sind nicht verfügbar. In dem folgenden Tabellendiagramm zeigt ein Wert von 1 in der Spalte countviolation an, dass der Datenpunkt, der diesem Zeitschlitz entspricht, ein Ausreißer ist. Alarme, die auf multidimensionalen Outlier-Ergebnissen basieren Um einen Alert zu erstellen, der auf der Multiregie-Outlier-Tabelle basiert, extrahieren Sie countviolation. Auf diese Weise müssen Sie eine Warnung für jede Datenreihe erstellen (jeder Sourcehost im vorherigen Beispiel), und Sie können automatisch eine dynamische Serie für abweichendes Verhalten überwachen. In der folgenden Beispielabfrage können Sie überwachen, wann Anwendungsbenutzer Fehler erleben. Es überwacht alle Benutzerkonten durch eine eindeutige Benutzer-ID und wendet Ausreißer auf die Anzahl der ldquofailrdquo-Nachrichten an, die in jedem Benutzerkonto auftreten: sourceCategoryProd parse quotUserID: als userid parse quotResult: als Ergebnis, wo Ergebnis quotFailquot timeslice 1h count von userid, timeslice outlier Zählung nach Benutzeridfeldern timeslice, userid, countviolation transponieren Zeile timeslice column userid Nachdem Sie die Abfrage ausgeführt haben, können Sie auf Speichern unter klicken, um eine geplante Suche zu erstellen und sie zu konfigurieren, um eine Warnmeldung zu senden, wenn ein Benutzerkonto eine ungewöhnliche Anzahl von Fehlern erleidet Anderes Ereignis, für das Sie jede Datenreihe überwachen möchten. Um Ihre Ergebnisse zu visualisieren, können Sie auf der Suchseite ein Säulendiagramm erstellen. Ändern Sie dann die Stapeleigenschaft auf normal, um Alarme durch die eindeutige Benutzerid (den multidimensionalen Aspekt) anzuzeigen. Diagramm Multidimensionale Outlier-Ergebnisse Dieser Abschnitt enthält zwei Beispiele für die Darstellung multidimensionaler Outlier-Ergebnisse in Diagrammen. Beispiel 1: Outlier-Verteilung über die Zeit In diesem Beispiel wersquoll extrahieren countviolation aus der Multiserie-Ausreißertabelle und zeigen an, dass. Damit können Sie die Verteilung der Ausreißer auf verschiedene Zeitreihen anzeigen. Fehler (sourceCategorymix oder sourceCategorycon) timeslice 1m Anzahl von timeslice, sourcecategory outlier Anzahl von sourcecategory Felder timeslice, sourcecategory, countviolation transponieren Zeile timeslice column sourcecategory Wenn Sie ein Liniendiagramm auswählen. Beispiel 2: Outlier-Ranking Diese Beispielabfrage verwendet den Counterror (Abstand vom Erwartungswert für das Zeitfenster) und den Wert der Standardabweichung für die Baseline und bestimmt dann, wie viele Standardabweichungen ein Datenpunkt ist Ist von seinem erwarteten Wert. So können Sie Ausreißer visuell in Abweichung vom Erwartungswert anzeigen. Viewcustomereventsadhocsearch Zeitzoneamerica timeslice 1h count von timeslice, timezone outlier count nach timezone wobei countstd gt0 if (countviolation1, abs (counterror) / countstd, 0) als Abweichungsfelder timeslice, timezone, Abweichung transponieren Zeile timeslice column timezone Wenn Sie ein Liniendiagramm auswählen. Dieses Beispiel zeigt etwas wie das folgende: In der Liniendiagramm können Sie sehen, welche Serie die meisten ldquodeviatingrdquo Ausreißer produziert. Dieser Ansatz zeigt effektiv die Schwere des Ausreißers an, da die Spikes die Größe (wie viele Standardabweichungen der Wert vom Mittelwert ist) in einer Zeitreihe im Vergleich zu anderen Zeitreihen darstellt. Empfohlene Artikel


No comments:

Post a Comment