Wir brauchen ein Frühwarnsystem, das ich mit einem Server zu tun habe, der bekanntermaßen Leistungsprobleme unter Last hat. Fehler werden in einer Datenbank zusammen mit einem Zeitstempel aufgezeichnet. Es gibt einige manuelle Eingriffsschritte, die zur Verringerung der Serverbelastung genommen werden können, aber nur wenn Jemand ist sich des Problems bewusst. Wenn ein Satz von Zeiten, dass Fehler aufgetreten, wie kann ich identifizieren den Beginn einer Spike in Fehler in Echtzeit Wir können regelmäßig oder auf jedem Fehler Vorkommen zu berechnen. Wir sind nicht über gelegentliche Fehler, aber don t Habe eine spezifische Schwelle Ich könnte nur jemanden benachrichtigen, sobald wir bekommen, sagen wir, drei Fehler in fünf Minuten, aber ich bin sicher, dass es einen besseren Weg. Ich möchte in der Lage sein, die Empfindlichkeit des Algorithmus basierend auf Feedback von den Sysadmins anzupassen Für jetzt, sie mögen es ziemlich empfindlich zu sein, obwohl wir wissen, dass wir einige falsche Positives erwarten können. Ich bin kein Statistiker, was ich sicher bin, ist offensichtlich, und die Implementierung dieses muss relativ einfach mit unseren vorhandenen Tools SQL Server sein Und Old-School-ASP JScript Ich bin nicht auf der Suche nach einer Antwort im Code, aber wenn es zusätzliche Software erfordert, hat es wahrscheinlich gewonnen t Arbeit für uns, obwohl ich unpraktisch, aber ideale Lösungen als Kommentar, für meine eigene Neugierde begrüßt Bei 21 44. Es ist schon 5 Monate her, seit du diese Frage gefragt hast, und hoffentlich hast du etwas herausgefunden, dass ich hier ein paar verschiedene Vorschläge machen werde, in der Hoffnung, dass du in anderen Szenarien etwas für dich nutzst. Für deinen Use-Case bin ich Denken Sie nicht, dass Sie auf Spike-Erkennungsalgorithmen schauen müssen. So hier geht Lasst uns mit einem Bild von den Fehlern beginnen, die auf einer Timeline auftreten. Was Sie wollen, ist ein numerischer Indikator, ein Maß dafür, wie schnell die Fehler kommen und diese Maßnahme Sollte in der Lage sein, Grenzen zu setzen - Ihre Sysadmins sollten in der Lage sein, Grenzen zu setzen, die mit welchen Empfindlichkeitsfehlern in Warnungen umgehen. Sie erwähnten Spikes, der einfachste Weg, um einen Spike zu bekommen, ist ein Histogramm über alle 20 Minuten Intervall zu zeichnen. Ihre Sysadmins würden Stellen Sie die Empfindlichkeit auf die Höhen der Balken ein, dh die meisten Fehler, die in einem 20-Minuten-Intervall ertragen können. An dieser Stelle können Sie sich fragen, ob diese 20-minütige Fensterlänge nicht angepasst werden kann. Sie können, und Sie können an die Fensterlänge denken, wie das Wort zusammen in den Phrase-Fehlern zusammen erscheinen. Was ist das Problem mit dieser Methode für Ihre Besonderes Szenario Nun, deine Variable ist eine Ganzzahl, vermutlich weniger als 3 Du würdest deine Schwelle nicht auf 1 setzen, denn das bedeutet nur, dass jeder Fehler eine Warnung ist, die keinen Algorithmus benötigt. Also deine Entscheidungen für die Schwelle werden 2 und 3 Dies macht nicht Ihre Sysadmins eine ganze Menge feinkörnige Kontrolle. Anstatt zu zählen Fehler in einem Zeitfenster, verfolgen Sie die Anzahl der Minuten zwischen den aktuellen und letzten Fehlern Wenn dieser Wert zu klein wird, bedeutet dies, dass Ihre Fehler sind Immer zu häufig und du musst eine Warnung aufwerfen. Deine Sysadmins werden wahrscheinlich die Grenze bei 10 einstellen, dh wenn Fehler weniger als 10 Minuten auseinander liegen, ist es ein Problem oder 20 Minuten vielleicht 30 Minuten für ein weniger unternehmenskritisches System. Diese Maßnahme Bietet mehr Flexibilität Im Gegensatz zu Measure 1, für die es einen kleinen Satz von Werten gab, mit denen du arbeiten kannst, hast du jetzt eine Maßnahme, die gute 20-30 Werte liefert. Ihre Sysadmins haben daher mehr Spielraum für die Feinabstimmung Um dieses Problem zu nähern Anstatt die Fehlerfrequenzen zu betrachten, kann es möglich sein, die Fehler vorher vorherzusagen. Sie haben erwähnt, dass dieses Verhalten auf einem einzelnen Server auftritt, der bekanntermaßen Leistungsprobleme hat. Sie könnten bestimmte Key Performance Indicators überwachen Auf dieser Maschine, und haben sie Ihnen sagen, wenn ein Fehler passieren wird Speziell würden Sie bei CPU-Nutzung, Speicher-Nutzung und KPIs in Bezug auf Disk IO Wenn Ihre CPU-Nutzung kreuzt 80, wird das System zu verlangsamen. Ich weiß, du hast gesagt, du hättest keine Software installieren wollen, und es ist wahr, dass du das mit PerfMon machen kannst. Aber da gibt es kostenlose Tools, die das für dich tun werden, wie Nagios und Zenoss. Und für Leute, die hierher gekommen sind Um etwas über Spike-Erkennung in einer Zeitreihe zu finden. Spike-Erkennung in einer Zeit-Serie. Die einfachste Sache, die Sie anfangen sollten, ist, einen gleitenden Durchschnitt Ihrer Eingabewerte zu berechnen Wenn Ihre Serie x1, x2 ist, dann würden Sie berechnen Ein gleitender Durchschnitt nach jeder Beobachtung als. Mk 1 - alpha M alpha xk. wo das Alpha würde bestimmen, wie viel Gewicht geben den neuesten Wert von xk. Wenn Ihr neuer Wert hat sich zu weit weg von der gleitenden Durchschnitt, zum Beispiel. die heben Sie eine Warnung. Moving Durchschnitte sind schön Bei der Arbeit mit Echtzeit-Daten Aber nehmen Sie an, Sie haben bereits eine Reihe von Daten in einer Tabelle, und Sie wollen nur SQL-Abfragen gegen sie ausführen, um die Spikes zu finden. Ich würde vorschlagen, den Mittelwert Ihrer Zeit-Serie pute die Standardabweichung Sigma. Isolate jene Werte, die mehr als 2 Sigma über dem Mittel sind, können Sie diesen Faktor von 2.More lustigen Sachen über Zeitreihen anpassen. Viele real-world Zeitreihenausstellung zyklisches Verhalten Es gibt ein Modell namens ARIMA, das Ihnen hilft, zu extrahieren Diese Zyklen aus deiner Zeitreihe. Moving Mittelwerte, die das zyklische Verhalten berücksichtigen Holt und Winters. I suchte nach Online-Erkennung Algorithmen und meist gefunden akademische Artikel, die über meinen Kopf sind Sie können die Antwort zu halten, aber don t pass meine persönlichen einfachen Test Korrigieren Sie mich, wenn ich falsch bin, aber ich glaube nicht, dass ich auf der Suche nach einem Peak-Erkennungsalgorithmus bin. Sobald die Fehler aufgetreten sind, scheint es, dass ich per definitionem meine Chance verpasst habe, das Schlimmste des Problems zu entschuldigen, wenn meine Verwendung von Spike war Verwirrend Ich denke, ich muss eine fortgesetzte Erhöhung der Fehler vorherzusagen oder einen großen Schritt nach oben dbenton zu erkennen. Okt 25 12 at 15 26. 1 Für die statistische Prozesskontrolle gibt es einige nützliche Informationen hier bei Step Detection. For SPC ist es nicht zu schwer zu Schreiben Sie eine Implementierung entweder der Western Electric Rules oder der Nelson Rules. Just machen eine USP in SQL Server, die durch einen Datensatz iterieren wird und ping jeden Punkt gegen die Regeln mit seinen benachbarten Punkten Vielleicht summieren die Anzahl der Fehler pro Stunde abhängig von Ihre Bedürfnisse. This Art bezieht sich auf eine Frage, die ich auf Stack Overflow eine Weile zurück geschickt habe nur eine schnelle Antwort geschrieben, wenn es hilft Statistische Prozess Kontrolle Charts in SQL Server 2008 R2.Update Der beste Performance-Algorithmus so weit ist diese eine. Diese Frage Erforscht robuste Algorithmen zur Erkennung von plötzlichen Peaks in Echtzeit-Timeeries-Daten. Betrachten Sie den folgenden Datensatz. Matlab-Format, aber es geht nicht um die Sprache, sondern um den Algorithmus. Sie können deutlich sehen, dass es drei große Gipfel und einige kleine Gipfel gibt Dieser Datensatz ist ein konkretes Beispiel für die Klasse von timeseries Datasets, dass die Frage ist über Diese Klasse von Datensätzen hat Zwei allgemeine features. There ist grundlegendes Rauschen mit einem allgemeinen mean. There sind große Spitzen oder höhere Datenpunkte, die erheblich vom Lärm abweichen. Let s auch das folgende annehmen. Die Breite der Spitzen kann nicht vorher bestimmt werden. Die Höhe der Spitzen Klar von den anderen Werten abweicht. Der verwendete Algorithmus muss die Realtime so ändern, dass er sich mit jedem neuen Datenpunkt ändert. Für eine solche Situation muss ein Grenzwert aufgebaut werden, der Signale auslöst. Allerdings kann der Grenzwert nicht statisch sein und muss auf der Grundlage von Realtime ermittelt werden Ein Algorithmus. Meine Frage, was ist ein guter Algorithmus, um solche Schwellen in Echtzeit zu berechnen Gibt es spezifische Algorithmen für solche Situationen Was sind die bekanntesten Algorithmen. Robust Algorithmen oder nützliche Einblicke sind alle sehr geschätzt kann in jeder Sprache, die es über die Algorithmus. Ich verwendet, um dies zu tun, um eine abrupte Änderung der Lichtintensität auf einem Photosensor zu erkennen Ich tat dies durch gleitenden Durchschnitt, und ignorieren alle Datenpunkte, die größer als ein Schwellenwert ist, dass diese Schwelle unterscheidet sich von der Schwelle Bestimmung eines Peaks So, Sagen Sie, dass Sie nur Datenpunkte einschließen, die innerhalb eines stddev zu Ihrem gleitenden Durchschnitt sind und betrachten diese Datenpunkte mit mehr als drei stddev als Spitzen Dieser Algorithmus tat sehr gut für unseren Kontext der Anwendung diese Zeit justhalb Mar 28 14 bei 7 54.Ah, ich Ich habe es nicht in der Code-Form erwartet Wenn ich diese Frage früher gesehen hätte, würde man diese Antwort viel schneller bekommen. Irgendwie war meine Anwendung, dass die Zeit war zu erkennen, ob der Photosensor von der Umgebungslichtquelle behindert ist, deshalb brauchen wir Der gleitende Durchschnitt, da sich die Umgebungslichtquelle allmählich im Laufe der Zeit ändern könnte. Wir haben dies als ein Spiel geschaffen, bei dem du deine Hand über die Sensoren nach einem bestimmten Muster schweben musst. D justhalb Mar 28 14 um 10 05.Schwarzes z-score algo sehr robuster Schwellenwertalgorithmus Ich habe einen Algorithmus konstruiert, der für diese Arten von Datensätzen sehr gut funktioniert. Es basiert auf dem Prinzip der Dispersion, wenn ein neuer Datenpunkt eine gegebene x Anzahl von Standardabweichungen von einem bewegten Mittel ist, werden die Algorithmussignale auch z-score genannt Der Algorithmus ist sehr robust, weil er ein separates Bewegungsmedium und eine Abweichung konstruiert, so dass Signale den Schwellenwert nicht verfälschen. Zukünftige Signale werden daher mit annähernd der gleichen Genauigkeit identifiziert, unabhängig von der Anzahl der vorherigen Signale. Der Algorithmus nimmt 3 Eingänge hinter die Verzögerung der Bewegt Fenster Schwelle der z-Score, bei dem der Algorithmus signalisiert und beeinflussen den Einfluss zwischen 0 und 1 der neuen Signale auf die mittlere und Standardabweichung Zum Beispiel wird eine Verzögerung von 5 die letzten 5 Beobachtungen verwenden, um die Daten A Schwelle von 3 zu glätten 5 wird signalisieren, ob ein Datenpunkt 3 5 Standardabweichungen von dem bewegten Mittel entfernt ist. Und ein Einfluss von 0 5 gibt Signale die Hälfte des Einflusses, dass normale Datenpunkte gleichermaßen, ein Einfluss von 0 ignoriert Signale vollständig für die Neuberechnung der neuen Schwelle einen Einfluss von 0 Ist also die robusteste Option 1 ist die am wenigsten. Es funktioniert wie folgt. Der Matlab-Code für diese Demo finden Sie am Ende dieser Antwort Um die Demo verwenden, einfach ausführen und erstellen Sie eine Zeitreihe selbst, indem Sie auf die obere Diagramm Der Algorithmus beginnt nach dem Zeichnen der Anzahl der Beobachtungen zu arbeiten. Anhang 1 Matlab und R-Code für den Algorithmus. Dieser Code gibt beide Sprachen das folgende Ergebnis für die Daten der ursprünglichen Frage. Implementationen in anderen Sprachen. Golang Xeoncross. Appendix 2 Matlab Demonstrationscode klicken, um Daten zu machen. Der oben genannte Code wurde so geschrieben, dass er den vollständigen Algorithmus jedesmal neu berechnet. Natürlich könnte man auch den Code etwas ändern, so dass der FilteredY avgFilter und stdFilter gespeichert werden und die Werte einfach aktualisiert werden, wenn neue Informationen ankommen Dies wird auch den Algorithmus viel schneller machen Für Demonstrationszwecke habe ich beschlossen, den ganzen Code zusammen in einer einzigen Funktion zu setzen. Wenn Sie diese Funktion irgendwo verwenden, bitte kreditieren Sie mich oder diese Antwort Wenn Sie irgendwelche Fragen zu diesem Algorithmus haben, posten Sie sie in Die Kommentare unten oder erreichen Sie mich auf LinkedIn. answered Mar 25 14 at 16 16.One Ansatz ist es, Peaks auf der Grundlage der folgenden Beobachtung zu erkennen. Time t ist ein Peak, wenn yty t-1 ytyt 1.It vermeidet falsche Positive durch Warten Bis der Aufwärtstrend vorbei ist Es ist nicht gerade in Echtzeit, in dem Sinne, dass es den Peak um einen Dt fehlt. Empfindlichkeit kann gesteuert werden, indem man einen Spielraum für den Vergleich benötigt. Es gibt einen Kompromiss zwischen lärmender Erkennung und zeitlicher Verzögerung der Erkennung Sie können bereichern Das Modell durch das Hinzufügen von mehr Parameter. where dt und m sind Parameter, um die Empfindlichkeit vs Zeitverzögerung zu kontrollieren. Dies ist, was Sie mit dem erwähnten Algorithmus erhalten. Sie ist der Code, um die Handlung in python. By Einstellung m 0 5 können Sie bekommen Ein saubereres Signal mit nur einem falschen Positiv. Signalverarbeitung, Peak-Erkennung wird oft über Wavelet-Transformation durchgeführt Sie haben grundsätzlich eine diskrete Wavelet-Transformation auf Ihre Zeitreihen-Daten Zero-Crossings in den Detail-Koeffizienten, die zurückgegeben werden, entsprechen Peaks in der Zeit Serien-Signal Sie erhalten verschiedene Peak-Amplituden, die bei verschiedenen Detailkoeffizienten-Levels erkannt werden, was Ihnen eine mehrstufige Auflösung verleiht. Wenn der Grenzwert oder andere Kriterien von zukünftigen Werten abhängen, dann ist die einzige Lösung ohne Zeit - Maschine oder andere Kenntnisse der zukünftigen Werte ist, jede Entscheidung zu verzögern, bis man genügend zukünftige Werte hat Wenn Sie ein Niveau über einem Mittel wollen, das zum Beispiel 20 Punkte überspannt, dann müssen Sie warten, bis Sie mindestens 19 Punkte vor sich haben Irgendeine Höchstentscheidung, oder sonst der nächste neue Punkt könnte vollständig wegwerfen Sie Ihre Schwelle 19 Punkte ago. Your gegenwärtigen Plot hat keine Spitzen, es sei denn Sie irgendwie im Voraus wissen, dass der allererste Punkt isn t 1e99, die nach der Skalierung Ihrer Handlung s Y Dimension, wäre bis zu diesem Punkt flach. Am 24. März 14 bei 1 57.Geben Sie ein Signal im Zeitbereich, und Sie wollen das Signal glatt bewegen Durchschnittliche und Gaußsche Filter, die verwendet werden Wie wählt man, für die verwendet wird Was. Was sind die Bedingungen, unter denen Gaussian ist besser und Bedingungen, unter denen gleitenden Durchschnitt ist besser. Was ich versuche, mit diesem Signal zu tun ist, Peak-Erkennung zunächst, dann wenden Sie kleine Fenster auf jedem Teil und herauszufinden, die Frequenz ändert sich Doppler-Verschiebungen Für jeden Teil, um herauszufinden, die Richtung der Bewegung aus der Frequenzänderung Ich möchte das Signal in Zeit-Bereich ohne Verlust von Informationen im Frequenzbereich Ich dachte für den Teil der herauszufinden, die Doppler-Verschiebungen, mit STFT wäre ein Gute Referenz könnte auf etwas Papier gegeben werden, das wäre auch sehr hilfreich. Schicht Sep 29 16 at 11 12.
No comments:
Post a Comment