So trainieren Sie das Modell, um Ereignisse 30 Minuten zuvor anhand mehrdimensionaler Zeitreihen vorherzusagen

9

Experten auf meinem Gebiet sind in der Lage , die Wahrscheinlichkeit eines Ereignisses (binäre Spitze in Gelb) 30 Minuten vor seinem Auftreten vorherzusagen . Die Frequenz beträgt hier 1 Sek., Diese Ansicht repräsentiert Daten im Wert von einigen Stunden. Ich habe schwarz eingekreist, wo "böswilliges" Muster sein sollte . Wechselwirkungen zwischen den Dimensionen existieren, daher können Dimensionen nicht einzeln untersucht werden (oder können sie?)

Geben Sie hier die Bildbeschreibung ein

Ich versuche, mit Scikit Learn ein überwachtes ML-Modell zu erstellen, das einen normalen Rhythmus lernt und erkennt, wann Symptome zu einer Spitze führen können . Ich bin verloren, in welche Richtung ich gehen soll. Ich habe versucht, Anomalien zu erkennen, aber es funktioniert nur für die Erkennung vor Ort, nicht vorher.

Wie kann ich "böswillige" Muster vor diesen Ereignissen erkennen (als Zielvariablen verwenden)?

Ich freue mich über jeden Rat, welche Algorithmen oder Datenverarbeitungspipeline helfen könnten, danke :)

William D.
quelle
Sind das Gehirnwellen?
JahKnows

Antworten:

9

Das ist ein lustiges Problem. Dies ist eine Zeitreihe, und anhand dieser Zeitreihe möchten Sie den Auslöser eines bestimmten Ereignisses identifizieren. Es handelt sich also um ein binäres Klassifizierungsproblem. Wird aufgrund der Informationen aus dem angegebenen Fenster eine Spitze auftreten? Ja oder Nein.

Der erste Schritt ist das Einrichten Ihrer Datenbank. Was Sie haben werden, ist eine Reihe von Instanzen (die sich etwas überlappen können, aber um Verzerrungen zu vermeiden, ist es am besten, wenn sie unabhängig voneinander gezeichnet werden) und dann muss ein Mensch für jede Instanz kennzeichnen, ob es eine Spitze gab oder ob es keine gab Spitze.

Anschließend müssen Sie das Zeitfenster identifizieren, das Sie für Ihre Zeitreihenanalyse verwenden möchten. Sie haben dies getan und entschieden, dass 30 Minuten ein guter Anfang sind.

Jetzt haben Sie 6 Wellenformen in einem 30-Minuten-Fenster, aus denen Sie Daten extrahieren können, um Informationen über Ihre Klassifizierung zu erhalten. Sie können die Rohdatenbeispiele als Ihre Funktionen verwenden, dies ist jedoch viel zu viele Funktionen und führt zu schlechten Ergebnissen. Also brauchst du welche Merkmalsextraktionen , Dimensionsreduzierungen und Techniken.

Es gibt eine Million Möglichkeiten, Daten aus diesen Wellenformen zu extrahieren. Fragen Sie sich zunächst als Mensch, welche verräterischen Anzeichen diese anderen Wellenformen haben sollten, was bedeuten würde, dass eine Spitze entstehen würde. Wenn Sie beispielsweise in seismischen Daten eine Bewegung in einer Wellenform einer Nachbarstadt sehen, sollten Sie damit rechnen, dass in Ihrer Stadt bald Bewegung auftritt.

Im Allgemeinen extrahiere ich gerne alle grundlegenden Statistiken aus meinen Wellenformen. Ermitteln Sie den Mittelwert, die Standardabweichung, den Schwankungsindex usw. Erhalten Sie alles, was Ihrer Meinung nach hilfreich sein könnte. Überprüfen Sie, wie diese Statistiken mit Ihren Labels korrelieren. Je mehr Korrelation, desto besser könnten sie sein. Dann gibt es einige sehr gute Techniken zum Extrahieren von Zeit- und Frequenzinformationen aus Ihren Zeitreihen. Untersuchen Sie die Hüllkurvenmoduszerlegung und die empirische Moduszerlegung . Ich habe die empirische Modenzerlegung bei einigen Zeitreihendaten erfolgreich angewendet und weitaus bessere Ergebnisse erzielt als erwartet.

Jetzt können Sie es besser machen, obwohl Sie weniger Platz für Funktionen haben! Sie können einige Techniken zur Reduzierung der Dimensionalität wie PCA oder LDA anwenden , um einen Raum mit niedrigeren Dimensionen zu erhalten, der Ihre Daten möglicherweise besser darstellt. Dies könnte helfen, keine Garantien.

Jetzt haben Sie einen kleinen Datensatz mit Instanzen, bei denen es sich um eine Frankenstein-Mischung handelt, die Ihre 6 Wellenformen über das 30-Minuten-Fenster darstellt. Jetzt können Sie Ihren Klassifikator auswählen. Sie benötigen einen binären Klassifizierungsalgorithmus, der zum Glück am häufigsten verwendet wird. Es gibt viele zur Auswahl. Wie man wählt?


Wie viele Instanzen haben Sie?

#ichnsteinnces>100#feeintures ?

Dann können Sie eine Deep-Learning-Technik wie neuronale Netze , 1D-Faltungs-neuronale Netze , gestapelte Autoencodierer usw. verwenden.

Weniger als das !!!! Das solltest du bei flachen Methoden bleiben. Schauen Sie sich Kernel-Support-Vektor-Maschinen , zufällige Gesamtstrukturen , k-nächste Nachbarn usw. an.


Verbreiteter Irrtum: Eine flache Methode CAN und WILL eine bessere Leistung als eine tiefe Lerntechnik , wenn Sie richtig Ihre Funktionen ausgewählt haben. Die Merkmalsextraktion ist der wichtigste Aspekt einer Architektur für maschinelles Lernen.


Ich möchte die Anomalieerkennung verwenden!

Dies würde auch funktionieren und es gibt einige gute Techniken, die dies tun würden. Die Art der Anomalieerkennung besteht jedoch darin, die Verteilung des Nennfalls zu lernen. Sie würden Ihrem Algorithmus also alle Instanzen in Ihrem Dataset zuführen, die nicht zu einer Spitze geführt haben. Auf diese Weise kann Ihr Algorithmus erkennen, wann sich eine neuartige Instanz erheblich von dieser nominalen Verteilung unterscheidet, und sie wird als Anomalie gekennzeichnet. Dies würde bedeuten, dass in Ihrem Kontext eine Spitze auftritt.

Auschecken:

Lernen der Mindestvolumensätze http://www.stat.rice.edu/~cscott/pubs/minvol06jmlr.pdf

Anomalieerkennung mit Score-Funktionen basierend auf Nearest Neighbor Graphs https://arxiv.org/abs/0910.5461

Neue Statistik in der P-Wert-Schätzung zur Erkennung von Anomalien http://ieeexplore.ieee.org/document/6319713/

Sie können auch rudimentärere Anomalieerkennungstechniken verwenden, z. B. einen allgemeinen Likelihood-Ratio-Test. Aber das ist eine Art alte Schule.

JahKnows
quelle
Toller Walkthrough, vielen Dank für Ihre Detailgenauigkeit. Die hier gezeigten Zeitreihen sind bereits eine Auswahl der ursprünglichen Merkmale und wurden für das menschliche Auge beispielsweise mit dem rollierenden Mittelwert "sichtbar" gemacht. Der "Roh" -Datenfeed besteht aus rund 50 Features und etwa einer Million Instanzen. Ich denke, das führt mich zu tiefen Lerntechniken! Ich tauche in die Feature-Extraktion ein und werde die Ergebnisse meiner Reise definitiv hier veröffentlichen :)
William D
Ja, das wäre großartig, um uns auf dem Laufenden zu halten. Wenn Sie 50 Funktionen und 1 Million Instanzen haben. Entscheiden Sie sich zuerst für das neuronale Netzwerk, das am einfachsten zu codieren ist, da bereits so viele Pakete vorhanden sind (z. B. Keras in Python). Versuchen Sie auch PCA und LDA, um Ihren Funktionsbereich in einen repräsentativeren zu verwandeln.
JahKnows
0

Sie müssen Feature-Extraktion oder Feature-Engineering durchführen, um Variablen in Ihren Trainingsdaten zu erstellen, die die von Ihnen eingepackten Muster "abfangen" und dann eine Zielvariable mit den Worten "Böswilligkeit gefunden" oder "Böswilligkeit gefunden nicht gefunden" haben.

Nehmen Sie ein wirklich einfaches Beispiel: Vorhersagen, ob es regnen wird. Sie könnten in den nächsten 30 Minuten einen einigermaßen guten Regenprädiktor finden, der alle 30 Minuten prüft, ob 1. es plötzlich bewölkt ist und 2. der Luftdruck abfällt.

CalZ
quelle