Thursday 13 July 2017

Moving Average Elastischesuche

Geo-Zeitliche Ereignisse mit Elasticsearch Pipeline Aggregationen oben: Eine zeitliche Vorhersage einer eindimensionalen Metrik in Timelion. Bemerkenswert, ist dieses Vortrag sehr stark beeinflusst von Zach Tongs hervorragende Serie über die Umsetzung eines statistischen Anomaly Detektor mit Elasticsearch. Das ist ein großartiger Ort, um beim Lesen über dieses Thema zu starten. Das Problem mit meiner alten Demo Ich liebe Bikeshare-Daten. Ive geschrieben ein paar Beiträge im letzten Jahr mit öffentlichen Daten aus den guten Leuten in Washington DCs Hauptstadt Bikeshare Programm. (Hier und hier) und wenn Sie mit mir an einer Demo-Kabine oder Präsentation von Kibana youve probalby gesehen haben, zeigen Sie mir mein Armaturenbrett der Bikeshare-Fahrten in DC und zoomen Sie in den 4. Juli, um die Datenanomalie rechts um das Feuerwerk zeigen. Ich liebe diese Demo Das Problem ist, dass es erfordert ein, um bereits das Wissen über die Datenanomalie. Was passiert, wenn Elasticsearch könnte uns helfen, Ausreißer und Anomalien in den Daten automatisch Nun kann es tun, und es kann sogar helfen uns vor Ort sie passiert in Echtzeit. Lets sehen, ob es uns helfen kann, andere Ereignisse rund um die Stadt. Elasticsearch Funktionen Ill müssen vier Schlüsseleigenschaften der Elasticsearch Aggregations API verwenden. Zwei Arten von Bucket-Aggregationen (Merkmal 1) und (Merkmal 2) Schachteln einer Aggregation innerhalb eines anderen (Merkmal 3) Pipelineaggregationen mit saisonal angepassten verschobenen Mittelwerten (Merkmal 4) Der erste Teil ist in der Lage, Ausreißer in den Daten zu lokalisieren, die isoliert sind Bestimmte Zeit - und Geo-Aspekte der Daten. Dabei handelt es sich um grundlegende Histogramme und geo-grid Couts von Ereignisvorgängen. Es gibt direkte Anrufe zu Elasticsearchs Aggregation APIs und direkt mit Abfragen visualisiert in Kibana. 1) Geo Buckets 2) Histogramm Buckets 3) Nested Buckets Der nächste Teil ist, wo die Dinge Spaß machen. Elasticsearch lässt Sie Eimer aggregtion innerhalb anderer Aggregationen nisten. Wir können die beiden Eimeransätze oben in einem einzigen analytischen kombinieren, fragen Elasticsearch für Histogramm Buckets innerhalb einer Geo-Gitter-Aggregation. Das Ergebnis ist eine Matrix der Ereignismetriken über die Zeit für jedes Raster meiner Karte, die in einem einzigen Ruheanruf zurückgegeben wird. Heres ein Bild von Bikeshare Nutzung über mehrere Jahre zu versuchen, die wahre Bedeutung der zurückgegebenen Daten zu demonstrieren. 4) Saisonale Moving Averages Jetzt für jeden Bucket können wir die nächste Macht Feature von Elasticsearch, die Pipeline Aggregationen ist. Colin Goodheart-Smithe schrieb einen großen Blog-Beitrag auf Computing-Derivate mit Pipeline-Aggs, aber was gut Fokus auf bewegte Durchschnitte. Ähnlich wie Zach Tongs Blog-Post gut berechnen einen Überraschungsfaktor für jede Stunde der Daten in jedem Raster der geospatial Bereich von DC. Nun berechnen, ob die Anzahl der Radtouren abweicht aus dem Gebiet abweicht von der allgemeinen Tendenz (gleitender Durchschnitt), wie viele Fahrten wir erwartet, dass von dieser Station abweichen, wenn allgemeine Trends unter Berücksichtigung Tag der Woche und Zeit des Jahres. Dies wird uns helfen, zwischen dem Signal und dem Rauschen, die ein gemeinsames Problem in allen Analytik ist zu unterscheiden. Es gibt viele Arten der beweglichen Durchschnitte, die in Elasticsearch möglich sind, aber die, die wir verwenden, sind Holt-Winters. Dieser dreifach exponentielle gleitende Durchschnitt berücksichtigt das aktuelle Niveau, den Trend in dieser Ebene sowie eine Saisonalität bei der Berechnung des gleitenden Durchschnitts. Weil die Hauptstadt Bikeshares regelmäßigen periodischen Muster ist wöchentlich, (alle 7 Tage) können wir für einen gleitenden Durchschnitt von Bikeshare Ridership fragen und wissen, ob eine Spike ist die normale Montagmorgen Bike pendeln oder etwas interessanter wie ein Feuerwerk oder ein Baseball-Spiel. Holt-Winters kann sogar Prognosen in die Zukunft vornehmen, die zwar kühl sind, aber da wir gerade nach Datenausreißern im Zeitbereich der Daten suchen, die wir haben, die nicht notwendig sind. Holt-Winters erfordert eine Optimierung der Koeffizienten für die relativen Gewichte der drei Mitwirkenden zum intelligenten Durchschnitt. Ich spielte herum und fand, dass ich die besten Resultate erhielt, die gerade die Selbstminimierungfunktion verwenden, die versucht, gute Koeffizienten durch einen simulierten-annealing Optimierungsalgorithmus zu erraten. Putting it zusammen Heres die letzte Abfrage ich verwendet, um regionale geo-temporale Saisonalität angepasst gleitende Mittel zu berechnen. Kibana selbst hat keine Pipeline-Aggregationen noch oder viel in der Art von Geo-Temporal, so wird es nicht laufen diese Art von Abfrage direkt. Allerdings, mit einem schnellen Python-Skript kann ich die benutzerdefinierte Abfrage, Schleife über Buckets in den aggregierten Daten und re-insert Roll-up aggregierte Ereignisse als ein anderer Metriktyp, die nebeneinander mit den ursprünglichen Daten visualisiert werden können. (Code). Die Schlüssellinie, die den Überraschungsfaktor berechnet: Dies bedeutet, dass, wenn die tatsächliche Ereigniszählung für eine Stunde von Radtouren in einem Raster auf der Karte die allgemeine gleitende Durchschnittszahl übertrifft, die die Vorhersage gewesen wäre, dann vermuten wir, Daten-Anomalie. Jedes Gitter des Geo-Graphen wird effektiv zu einer einzigen metrischen Zeitreihe mit einer Vorhersage. Wir können den Überraschungswert getrennt von der Ereignisdichte abbilden. Überprüfen der Ergebnisse Wenn wir einen Bereich vergrößern, erhalten wir einen schnellen Überblick über die Anomalien der Ride Event Spikes. Um die Genauigkeit mit realen Weltereignissen zu prüfen, suche ich nach etwas, das ich eine difinitive Ereignisgeschichte für erhalten kann. Beim Zoomen auf das Baseballstadion im Mai 2015 sehen wir folgendes: Es gab Spikes über dem tendenziell gleitenden Durchschnitt auf dem vierten, fünften, sechsten, achtten, neunten und a in geringerem Ausmaß (kleiner Überraschungsfaktor) 10. Vergleichen Sie dies mit dem Washington Nationals AwayHome Zeitplan in dieser Woche und youll sehen, dass wir es right. In Herstellungs-und Geschäftsprozesse gibt es ein gemeinsames Tool namens Control-Diagramm. Erstellt im Jahr 1920 von Dr. Walter Shewhart, wird ein Kontroll-Diagramm verwendet, um festzustellen, ob ein Prozess in der Kontrolle oder außer Kontrolle ist. Damals arbeitete Dr. Shewhart bei Bell Labs, um die Signalqualität von Telefonleitungen zu verbessern. Schlecht bearbeitete Komponenten waren eine der Hauptursachen für eine Signalverschlechterung, so dass die Verbesserung der Herstellungsverfahren zur Herstellung gleichmßiger Komponenten ein kritischer Schritt zur Verbesserung der Signalqualität war. Dr. Shewhart erkannte, dass alle Prozesse, Herstellung oder sonst, einige natürliche Variationen aufweisen. Der Schlüssel war zu identifizieren, wenn die Variation war normal verhalten (in der Kontrolle), und wenn es plötzlich begann zu ändern (außer Kontrolle). Ein Prozeß, der außer Kontrolle gegangen ist, muß angehalten werden, damit das Problem behoben werden kann, anstatt aus schlampig hergestellten Komponenten herauszuwühlen. Steuerkarten funktionieren, indem sie eine Warnung auslösen, wenn der Wert ausreichend vom Mittelwert um einen bestimmten Betrag abweicht. In der Praxis sind sie sehr einfach und intuitiv zu lesen und wirken oft aufgrund ihrer Einfachheit und Robustheit als Frontalanomaliedetektoren. Glättung mit Moving Averages Control Charts können ziemlich leicht in Elasticsearch mit einer Kombination von Aggregationen, einschließlich der neuen Pipeline-Aggregationen gebaut werden. Um loszulegen, schauen Sie sich einige synthetische Daten, die ich für diesen Beitrag generiert. Zum Spaß können wir uns vorstellen, dass es eine Kühlmitteltemperatur (in Celsius) für einen Kernreaktor ist. Werfen wir einen Blick auf die Daten zunächst mit einem Histogramm-Eimer und ein extendedstats Metrik: In der Grafik, sind wir Plotten der avg für jeden Eimer: Klicken Sie für volle Größe. Wie Sie sehen können, sind die Daten im Grunde eine flache Trend, mit einer zufälligen Verteilung um 30. Die Daten sind laut, so dass die erste Sache, die Sie tun möchten, glatt ist, so dass Sie die allgemeine Tendenz besser sehen können. Gleitende Durchschnitte sind für dieses groß. Ein gleitender Durchschnitt nimmt grundsätzlich ein Fenster von Werten, berechnet den Durchschnitt und verschiebt das Fenster einen Schritt nach vorn. Es gibt verschiedene Arten von gleitenden Durchschnitten, die Sie wählen können. Wir werden einen exponentiell gewichteten Moving Average (EWMA) verwenden. Diese Art von gleitendem Durchschnitt reduziert die Bedeutung eines Datenpunkts exponentiell, da er im Fenster älter wird. Dies hilft, den gleitenden Mittelwert auf die Daten zu zentrieren, anstatt zurückzuhalten. In der folgenden Abfrage addieren wir eine Movavgmean-gleitende durchschnittliche Pipelineaggregation, die den gleitenden Durchschnitt jedes Buckets berechnet (dh ein gleitendes Mittel der Mittel): Es gibt einige interessante Bits hier: bucketspath zeigt auf den in unserem extendedstats-Metrik berechneten avg-Wert Fenster ist auf 24 gesetzt, was bedeutet, dass wir die letzten 24 Stunden zusammen modellieren möchten, wird auf ewma gesetzt und schließlich konfigurieren wir einige Einstellungen für dieses spezielle Modell. Die Einstellung alpha steuert, wie glatt der generierte gleitende Durchschnitt ist. Die Voreinstellung (0,3) ist in der Regel ziemlich gut, aber ich mochte das Aussehen von 0,1 besser für diese Demo. Schauen Sie sich die Docs für weitere Informationen, wie alpha-Funktionen. Und das resultierende Diagramm enthält nun eine gut geglättete Linie (lila): In der Steuerung Also, die Frage ist. Gibt es einen Grund, sollten Sie den Reaktor herunterfahren, oder ist alles reibungslos funktionieren Ich gebe zu, ich war hinterhältig in der vorherigen Grafik: Ich zeichnete den Durchschnitt. Wie zuvor diskutiert. Der Durchschnitt ist eine ziemlich schlechte Metrik in den meisten Fällen. In diesem Datensatz ist es versteckt eine große Spitze, die ich am Donnerstag platziert. Wenn wir den maximalen Wert in jedem Eimer (gelbe Linie) zeichnen, ist die Spitze sofort klar: Ich hoffe, dass Sie den Reaktor weg am Donnerstag gedreht haben) Wie konnten wir dieses spike entdeckt haben In dieser Tabelle ist die Anomalie absurd klar. Sie könnten eine einfache Schwelle verwenden. Aber auch später sehen Schwellen oft unter komplexeren Mustern aus. Stattdessen können wir ein Kontrollschema erstellen. Steuerkarten sehen einen Prozess außer Kontrolle, wenn Datenpunkte beginnen, drei Standardabweichungen weg vom Mittelwert zu fallen. In diesem Sinne können wir unsere Aggregation zu ändern, um es zu einem bona fide Steuerkarte. Dazu müssen wir zwei neue Aggregationen hinzufügen: einen gleitenden Durchschnitt auf der Standardabweichung und ein Skript, das die obere Grenze berechnet: Die neue movavgstd Pipeline agg ist sehr einfach: Es ist einfach eine EWMA (mit Standardeinstellungen), die durchschnittlich ist Die stats. stddeviation metric über die letzten 24 Stunden. Die Shewhartucl Pipeline Agg ist ein Bucketscript, das die obere Steuergrenze aka berechnet, der Zeitpunkt, wenn Sie anfangen Sorgen, weil der Prozess außer Kontrolle geraten ist. Denken Sie es als eine dynamische Schwelle. Der Schwellenwert wird durch Multiplizieren der rollenden Standardabweichung mit drei berechnet und dann dem Rollmittelwert addiert. Ich habe es zur Kürze weggelassen, aber die meisten Steuerkarten enthalten auch eine untere Steuergrenze. Um das hinzuzufügen, würden Sie einfach kopieren shewhartucl. Subtrahieren Sie statt des Hinzufügens drei Standardabweichungen und benennen Sie sie in shewhartlcl um. Hinweis: Im mit einem Inline-Skript für die Bequemlichkeit. Sie können es für ein statisches Skript ersetzen, wenn dynamisch, Inline-Skripting auf Ihrem Cluster deaktiviert ist. Geglättetes Mittel: violett Maximalwert: gelb Obere Kontrollgrenze: grün Wir können dies graphisch darstellen und sehen, dass die Spitze (gelb) über die Kontrollgrenze hinausschießt (grün). In einem realen System ist dies, wenn Sie eine Benachrichtigung oder E-Mail senden. Oder vielleicht etwas drastischer, denn das ist ein Kernreaktor, den wir modellieren.) Schlussfolgerung Das ist alles für diese Woche. Wir haben die neuen Pipeline-Aggregationen verwendet, um unsere Daten mit einem gleitenden Durchschnitt zu glätten. Wir haben dann ein Kontrolldiagramm aufgebaut, um dynamisch Ausreißer zu finden, indem wir eine obere Kontrollgrenze basierend auf dem gleitenden Durchschnitt und einer sich bewegenden Standardabweichung berechnen. In Teil zwei. Wie das gleiche Kontrollschema für weitere interessante Datenmuster verwendet werden kann, wie lineare Trends und zyklisches Verhalten. Nun auch sehen, wie man es mit Watcher integrieren, so dass wir E-Mail-Benachrichtigungen automatisch empfangen können. Check it out Gleitender Durchschnitt 20667 Hey l8liu. Sorry für die Verzögerung bei der Beantwortung. Wir haben intern über diese ein wenig chatten. Ill Start mit dem einfachen: Auch könnte man bedenken, fügen Sie eine Moving Standard Abweichung in der Zukunft Definitiv Weve sprach darüber ein paar Mal und ich kenne Id persönlich wie ein. Wurden derzeit versucht, die beste Möglichkeit, es hinzuzufügen (dedizierte agg, oder umbenennen movingaverage zu movingfunction und implementieren std dev als eine Funktion, etc.). Ich denke, itll enden als dedizierte movingstddev agg, da das ist die einfachste. Ich erwarte, dass der gleitende Durchschnitt dem Durchschnitt des aktuellen Tages und der vorherigen 2 Tage entspricht, aber die Ergebnisse sind der Durchschnitt der vorhergehenden 3 Tage und nicht einschließlich des aktuellen Tages. Also haben wir darüber gesprochen, warum wir dies getan haben, und ich denke, das Verhalten ist richtig, weil wir mit einem linken gleitenden Durchschnitt häufig in Finanz-und anderen Nicht-Signal-Use-Fällen verwendet (zB der Wert von heute ist das Ergebnis der bisherigen Werte) . Zum Beispiel verwenden finanzielle gleitende Durchschnittswerte die Schlusskurse, und der heutige Wert ist intrinsisch unberechenbar, weil heute noch nicht geschlossen hat. Was bedeutet, dass Sie nur berechnen können gleitende Mittelwerte auf früheren Datenpunkten, nicht heute. Dies spiegelt die Wiki-Definition für eine Finanz-SMA wider: Bei Finanzanwendungen ist ein einfacher gleitender Durchschnitt (SMA) der ungewichtete Mittelwert der vorhergehenden n Daten. Für eine Anzahl von Anwendungen ist es vorteilhaft, die Verschiebung zu vermeiden, die durch die Verwendung nur vergangener Daten induziert wird. Daher kann ein zentraler gleitender Durchschnitt berechnet werden, wobei Daten verwendet werden, die beiderseits des Punktes in der Reihe gleich sind, wo der Mittelwert berechnet wird. Auch wenn heutige Werte eingeschlossen würden, würde sich der Wert des heutigen Movavg jedesmal ändern, wenn Sie die Aggregation ausführen Eimer füllt weiter. Dies unterscheidet sich wesentlich von den mehrwissenschaftlichen Ingenieurwissenschaften, bei denen Sie zentrierte Bewegungsdurchschnitte verwenden (die Bewegung eines Punktes ist der Durchschnitt von n2 auf jeder Seite). In diesem Fall ist es sinnvoll, den Eimer in seinen eigenen Film einzubinden. Da wir aber momentan nur eine Orientierung unterstützen, halte ich das aktuelle Verhalten für richtig. Viele Angst Zitate oben, weil ich zustimmen, seine mehr eine Frage der Perspektive und wie Sie den gleitenden Durchschnitt verwenden möchten. Wir haben noch havent zu einer endgültigen Entscheidung kommen, aber ich glaube, so weit weve zumindest stimmte die aktuelle Umsetzung ist nicht falsch per se. ) Polyfractal Vielen Dank für Ihre Detail-Erklärung und ich stimme mit Ihrer Berücksichtigung der aktuellen gleitenden Durchschnitt Umsetzung. In der Zukunft sind Sie möglich, einen Verschiebungsparameter hinzuzufügen, also können Benutzer Optionen haben, um zu wählen, wohin sie die movavg ausgeben möchten. Wir möchten, dass sie sich an den aktuellen Tag angleichen, aber nicht am Vortag, wenn wir die statistische Kontrolle durchführen. Auch sein froh zu wissen, dass Sie die bewegliche Standardabweichung Eigenschaft zukünftig haben werden. Vielen Dank für die großartige Arbeit und wir erwarten Ihre neue Arbeit Ich denke, ein Schalt-Parameter könnte nützlich sein, obwohl Im neugierig über seinen Umfang. Wäre es nur möglich, einen Tag nach vorne zu verschieben, um den Durchschnitt auszurichten, oder sollten wir eine willkürliche Verschiebung (z. B. 10 Buckets) erlauben? Aus einer Codeperspektive ist movavg schon ziemlich kompliziert, so dass nicht so viel zusätzliche Komplexität einzuführen wäre. Vielleicht könnten wir eine dedizierte Verschiebung Pipeline agg, die sitzt vor dem movavg Nicht sicher, havent dachte es durch sehr sorgfältig :) Sie können nicht diese Aktion zu diesem Zeitpunkt. Sie haben sich mit einem anderen Tab oder Fenster angemeldet. Aktualisieren Sie Ihre Sitzung neu. Sie haben sich in einem anderen Tab oder Fenster angemeldet. Aktualisieren Sie Ihre Sitzung neu.


No comments:

Post a Comment