Energieprognose mit hetida designer
Unter Verwendung des hetida designer, unserem interaktiven Python Workflow-Editor, entwickeln wir ein Modell zur Prognose des Stromverbrauchs eines Industrieunternehmens. Neben der praxisbezogenen Fragestellung stehen insbesondere die Einsatzmöglichkeiten und die Bedienung des hetida designer im Vordergrund.
Einleitung und Fragestellung
Nicht nur Industrieunternehmen, sondern auch Stadtwerke, kaufen ihren Strom teils Jahre im Voraus an den Finanzmärkten ein. Je genauer der Verbrauch dabei für einen bestimmten Zeitpunkt prognostiziert werden kann, desto besser. Es werden weniger kurzfristige und teure Nachkäufe nötig. Umgekehrt muss nicht zu viel bereits eingekaufter Strom zu schlechteren Konditionen wieder verkauft werden.
Intuitive Faktoren bzw. Fragen neben der Uhrzeit, die den Stromverbrauch beeinflussen (können) sind:
Welcher Wochentag wird betrachtet? Fällt der Tag auf ein Wochenende?
Sind an diesem Tag Schulferien?
Handelt es sich um einen Feiertag?
Wir betrachten den Lastgang eines produzierenden Unternehmens im Schweizer Kanton Aargau im Jahr 2016. Dieser beinhaltet viertelstündliche Stromverbrauchswerte. Ausgehend von diesen Daten beantworten wir folgende Frage:
Wie hoch ist der Stromverbrauch des Unternehmens am 25. Mai 2017 in der Zeit von 10 bis 11 Uhr?
Für die Vorhersage des Stormverbrauchs arbeiten wir mit dem hetida designer. Wir beginnen unsere Analyse mit der Visualisierung der vorliegenden Daten. Im nächsten Schritt, der Datenaufbereitung, erweitern wir den Datensatz um die oben genannten zeitlichen Einflussfaktoren. Anschließend trainieren wir ein Modell, das den Lastgang aus dem Jahr 2016 möglichst exakt rekonstruiert. Hierzu betrachten wir die Lineare Regression und einen Random Forest Algorithmus, ein Machine Learning Basiswerkzeug. Schließlich verwenden wir den Random Forest Algorithmus, trainiert auf den Daten des Jahres 2016, zur Vorhersage für den 25. Mai 2017.
Visualisierung der Daten
Auszumachen ist die für ein Industrieunternehmen typische fünf Tage Woche. Mitunter, beispielsweise im Mai, Juli, oder Ende Dezember, lassen sich abweichende Strukturen ausmachen. Diese wollen wir zunächst ergründen, erklären und dann in der Prognose für das Jahr 2017 berücksichtigen.
Datenaufbereitung
Jedem Verbrauchswert ordnen wir den entsprechenden Monat, den Wochentag und die Stunde im Tagesverlauf zu. Zur genaueren Analyse der zugrundeliegenden Zeitangaben wählen wir eine Darstellung mittels Sinus und Cosinus. Diese ermöglicht es, zyklische Abhängigkeiten zwischen den jeweiligen Zeitangaben gezielt zu berücksichtigen. Außerdem entscheiden wir für jeden Wert, ob dieser auf ein Wochenende, einen Feiertag oder einen Tag der Schulferien fällt. Der so generierte Datensatz bildet die Grundlage zur Entwicklung eines Modells zur Vorhersage des Stromverbrauchs für den 25. Mai 2017.
Lineare Regression
Neben der Regression der Verbrauchswerte ist für das zugrundeliegende Unternehmen vor allem von Interesse, wie gut das Modell den Lastgang abbildet. Die Güte des Modells analysieren wir dabei mit dem R²-Wert. Außerdem lassen wir die Koeffizienten der Einflussvariablen ausgeben, um einen Eindruck zu bekommen, welche dieser Faktoren einen besonders starken Einfluss auf den Stromverbrauch haben.
Wie zu erwarten, sind die Koeffizienten hinsichtlich Wochenende, Schulferien und Feiertagen stark negativ. An einem solchen Tag wird in dem Unternehmen deutlich weniger Strom verbraucht (siehe auch Abbildung 1). Diese Information ist insbesondere für die spätere Vorhersage von großer Wichtigkeit. Der R²-Wert ist mit 0.82 bereits im sehr guten Bereich.
Die Frage lautet: Sollten wir die Lineare Regression nun zur Vorhersage für den 25. Mai 2017 verwenden? Oder können wir das Modell beziehungsweise den R²-Wert noch weiter verbessern?
Random Forest
In einem zweiten Schritt übergeben wir den aufbereiteten Datensatz aus dem Jahr 2016 an einen Random Forest Algorithmus. Die Güte des Modells analysieren wir abermals mit dem R²-Wert. Zudem lassen wir den prozentualen Einfluss der Einflussvariablen in absteigender Reihenfolge ausgeben.
Der Wochentag hat den mit Abstand größten Einfluss auf den Stromverbrauch. Aber auch Wochenende, Schulferien und Feiertage zeigen signifikante Einflüsse, die bei einer Vorhersage zu berücksichtigen sind. Der R²-Wert liegt nun bei 0.96, konnte somit durch Übergang von der Linearen Regression auf den Random Forest noch deutlich verbessert werden. Der Random Forest ist also eine geeignete Grundlage für den Blick in die Zukunft.
Ergebnis: Vorhersage für den 25. Mai 2017
Zoomen wir in der Visualisierung des Lastgangs aus dem Jahr 2016 auf die Woche rund um den 25. Mai, so erhalten wir einen gewohnten Anblick. Eine fünf Tage Woche mit gleichbleibender Struktur, umrahmt von Wochenenden mit niedrigerem Verbrauch.
Für die Vorhersage, basierend auf dem Random Forest Algorithmus, generieren wir zunächst einen Datensatz für das Jahr 2017, in dem wiederum Abhängigkeiten von Wochentag, Uhrzeit, Feiertag und Schulferien integriert sind. Nun verwenden wir den Random Forest Algorithmus, trainiert auf den Daten des Jahres 2016, zur Vorhersage auf den Daten des Jahres 2017.
Können wir die Werte aus dem Jahr 2016 (Abbildung 9) einfach für das Jahr 2017 übernehmen? Ein Blick auf den Plot der vorhergesagten Verbrauchswerte zeigt ein anderes Bild! Am Donnerstag, den 25. Mai, fällt der vorhergesagte Verbrauch schlagartig ab. Der darauffolgende Freitag zeigt zwar wieder etwas mehr Verbrauch an, jedoch immer noch deutlich unter dem eines “normalen“ Freitags. Woran liegt das?
Beim Blick in den Kalender zeigt sich, dass der 25. Mai 2017 ein Feiertag ist, Christi Himmelfahrt. An diesem Tag standen die Maschinen der Firma still. Am folgenden Freitag wird wieder gearbeitet. Es ist aber davon auszugehen, dass viele Mitarbeiter an diesem Brückentag Urlaub nehmen und das Unternehmen nicht auf voller Auslastung läuft, was zu deutlich geringeren Prognosewerten führt! Der Random Forest Algorithmus hat diesen Sachverhalt erkannt und seine Energieprognose automatisch entsprechend angepasst.
Ihr Ansprechpartner
Dr. Steffen Wittkamp
- +49 201 737230
- [email protected]