Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
p:ki:timeseries1 [2025/02/26 08:54] – [1. Einfache Zeitreihenvorhersage] Ralf Kretzschmarp:ki:timeseries1 [2025/08/27 11:38] (aktuell) – [3. Dem neuronalen Netzwerk helfen] Tscherter Vincent
Zeile 10: Zeile 10:
  
 ===== - Einfache Zeitreihenvorhersage ===== ===== - Einfache Zeitreihenvorhersage =====
-[{{ :p:pasted:zeitreihe0.png|Zeitreihe der stündlichen Messgrösse X. Horizontal sind die Tagesstunden ersichtlich, vertikal die Werte der Messgrösse X. Orange: beobachtete Vergangenheit, Grün: vorherzusagende Zukunft ((eigene Darstellung, [[https://creativecommons.org/publicdomain/zero/1.0/deed.de|CC0 1.0]])) }}]+<figure right>{{:p:pasted:zeitreihe0.png}}<caption>Zeitreihe der stündlichen Messgrösse X. Horizontal sind die Tagesstunden ersichtlich, vertikal die Werte der Messgrösse X. Orange: beobachtete Vergangenheit, Grün: vorherzusagende Zukunft ((eigene Darstellung, [[https://creativecommons.org/publicdomain/zero/1.0/deed.de|CC0 1.0]])) </caption></figure>
  
 💡 Eine Zeitreihe vorherzusagen kann für vieles nützlich sein, z.B. eine Vorhersage von Wetter- oder Klimamesswerten, von Börsenkursen, Hochwasserständen etc.  💡 Eine Zeitreihe vorherzusagen kann für vieles nützlich sein, z.B. eine Vorhersage von Wetter- oder Klimamesswerten, von Börsenkursen, Hochwasserständen etc. 
Zeile 22: Zeile 22:
 💡 Eine einfache Idee ist z.B. die Folgende. Wir verwenden jeweils die letzten vier Werte der Zeitreihe als Eingangswerte für ein neuronales Netz (die letzten vier Werte können gemessen oder auch vorhergesagte Werte sein). Diese vier Werte sind in den Abbildungen dunkelblau eingezeichnet. Das neuronale Netz wird zuvor so trainiert, dass es immer nur den nächsten, unbekannten Wert voraussagt. D.h. das neuronale Netz sagt nur einen Zeitschritt (+1 Stunde) voraus. Dieser vorhergesagte Wert ist grün eingezeichnet. Ist ein grüner Wert berechnet worden, so kann auch dieser für die Vorhersage des nächsten Zeitschritts ebenfalls als Eingangswert für das neuronale Netz genommen werden. D.h. das neuronale Netz sagt einen Zeitpunkt voraus, rutscht eine Position weiter und sagt den nächsten Zeitpunkt voraus usw. (dies ist in den drei Abbildungen von links nach rechts ersichtlich). 💡 Eine einfache Idee ist z.B. die Folgende. Wir verwenden jeweils die letzten vier Werte der Zeitreihe als Eingangswerte für ein neuronales Netz (die letzten vier Werte können gemessen oder auch vorhergesagte Werte sein). Diese vier Werte sind in den Abbildungen dunkelblau eingezeichnet. Das neuronale Netz wird zuvor so trainiert, dass es immer nur den nächsten, unbekannten Wert voraussagt. D.h. das neuronale Netz sagt nur einen Zeitschritt (+1 Stunde) voraus. Dieser vorhergesagte Wert ist grün eingezeichnet. Ist ein grüner Wert berechnet worden, so kann auch dieser für die Vorhersage des nächsten Zeitschritts ebenfalls als Eingangswert für das neuronale Netz genommen werden. D.h. das neuronale Netz sagt einen Zeitpunkt voraus, rutscht eine Position weiter und sagt den nächsten Zeitpunkt voraus usw. (dies ist in den drei Abbildungen von links nach rechts ersichtlich).
  
-| [{{:p:pasted:zeitreihe1.png|Zeitreihenvorhersage für Zeitschritt 34((eigene Darstellung, [[https://creativecommons.org/publicdomain/zero/1.0/deed.de|CC0 1.0]])) }}] | [{{:p:pasted:zeitreihe2.png|Zeitreihenvorhersage für Zeitschritt 35((eigene Darstellung, [[https://creativecommons.org/publicdomain/zero/1.0/deed.de|CC0 1.0]])) }}] | [{{:p:pasted:zeitreihe3.png|Zeitreihenvorhersage für Zeitschritt 36((eigene Darstellung, [[https://creativecommons.org/publicdomain/zero/1.0/deed.de|CC0 1.0]])) }}] |+<figure center> 
 +<subfigure>{{:p:pasted:zeitreihe1.png}}<caption>Zeitreihenvorhersage für Zeitschritt 34((eigene Darstellung, [[https://creativecommons.org/publicdomain/zero/1.0/deed.de|CC0 1.0]])) </caption></subfigure> 
 +<subfigure>{{:p:pasted:zeitreihe2.png}}<caption>Zeitreihenvorhersage für Zeitschritt 35((eigene Darstellung, [[https://creativecommons.org/publicdomain/zero/1.0/deed.de|CC0 1.0]])) </caption></subfigure> 
 +<subfigure>{{:p:pasted:zeitreihe3.png}}<caption>Zeitreihenvorhersage für Zeitschritt 36((eigene Darstellung, [[https://creativecommons.org/publicdomain/zero/1.0/deed.de|CC0 1.0]])) </caption></subfigure> 
 +<caption>Zeitreihenvorhersagen</caption> 
 +</figure>
  
 🤔 Wie kann ein neuronales Netz aber für so was trainiert werden? 🤔 Wie kann ein neuronales Netz aber für so was trainiert werden?
Zeile 89: Zeile 94:
 ⚠️ Das **Problem** ist der **Sprung** in der Stundenangabe (siehe unten). Für das neuronale Netz ist der Minimalwert 0 Uhr und der Maximalwert 23 etwas komplett anderes. Für uns (und in der Zeitreihe) sind 0 Uhr und 23 Uhr fast dasselbe. ⚠️ Das **Problem** ist der **Sprung** in der Stundenangabe (siehe unten). Für das neuronale Netz ist der Minimalwert 0 Uhr und der Maximalwert 23 etwas komplett anderes. Für uns (und in der Zeitreihe) sind 0 Uhr und 23 Uhr fast dasselbe.
  
-[{{::p:pasted:time1a.png|Dunkelblau: Tagesstunde((eigene Darstellung, [[https://creativecommons.org/publicdomain/zero/1.0/deed.de|CC0 1.0]])) }}]+<figure center>{{::p:pasted:time1a.png}}<caption>Dunkelblau: Tagesstunde((eigene Darstellung, [[https://creativecommons.org/publicdomain/zero/1.0/deed.de|CC0 1.0]])) </caption></figure>
  
 \\ 🤔 Aber wie können wir 24 Stunden mit einer Zahl so darstellen, dass es keinen Sprung gibt, jedoch jede Tagesstunde einen anderen Wert bekommt?  \\ 🤔 Aber wie können wir 24 Stunden mit einer Zahl so darstellen, dass es keinen Sprung gibt, jedoch jede Tagesstunde einen anderen Wert bekommt? 
Zeile 95: Zeile 100:
 💡 Bevor du dir den Kopf zerbrichst, das ist mit einer Zahl nicht möglich, jedoch mit zwei Zahlen schon! Die Idee besteht darin, die Tagesstunde durch den Sinus UND den Cosinus der Tagesstunde zu ersetzen, d.h. durch zwei Eingangsgrössen.((Genauer gesagt verwenden wir ''sin(2*π*hour/24)'' und ''cos(2*π*hour/24)'' als zusätzliche Eingangsgrössen. Das ''2*π/24'' sorgt dafür, dass der Sinus und der Cosinus nach 24 Stunden wieder die Anfangswerte einnimmt.)). So wird jede Tagesstunde durch ein anderes Sinus / Cosinus Wertepaar dargestellt (siehe unten). 💡 Bevor du dir den Kopf zerbrichst, das ist mit einer Zahl nicht möglich, jedoch mit zwei Zahlen schon! Die Idee besteht darin, die Tagesstunde durch den Sinus UND den Cosinus der Tagesstunde zu ersetzen, d.h. durch zwei Eingangsgrössen.((Genauer gesagt verwenden wir ''sin(2*π*hour/24)'' und ''cos(2*π*hour/24)'' als zusätzliche Eingangsgrössen. Das ''2*π/24'' sorgt dafür, dass der Sinus und der Cosinus nach 24 Stunden wieder die Anfangswerte einnimmt.)). So wird jede Tagesstunde durch ein anderes Sinus / Cosinus Wertepaar dargestellt (siehe unten).
  
-[{{::p:pasted:time1b.png|Dunkelblau: Tagesstunde; Blaugrau: Sinus der Tagesstunde; Grau: Cosinus der Tagesstunde((eigene Darstellung, [[https://creativecommons.org/publicdomain/zero/1.0/deed.de|CC0 1.0]])) }}]+<figure center>{{::p:pasted:time1b.png}}<caption>Dunkelblau: Tagesstunde; Blaugrau: Sinus der Tagesstunde; Grau: Cosinus der Tagesstunde((eigene Darstellung, [[https://creativecommons.org/publicdomain/zero/1.0/deed.de|CC0 1.0]])) </caption></figure>
  
 \\ 💡 Also bauen wir statt der Tagesstunde, die Sinus- und Cosinuswerte der Tagesstunde als zusätzliche Eingangsgrössen mit ein. \\ 💡 Also bauen wir statt der Tagesstunde, die Sinus- und Cosinuswerte der Tagesstunde als zusätzliche Eingangsgrössen mit ein.