Zeitreihenprognose mit TensorFlow: Komponenten, Modelle und Schritte
Veröffentlicht: 2021-05-02Inhaltsverzeichnis
Was ist Zeitreihenprognose?
Wussten Sie, dass der asiatisch-pazifische Raum mit einer CAGR (Compound Annual Growth Rate) von über 40 % der weltweit am stärksten wachsende Markt für Deep Learning ist? Die TensorFlow-Vorhersage von Zeitreihen ist ein wichtiges Konzept in Deep Learning und ML. Alle Deep-Learning-/ML-Modelle haben einen entsprechenden Datensatz, der eine Sammlung von Beobachtungen darstellt. Diese Beobachtungen enthalten oft eine Zeitkomponente. Zeitreihen ordnen die Beobachtungen zeitlich sequentiell an und fügen so dem Datensatz eine neue Dimension hinzu, dh die Zeit.
Man kann darüber nachdenken, was durch die Erhöhung der Dimensionalität ihres Datensatzes erreicht wird. Nun, wenn Sie Ihrem Datensatz eine Zeitdimension hinzufügen, wird ein detaillierter Abhängigkeitsgrad zwischen den Beobachtungen erstellt. Das Ergebnis wird dann mit Hilfe von Zeitreihenvorhersagen früherer Beobachtungen vorhergesagt.
Die Verwendung von Zeitreihendaten (historische Daten) zur Vorhersage der Zukunft wird als Zeitreihenprognose bezeichnet. Man sollte auch sicherstellen, dass die Zukunft völlig unbekannt sein sollte und nur auf der Grundlage historischer Daten vorhergesagt werden kann.
Die Zeitreihendaten werden analysiert, um Modelle zu entwickeln, die die Daten effektiv beschreiben. Zur Entwicklung geeigneter Modelle wird die Zeitreihe in mehrere Komponenten zerlegt. Sobald die Modelle entwickelt sind, die die historischen Daten am besten beschreiben, werden sie für Prognosen verwendet. Man sollte die Zeitreihenanalyse nicht mit der Zeitreihenprognose verwechseln, da letztere erst dann zum Einsatz kommt, wenn erstere abgeschlossen ist.
Zeitreihenkomponenten
Bevor man sich mit TensorFlow-Prognosen für Zeitreihen auskennt, sollte man mit der Komponente einer Zeitreihe vertraut sein. Bei der Zeitreihenanalyse wird eine Zeitreihe in vier Komponenten zerlegt. Diese Komponenten helfen dabei, den Datensatz richtig zu verstehen. Die vier Komponenten einer Zeitreihe sind wie folgt:
- Trends – Das Verhalten einer Serie/eines Datensatzes im Laufe der Zeit wird durch Trends erklärt. Das steigende und fallende Verhalten einer Zeitreihe wird durch Trends erklärt.
- Level – Level ist der Basiswert der Zeitreihe, wenn man bedenkt, dass die Darstellung der Reihe eine gerade Linie ist. Viele Experten definieren Level auch als Mittelwert der Reihe.
- Saisonalität – Die Verhaltensweisen der Reihe, die sich im Laufe der Zeit wiederholen, werden als Saisonalität bezeichnet. Einige Experten bezeichnen Saisonalität auch als periodische Schwankungen.
- Rauschen – Jeder Datensatz enthält einige Datenpunkte/Ausreißer, die das Zeitreihenmodell nicht erklären kann. Diese Datensätze besitzen unvorhersehbare Eigenschaften und können nicht über Zeitreihenanalysen/Prognosen abgebildet werden.
Man sollte beachten, dass eine Zeitreihe einen Pegel und etwas Rauschen haben muss. Trends und Saisonalität in einer Zeitreihe sind jedoch optional.
Warum TensorFlow?
Während auf dem Markt viele Frameworks für Zeitreihenprognosen verfügbar sind, bevorzugen Deep-Tech-Experten TensorFlow von allen verfügbaren Frameworks. TensorFlow ist in Python, C++ und CUDA geschrieben, die zu den weit verbreiteten Programmiersprachen gehören. TensorFlow ist eine Open-Source-Softwarebibliothek, die speziell für maschinelles Lernen und Deep Learning entwickelt wurde.
TensorFlow hilft uns beim Erstellen von ML-Modellen während der Zeitreihenanalyse, die für Prognosen verwendet werden. Es bietet Benutzern die Möglichkeit, verschiedene Arten von Modellen wie CNN (Convolutional Neural Network), RNN (Recurrent Neural Network) usw. zu erstellen. TensorFlow kann Ihnen helfen, je nach Benutzer und Datensatz einen einzelnen oder mehrere Zeitschritte vorherzusagen. Während der Zeitreihen-TensorFlow- Prognose können Sie:
- Prognostizieren Sie ein einzelnes Merkmal/eine einzelne Dimension für einen einzelnen Zeitschritt.
- Prognostizieren Sie alle Dimensionen des Datensatzes für einen einzelnen Zeitschritt.
- Vorhersage für mehrere Schritte in einem einzigen Schuss (alle Vorhersagen auf einmal treffen).
- Vorhersage für mehrere Schritte, wobei jeweils eine Vorhersage getroffen wird (autoregressiv).
Einrichten von Daten für Zeitreihenprognosen
Vor der Zeitreihenprognose müssen wir die Daten entsprechend aufbereiten. Das Setup für die Zeitreihenprognose umfasst verschiedene Prozesse wie Datenextraktion, Visualisierung, Exploration , Bereinigung usw. Lassen Sie uns die Schritte sehen, die hinter der Erstellung der Daten für die Zeitreihenprognose stehen:
- Der grundlegende Schritt besteht darin, die Daten zu importieren oder die Daten zu extrahieren. Sie benötigen einen Datensatz, aus dem mithilfe von Zeitreihenprognosen umfassende Erkenntnisse extrahiert werden.
- Der nächste Schritt ist die Datenbereinigung, bei der Sie die doppelten oder irrelevanten Datenpunkte entfernen. Fehlende Daten werden in diesem Schritt ebenfalls behandelt. Wenn frühzeitig Ausreißer entdeckt werden, entfernen Sie diese aus dem Datensatz. Die Strukturfehler können auch unter Datenbereinigung behoben werden.
- Die zeitlich veränderlichen Größen einer Zeitreihe werden als Signale bezeichnet. Auch diese Signale repräsentieren verschiedene physikalische Ereignisse in einer Zeitreihe. Wenn es beispielsweise eine Zeitreihe von Wetterbeschreibungen eines beliebigen Ortes über verschiedene Tage gibt, dann wären die Signale die physikalischen Ereignisse wie Temperatur, Niederschlag usw. Fahren Sie fort, indem Sie die Signale in das Sin-Cos-Format konvertieren.
- Konvertieren Sie neben der Konvertierung von Signalen in das Sin-Cos-Format die Uhrzeit und das Datum in Sekunden. Wenn Sie fertig sind, zeichnen Sie die Zeit und die Sin-Cos-Funktion auf.
- Bevor wir unsere Daten prognostizieren und trainieren, teilen wir die Daten zur weiteren Vereinfachung nach Zeit auf.
- Die Daten sollen nun vor dem Training normalisiert werden. Der einfachste Schritt zur Datennormalisierung besteht darin, den Mittelwert des Datensatzes von jedem Datenpunkt zu subtrahieren und ihn dann durch die Standardabweichung zu dividieren.
- Sobald Sie mit der Datennormalisierung fertig sind, müssen Sie auf Datenverzerrung prüfen. Datenverzerrung ist definiert als eine Bedingung, bei der einige Elemente des Datensatzes im Vergleich zu anderen Elementen stark vertreten sind. Voreingenommene Daten führen zusammen mit verzerrten Analysen zu einer geringeren Genauigkeit. Sie können ein Geigendiagramm zeichnen, um jegliche in Ihrem Datensatz vorhandene Datenverzerrung zu beseitigen.
Datenfensterung
Sie müssen sich fragen, dass vor der Zeitreihenprognose viele Prozesse erforderlich sind. Nun, junge Technikbegeisterte sollten wissen, dass die Datenvorbereitung ein entscheidender Schritt vor dem Training oder der Analyse der Daten ist. Data Windowing ist der letzte Schritt beim Einrichten der Daten für die Zeitreihen-TensorFlow- Prognose. Data Windowing hilft dabei, die Daten bedenkenlos mit verschiedenen Modellen zu nutzen.
Wenn ein Modell beispielsweise 1 Stunde in die Zukunft prognostiziert, benötigen Sie für eine effektive Vorhersage ein 6-Stunden-Fenster mit historischen Daten. Das historische Datenfenster wird als "Eingabebreite" bezeichnet, während das vorherzusagende Datenfenster während der Datenfensterung als "Offset" bezeichnet wird.
Checkout: Die beliebtesten Tensorflow-Projekte
TensorFlow-Einzelschrittmodelle
Wenn Sie den Datensatz in seiner einfachsten Form haben und nur für einen Zeitschritt in der Zukunft vorhersagen, verwenden Sie die Einzelschrittmodelle von TensorFlow. Wenn Sie beispielsweise ein Datenfenster von „Stunden“ erstellt haben, dann sagen Sie für einen Zeitschritt voraus, was bedeutet, dass Sie eine Stunde in der Zukunft vorhersagen. Ein „WindowGenerator“-Objekt wird in TensorFlow erstellt, um Einzelschrittpaare zu entwickeln, dh Eingabe und Bezeichnung.
Es wird auch empfohlen, vor dem Trainieren Ihres Modells ein Basismodell zu erstellen. Das Erstellen eines Basismodells hilft Ihnen beim Vergleich des anfänglichen Einzelschrittmodells mit zukünftigen komplizierten Modellen. Wenn Sie beispielsweise die Temperatur für 1 Stunde in der Zukunft vorhersagen, erstellen Sie ein Basismodell, das die aktuelle Temperatur als Vorhersage (keine Änderung) zurückgibt.
Da sich die Temperaturen im Laufe der Zeit langsam ändern, ist es möglich, dass sich die Temperatur nach einer Stunde nicht ändert. Beachten Sie, dass das Basismodell nicht effektiv ist, wenn mehrere Zeitschritte vorhergesagt werden.
Ein weiteres Beispiel für die Erstellung eines einzelnen Zeitschrittmodells mit TensorFlow ist das Einfügen einer linearen Transformation zwischen Eingabe und Ausgabe. Stellen Sie sicher, dass die Ausgabe nur von dem einzelnen Zeitschritt abhängt, der ausgewertet werden soll, während Sie mit TensorFlow ein lineares Modell erstellen. Das dichte Modell ist ein weiteres einstufiges Modell, das mit TensorFlow erstellt wird.
Convolution Neural Networks via TensorFlow können auch zur Vorhersage für einen einzelnen Zeitschritt verwendet werden. Eine Faltungsschicht in TensorFlow verwendet mehrere Zeitschritte als Eingabe für die Vorhersage eines Zeitschritts. RNNs werden auch häufig für Zeitreihenprognosen verwendet.
Der interne Zustand der Maschine springt auch von einem Zeitschritt zum anderen, da RNNs eine Zeitreihe Schritt für Schritt verarbeiten (standardmäßig). Zeitreihen-TensorFlow- Prognosen über RNN sind eine gute Wahl, da RNN-Modelle dazu neigen, sich an eine lange Historie von Eingaben (historische Daten) zu erinnern.
TensorFlow-Mehrschrittmodelle
Bei mehrstufigen Modellen erfolgt die Vorhersage über eine Reihe von Zeitschritten. Im Gegensatz zu einem einstufigen Modell prognostiziert ein mehrstufiges Modell eine Reihe zukünftiger Werte anhand historischer Daten. Mehrschrittmodelle können die gesamte zukünftige Zeitreihe auf einmal per Single-Shot-Vorhersage vorhersagen. Sie können auch die autoregressive Vorhersage verwenden, bei der das Modell jeweils eine Einzelschrittvorhersage macht. Das Ergebnis der Einzelschrittvorhersage in der autoregressiven Vorhersage dient als Eingabe für die nächste Zeitschrittvorhersage.
Fazit
Die TensorFlow-Vorhersage von Zeitreihen liefert im Vergleich zu anderen Frameworks genaue Ergebnisse. Wir haben einige der Einzelschrittmodelle (CNN, RNN, Dense usw.) besprochen, die für die Einzelschrittvorhersage über TensorFlow verwendet werden können.
Sie können auch eine Reihe von zukünftigen Werten vorhersagen, indem Sie mehrstufige Modelle verwenden. Man sollte auch beachten, dass die Datenvorbereitung ein wichtiger Schritt vor der TensorFlow- Vorhersage von Zeitreihen ist. Sie können mehr über die Zeitreihenvorhersage in DL (Deep Learning) und ML erfahren, indem Sie sich für das Advanced Certificate Program von upGrad in DL & ML entscheiden . Fangen Sie an, Zeitreihenprognosen mit TensorFlow zu lernen!
Welche Einschränkungen gibt es bei der Verwendung von TensorFlow?
Obwohl TensorFlow die Länge des Codes verringert, macht es den Code auch etwas komplex. Im Vergleich zu seinen Konkurrenten ist TensorFlow langsam und auch weniger brauchbar. TensorFlow hinkt der Zeit hinterher, wenn es darum geht, symbolische Schleifen für unbestimmte Sequenzen anzubieten. TensorFlow bietet nur NVIDIA-GPU-Unterstützung und Python-GPU-Programmierunterstützung. Es hat keine anderen Formen der Unterstützung. Es hat nicht viele Vorteile für Benutzer des Windows-Betriebssystems.
Die Amplitude der Diskontinuitäten an den Rändern jeder vom Digitalisierer aufgezeichneten endlichen Folge wird durch Fensterung reduziert. Ein Fenstersystem ermöglicht es vielen Apps, die grafische Anzeige und die Präsentationsressourcen eines Computers gleichzeitig zu teilen. Möglicherweise möchten Sie viele Apps gleichzeitig auf einem Computer mit einer grafischen Benutzeroberfläche (GUI) verwenden.
Ist es schwer, TensorFlow zu lernen?
TensorFlow ist für manche Menschen einfach, während andere es für schwer zu erlernen halten. Wenn Sie Vorkenntnisse in verschiedenen Programmiersprachen haben und mit verschiedenen maschinellen Lerntechniken vertraut sind, wird Ihnen das Erlernen von TensorFlow leicht fallen. Der Schwierigkeitsgrad hängt jedoch auch von Ihrem Interesse ab. Wenn Sie wirklich an TensorFlow interessiert sind, wird es keine sehr schwierige Aufgabe sein, es zu lernen.