Zeitreihenprognose für Gas

Sie haben ein bestimmtes Projekt zu bearbeiten und wissen nicht, wie Sie an die Aufgabe heran gehen sollen? Sie sind sich nicht sicher, ob Ihr Netzentwurf zu Ihrem Problem passt oder ob es da Optimierungsmöglichkeiten gibt? Ist es überhaupt sinnvoll an Ihre Daten mit einem NN basierten Ansatz heranzugehen? Ist MemBrain das richtige Werkzeug für Ihr Problem und Ihre Infrastruktur?

Hier ist der richtige Platz für diese Art von Fragen.
Post Reply
Michael
Posts: 4
Joined: Tue 25. Aug 2009, 13:52

Zeitreihenprognose für Gas

Post by Michael »

Hallo,
für eine Kundengruppe möchte ich eine Absatzprognose für Erdgas erstellen. Insgesamt sehen die Ergebnisse nicht schlecht aus. Allerdings schaffe ich es nicht, eine Prognose zu erstellen:
Die Daten von 2002 bis 2007 sind monatsgenaue Trainingsdaten.
Die Daten von 2008 sind die Validierungsdaten, für 2009 sollen 12 Monatswerte in kWh herauskommen.
Irgendetwas mache ich wohl falsch, ich weiss aber nicht was.

Weitere Fragen:
Zu welchem Zweck werden Delay- oder Decay-Neutronen eingesetzt? Den Hilfe-Text in Membrain habe ich gelesen, ich erkenne aber nicht, wann es sinnvoll ist sie einzusetzen.
Beispiel.zip
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Zeitreihenprognose für Gas

Post by Admin »

Hallo Michael,

Du scheinst versucht zu haben, eine Datei 'Beispiel.zip' anzuhängen, das hat aber wohl nicht geklappt... Kannst Du es bitte nochmal versuchen? Ohne Dein Netz und Beispieldaten kann ich leider zu Deinem Problem nichts sagen...

Viele Grüße
Thomas Jetter
Michael
Posts: 4
Joined: Tue 25. Aug 2009, 13:52

Re: Zeitreihenprognose für Gas

Post by Michael »

Hallo Thomas,

ich hoffe, es hat diesmal geklappt!

Gruß,

Michael
Attachments
Beispiel.zip
(81.5 KiB) Downloaded 814 times
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Zeitreihenprognose für Gas

Post by Admin »

Hallo Michael,

Du hast leider nicht beschrieben, was genau nicht klappt bei Deinen Versuchen. Gesehen habe ich, dass Deine Datei '3_Kundengruppe Think.csv' eine Überschrift mehr hat als sie Datenspalten beinhaltet (die Output-Spalte hat einen Namen aber keine Daten). Da kann der Import in MemBrain dann nicht klappen. Entweder die ganze Spalte (samt Überschrift) weglassen und nur als 'Inputs' importieren, oder Dummy-Werte in die Spalte einfüllen und alles importieren.
Außerdem war Dein 'Jahr' nicht ordentlich normalisiert, der Wertebereich des Neurons ging nur bis 2007.

Du kannst Dir die Mühe des händischen Anpassens und Experimentierens aber nun sowieso sparen, da ich Dir ein Skript vorbereitet habe, das Dein ganzes Vorhaben automatisiert (siehe Anhang). Das Skript basiert auf <Seppys> 'Basis-Skript', das es hier im Forum zum herunterladen gibt, ich habe es nur noch ein wenig auf Deine Bedürfnisse angepasst und ein weiteres 'Feature' eingebaut, das Dir die korrekte Normalisierung auf Basis Deiner Trainings- Validierungs- und 'Think'-Daten abnimmt.

Einfach das Ganze zip-File irgendwo entpacken (erzeugt einen gleichnamigen Unterordner) und das Skript 'Basis.as' in MemBrain ausführen über 'Scripting' - 'Execute Script...'.

Das Skript trainiert Dein Netz 15 Sekunden lang, erzeugt dann den gewünschten Output in der Datei 'Output.csv' und öffnet diese Datei auch gleich, sofern Du mit CSV-Dateien eine Anwendung (z.B. Excel) verknüpft hast.

Das Skript kannst Du bei Bedarf leicht anpassen, es beinhaltet einen Bereich mit Einstellungen und Kommentaren.

Kannst Du bitte kurz Rückmeldung geben, ob damit alles wie gewünscht klappt? Die Validierung sieht übrigens fantastisch aus, das verspricht eine brauchbare Prognose zu werden!
Michael wrote:Zu welchem Zweck werden Delay- oder Decay-Neutronen eingesetzt? Den Hilfe-Text in Membrain habe ich gelesen, ich erkenne aber nicht, wann es sinnvoll ist sie einzusetzen.
Diese sind nur bei Zeitreihen relevant (also wenn Dein Netz eine Reihenfolge-Abhängigkeit der Muster erlernen soll). Du benötigst sie also nicht, so wie es den Anschein hat. Sei froh, zeitabhängige Netze sind um ein vielfaches schwieriger zu handhaben!

Viele Grüße,
Thomas
Attachments
ScriptVorschlagTJ.zip
(18.96 KiB) Downloaded 808 times
Thomas Jetter
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Zeitreihenprognose für Gas

Post by Admin »

Noch ein kleiner Nachtrag:

Obwohl Deine Ergebnisse schon super aussehen, solltest Du darüber nachdenken, den Monat nicht mit 1..12 abzubilden, sondern über eine Sinus-Funktion, z.B. sin ( ( (m - 1) / 12 ) * 2 * Pi) . 'm' ist dabei der Monat 1..12. Das gewährleistet einen glatten, periodischen Verlauf über das Jahr. Je nachdem wo im Jahr Deine erwarteten Maxima oder Minima liegen kannst Du den Sinus auch noch ein wenig verschieben, so dass der Nulldurchgang z.B. im Frühjahr und Herbst anstatt im Sommer/Winter zu liegen kommt.

Viele Grüße und viel Erfolg!
Thomas Jetter
Michael
Posts: 4
Joined: Tue 25. Aug 2009, 13:52

Re: Zeitreihenprognose für Gas

Post by Michael »

Hallo Thomas,

vielen Dank für die schnelle und ausführliche Antwort. Ich habe die Skripte ausprobiert, sie haben einwandfrei funktioniert. Mein Fehler lag tatsächlich daran, dass das Neuron "Jahr" nicht normalisiert war. Ich habe die Normalisierung auf 2002 (unterer Wert) bis 2009 (oberer Wert) gesetzt, dann klappte es. Der Hinweis auf die Dummy-Werte war ebenfalls sehr hilfreich.

Zu den Ergebnissen:
Mittlerweile liegen ja auch die ersten Werte aus dem Jahr 2009 vor. Sie sind als csv-File beigefügt. Zum Teil gibt es erhebliche Abweichungen. Eine einfache Abschätzung per Gradtagszahl (GTZ) liefert da bessere Ergebnisse, aber für den Anfang ist das erstmal ganz o.k. Möglicherweise muss das eine oder andere Neuron hinzugefügt, weggelassen oder geändert werden.

Wir beobachten, dass wir bedingt durch ein sich veränderndes Nutzerverhalten (Energiesparmaßnahmen, andere Brennstoffe) Jahr für Jahr immer etwas weniger Gas verkaufen. Kann ein neuronales Netz dies mittels "Reihenfolge-Abhängigkeit" erkennen?

Viele Grüße,

Michael
Attachments
Vergleich mit realen Daten.zip
(379 Bytes) Downloaded 795 times
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Zeitreihenprognose für Gas

Post by Admin »

Hallo Michael,
Michael wrote:Mittlerweile liegen ja auch die ersten Werte aus dem Jahr 2009 vor. Sie sind als csv-File beigefügt. Zum Teil gibt es erhebliche Abweichungen. Eine einfache Abschätzung per Gradtagszahl (GTZ) liefert da bessere Ergebnisse, aber für den Anfang ist das erstmal ganz o.k.
Ich vermute, dass die Hauptursache der Abweichungen darin begründet liegt, dass das gesamte Jahr 2008 für die Validierung genommen wird und damit für das Training nicht zur Verfügung steht. Damit basiert die Vorhersage für 2009 ausschließlich auf Daten bis inkl. 2007 und Veränderungen aus 2008 können nicht in das Training einfließen.
Mein Vorschlag:
- Alle bis zum jetzigen Zeitpunkt vorhandenen Daten in eine Lesson einfügen.
- Aus dieser per Zufallsauswahl eine Validierungs-Lesson abspalten. MemBrain kann das automatisch über den Menüpunkt 'Extras' im Lesson Editor.
- Damit erhält man zwei statistisch gleichverteilte Lessons, eine für das Training und eine für die Validierung.

Damit klafft in der Historie keine große Lücke.

Natürlich werden durch die Zufallsauswahl die Lessons 'verstümmelt', d.h., sie ergeben keine zeitlich/optisch sinnvollen Verläufe mehr. Das ist aber bei einem zeitunaghängigen Netz nicht relevant, sieht also im Pattern Error Viewer dann einfach nicht mehr hübsch aus.
Michael wrote:Wir beobachten, dass wir bedingt durch ein sich veränderndes Nutzerverhalten (Energiesparmaßnahmen, andere Brennstoffe) Jahr für Jahr immer etwas weniger Gas verkaufen. Kann ein neuronales Netz dies mittels "Reihenfolge-Abhängigkeit" erkennen?
Das ist möglich, damit funktioniert aber der oben erwähnte Ansatz nicht mehr, da ein zeit- (Reihenfolge-)abhängiges Netz natürlich per Definition auf Einhaltung der Reihenfolge der Trainings- und Validierungsmuster angewiesen ist. Sprich: Wenn anders möglich, dann sollte man sich die Schwierigkeiten mit einem zeitabhängigen Netz nicht antun, das ist die letzte Möglicheit, die man erwägen sollte.

Wenn außerdem die beobachtete Veränderung lediglich vom Jahr abhängt, dann ist das Neuron 'Jahr' zu diesem Zweck völlig ausreichend, das Netz kann sich daraus entsprechende Regeln ableiten (wenn diese den Daten zugrunde liegen). Sehr wertvoll erachte ich hier aber die bereits erwähnte Glättung des Monats. Mit Werten von 1..12 ist der Monat momentan ein Sägezahn für das Netz. Das entspricht nicht dem realen Fluß der Zeit, ein Sinus wie erwähnt kann hier Abhilfe schaffen und u.U. starke Vernbesserungen liefen. Über das Zusammenspiel von Jahr-Neuron und sinusförmigem Monatsneuron kann das Netz auf einen kontinuierlichen Zeitfluß in den Eingangsdaten zurückgreifen.

Viele Grüße und weiterhin viel Erfolg!
Thomas Jetter
Michael
Posts: 4
Joined: Tue 25. Aug 2009, 13:52

Re: Zeitreihenprognose für Gas

Post by Michael »

Hallo Thomas,

vielen Dank für Hilfe! Die Idee mit der Abspaltung hat geklappt. Die Ergebnisse sind jetzt wirklich gut.

Nicht funktioniert hat die Idee mit dem Sinus. So richtig verstehe ich Deine Idee auch nicht, da der Sinus ja keine eindeutigen Werte liefert. Für jeweils 2 Monate wird ja derselbe y-Wert geliefert.

Alles in allem hast Du mir sehr geholfen, vielen Dank!

Michael
User avatar
Admin
Site Admin
Posts: 438
Joined: Sun 16. Nov 2008, 18:21

Re: Zeitreihenprognose für Gas

Post by Admin »

Hallo Michael,

das freut mich natürlich, vielen Dank für die Rückmeldung!
Michael wrote:Nicht funktioniert hat die Idee mit dem Sinus. So richtig verstehe ich Deine Idee auch nicht, da der Sinus ja keine eindeutigen Werte liefert. Für jeweils 2 Monate wird ja derselbe y-Wert geliefert.
Das ist wohl richtig, entspricht ja aber vom Einfluß auf das Heizverhalten auch dem Jahresturnus: Es gibt einen Extrempunkt (z.B. die '1' des Sinus) im Winter und den anderen Extrempunkt (also -1) im Sommer. Frühjahr und Herst liegen bei mittleren Werten (um die 0 herum). Wenn es also um die Umgebungstemperaturen und deren Einfluß geht, dann macht der Sinus schon Sinn. Mann sollte den Sinus aber noch so phasenverschieben, damit er auch wirklich wie im Beispiel zu den kältesten und wärmsten Jahreszeiten die Extrema hat. Oder gleich einen Cosinus nehmen (der ja nur ein um 90° verschobener Sinus ist).
Vielleicht ist ja aber auch der Einfluß der Monate von ganz anderer Art und u.U. passt dann auch 1..12 besser.
Wenn Du beides getestet hast und 1..12 besser ist, dann bleib' natürlich dabei!

Viele Grüße
Thomas Jetter
Post Reply