Allgemeine Beschreibung


Die Speicherung von überschüssiger Energie ist aufgrund begrenzter Speicherkapazitäten nach wie vor ein Problem und eine zu hohe Produktion führt letztendlich zu Kosten und Verlusten. Ein wichtiges Ziel der sogenannten „Energiewende“ ist es daher, die Energieproduktion an den tatsächlichen Bedarf anzupassen, um eine bedarfsorientierte Produktion und bei entsprechender Planung sogar einen sofortigen Verbrauch der erzeugten Energie zu ermöglichen. Dazu ist es notwendig, den zukünftigen Energieverbrauch und die Produktion so genau wie möglich vorherzusagen.

 

Der Energieverbrauch kann als ein Input-Output-System betrachtet werden, das von verschiedenen Parametern beeinflusst wird und schließlich den Verbrauch ausgibt. Um solche Vorhersagen treffen zu können, muss ein mathematisches Modell gefunden werden, das dieses System beschreibt. Voraussetzung dafür ist, dass eine ausreichende Anzahl von Aufzeichnungen über den historischen Verbrauch und die sie beeinflussenden Parameter vorhanden sind. In den meisten Fällen müssen diese Daten vorverarbeitet werden, bevor sie zum Erlernen des Systems verwendet werden können. Dabei müssen auch Methoden zur Erkennung von Ausreißern durchgeführt werden, um fehlerhafte Daten zu finden und zu verarbeiten. Diese Daten können dann zusammen mit historischen Verbrauchsdaten zur Identifizierung dieses Systems verwendet werden.

 

Ein vielversprechender Weg, dies zu erreichen, ist der Einsatz von maschinellen Lernmethoden, um aus einer Menge historischer Daten Rückschlüsse auf den zukünftigen Verbrauch zu ziehen. Diese Verfahren haben den Vorteil, dass sie neben den reinen Parameterwerten auch implizit mögliche Zusammenhänge zwischen den verschiedenen, den Verbrauch beeinflussenden Parametern erlernen können. In diesem Versuch werden multiple lineare Regression und künstliche neuronale Netze verwendet, um den Verbrauch vorherzusagen.

Teilbereiche

Dieser Versuch behandelt den gesamten Workflow von der Analyse und Bereinigung der Rohdaten bis hin zur Erstellung eines mathematischen Modells zur Prognose zukünftiger Verbräuche. Die Modelle werden mit linearer Regression und künstlichen neuronalen Netzen erstellt und die Ergebnisse verglichen. Dabei werden auch Grundlagen der Statistik, der Ausreißerdetektion sowie des maschinellen Lernens behandelt.

 

 

Im Abschnitt Versuchsaufbau werden die verwendeten Programmiersprachen und Toolboxen aufgeführt.

Die Aufbereitung und Bereinigung der zugrundeliegenden Daten durch Ausreißerdetektion wird im Abschnitt Datenvorverarbeitung behandelt.

Im Abschnitt VC-Theorie werden statistische Zusammenhänge beim maschinellen Lernen behandelt.

Der eigentliche Lernvorgang mittels linearer Regression und künstlichen neuronalen Netzen wird im Abschnitt Machine Learning behandelt.

Für die Durchführung des Versuchs werden Matlab in der Version 2017b und die zugehörigen Statistics and Machine Learning Toolboxen verwendet.

 

 

Alternativ liegen die Übungen auch im Jupyternotebook-Format zur Bearbeitung in Python vor.

 

 

Die zugrundeliegenden Messwerte wurden im Rahmen eines vorausgegangenen Forschungsprojekts am Umwelt Campus Birkenfeld über einen Zeitraum von circa drei Jahren aufgezeichnet.

 

Es ist nicht möglich die Rohdaten der Sensoren ohne Vorverarbeitung für die Erstellung eines Prognosemodells zu verwenden, da sie Lücken und Messfehler enthalten. Deshalb müssen die Daten vorab analysiert und anschließend bereinigt werden. Ein wesentlicher Schritt ist dabei die Detektionstheorie, also die Erkennung von Ausreißern in Datensätzen.

Die Detektionstheorie beschäftigt sich mit der Erkennung von Auffälligkeiten, zum Beispiel Ausreißern, in einem Datensatz. Generell sind Ausreißer Datenpunkte, welche bezüglich ihrer Werte oder der Art ihres Auftretens von den erwarteten Daten abweichen. In der Regel wird zwischen punktuellen, kontextuellen und kollektiven Ausreißern unterschieden.

 

 

Punktuelle Ausreißer beschreiben einzelne Datenpunkte, die für sich gesehen vom Rest der Daten abweichen. Dies kann bei gemittelten täglichen Außentemperaturen zum Beispiel ein Wert von -999 Grad Celsius sein.

 

Kontextuelle Ausreißer unterscheiden sich nicht generell vom Rest der Daten sondern nur in einem bestimmten Kontext. Bei den Außentemperaturen wäre das zum Beispiel ein Wert von 30 Grad Celsius im Januar. Dies wäre kein punktueller Ausreißer, da ein solcher Wert im Sommer auftreten kann. Im Kontext der Jahreszeit kann der Wert jedoch als kontextueller Ausreißer klassifiziert werden, da 30 Grad Celsius im Winter auf einen Messfehler schließen lassen.

 

Kollektive Ausreißer sind Datenpunkte die für sich gesehen keine Ausreißer sind, aber in Verbindung mit anderen Daten auffällig sind. Bezüglich der Außentemperaturen wäre dies der Fall wenn an mehreren Tagen hintereinander exakt der gleiche Temperaturwert erfasst worden wäre. Diese Werte können für sich gesehen absolut plausibel sein, allerdings ist das mehrmalige Auftreten der exakt gleichen Temperatur an mehreren Folgetagen extrem unwahrscheinlich.

 

 

Zur Detektion punktueller Ausreißer können die Daten als Histogramplot dargestellt und mit einer Normalverteilungskurve verglichen werden. Punktuelle Ausreißer können dadurch sehr einfach als Balken weit außerhalb des Bereichs der Normalverteilung identifiziert werden.

 

Für kontextuelle Ausreißer wird eine Zeitreihenzerlegung (Time Series Decomposition) durchgeführt. Bei dieser Methode wird jeder Wert eines Datensatzes in drei Komponenten (Trend \(T_t\), Saisonwert \(S_t\), Restfehler \(I_t\)) zerlegt, die entweder addiert (additive Methode) oder multipliziert (multiplikative Methode) den ursprünglichen Messwert ergeben. Da die multiplikative Methode besser zu Zeitreihen mit einem exponentiellen Wachstum passt, wird hier die additive Methode verwendet. Die Zerlegung ergibt sich also wie folgt:

$$y_t = T_t + S_t + I_t$$

$$T_t = y \cdot \begin{bmatrix} & \frac{1}{2p}\\p-1\text{ mal} & \begin{cases}\frac{1}{p}\\…\\\frac{1}{p}\end{cases}\\ & \frac{1}{2p}\end{bmatrix}$$
$$S_t = \frac{1}{p} \cdot \sum_{i = t-\frac{p}{2}}^{t+\frac{p}{2}}{T_i}$$
$$I_t = y_t – T_t – S_t$$

 

, wobei \(p\) die Fenstergröße ist.

 

Diese Methode bezieht den Kontext in Form der Saisonkomponente und des Trends in die Betrachtung ein und eignet sich daher für die Detektion von kontextuellen Ausreißern.

 

Zur Erkennung von kollektiven Ausreißern wird die Varianz in sich bewegenden Zeitfenstern berechnet. Dabei zeigt ein Varianzwert nahe 0 eine Häufung identischer Temperaturwerte, die wahrscheinlich einen kollektiven Ausreißer darstellen.

Weitere Informationen und weiterführende Literatur zur Ausreißerdetektion können im zugehörigen Modulkonzept nachgelesen werden. Grundlagen der Statistik werden im Modulkonzept Statistik behandelt.

Beim maschinellen Lernen spielt das Verhältnis der Anzahl der zu lernenden Datensamples zur Dimensionalität der Daten eine entscheidende Rolle. Dieses Verhältnis wird durch die VC-Theorie beschrieben.

Die VC-Dimension (nach der Vapnik-Chervonenkis-Theorie) ist ein Maß für die Dimension eines Raumes von Funktionen, die durch einen statistischen Klassifizierer gelernt werden können. Es ist definiert als die Kardinalität der maximalen Anzahl von Punkten, die der Algorithmus trennen kann. Graphisch veranschaulichen lässt sich das anhand eines Klassifizierers \(f:x\rightarrow \{0,1\}\) mit \(x=\mathbb{R}^2\). Die Samples können als Punkte in der Ebene dargestellt werden. Wir können dann zeigen, dass in 2D alle Sets aus drei Punkten von einer Geraden (linearen Funktion) getrennt werden können (siehe Abbildung).

Darüber hinaus kann gezeigt werden, dass dies mit vier Punkten nicht mehr möglich ist (siehe Abbildung).

 

Daraus kann ein Grenzwert für den Fehler \(\epsilon\), mit dem ein unbekanntes System mit einer Wachstumsfunktion \(m_\mathcal{H}\) und einer Wahrscheinlichkeit \(\delta\) aus \(N\) Samples gelernt werden kann, bestimmt werden. Der In-Sample-Error \(E_{in}\) bezeichnet dabei den Fehler auf den Trainingsdaten und der Out-of-Sample-Error \(E_{out})\) den Fehler auf den Testdaten. Dieser, durch \(E_{in}(h)-E_{out}(h)\) gegebene, Grenzwert ist die VC Generalization Bound und ist durch folgendes Theorem gegeben:

$$\epsilon\geq \sqrt{\frac{8}{N}\ln{\frac{4m_\mathcal{H}(2N)}{\delta}}} \quad \text{mit} \quad \epsilon = E_{in}(h)-E_{out}(h)$$

 

Da die Wachstumsfunktion \(m_\mathcal{H}\) die polynomielle Obergrenze \(N^{d_{vc}}+1\) hat, wobei \(d_{vc}\) die VC-Dimension des gelernten System ist, kann sie durch diese ersetzt werden.

 

Die VC Generalization Bound kann dazu verwendet werden die Anzahl an Samples \(N\) zu bestimmen mit denen eine Hypothese mit einer VC Dimension \(d_{vc}\) mit einer Wahrscheinlichkeit \(\delta\) mit einem maximalen Fehler \(\epsilon\) gelernt werden kann. Dazu wird folgende Bound genutzt:

$$N\geq \frac{8}{\epsilon^2}\ln{\frac{4(2N)^{d_{vc}}+1}{\delta}}$$

 

\(N\) wird dabei iterativ bestimmt indem zuerst ein geschätzter Wert eingesetzt wird der dann so lange durch das Ergebnis ersetzt wird bis er konvergiert.

 

In der Praxis ist jedoch meistens ein Datensatz mit fester Größe gegeben, so dass \(N\) ebenfalls fest ist. In diesem Fall kann ein Grenzwert für die Performance mit diesem Datensatz bestimmt werden. Dazu wird folgende Bound verwendet um mit einer Wahrscheinlichkeit von \(1-\delta\) den out-of-sample error \(E_{out}\) zu berechnen:

$$E_{out}(h)\leq E_{in}(h)+\sqrt{\frac{8}{N}\ln{\frac{4((2N)^{d_{vc}}+1)}{\delta}}}$$

 

Die VC Generalization Bound ist universell, da sie für alle Hypothesenmengen, Lernalgorithmen, Eingabewertebereiche, Wahrscheinlichkeitsverteilungen und binäre Zielfunktionen gilt. Darüber hinaus lässt sie sich auch auf nicht-binäre Zielfunktionen erweitern.

Weitere Informationen und weiterführende Literatur zur VC-Theorie können im zugehörigen Modulkonzept nachgelesen werden.

Die Prognose wird in diesem Versuch mit multipler linearen Regression und mit künstlichen neuronalen Netzen durchgeführt. Im Folgenden werden diese beiden Techniken beschrieben.

 

ML Regression

Die Multiple Lineare Regression ermöglicht die Abbildung eines linearen Einflusses mehrerer Parameter auf einen Zielwert. Damit eignet sie sich hervorragend als Methode für die Erstellung von Energieverbrauchsprognosen.

 

Die Features die hierbei betrachtet werden sind die Verbräuche und gemittelten täglichen Außentemperaturen der letzten vierzehn Vortage und eine errechnete Saisonkomponente sowie ein Werktagsindikator für den zu prognostizierenden Folgetag.

 

Die linearen Einflüsse der Features werden durch die folgende multiple lineare Modellfunktion beschrieben:

 

$$ \begin{align*} Q(t+1) =x(t) \cdot p = p_0 & + p_1 \cdot Q(t) + p_2 \cdot Q(t-1) + \ldots + p_{14} \cdot Q(t-13) \\& + p_{15} \cdot T(t) + p_{16} \cdot T(t-1) + \ldots + p_{28} \cdot T(t-13) \\& + p_{29} \cdot S(t + 1) \\& + p_{30} \cdot W(t+1) \end{align*} $$

 

wobei folgende Notationen gelten:

\begin{array}\\p&=&[p_0,\ldots,p_{30}]^T,\\x(t)&=&[1, Q(t), \ldots, Q(t-13), T(t), \ldots, T(t-13), S(t+1), W(t+1)],\\Q(t)&=&\textrm{Wärmeverbrauch von Tag t},\\ T(t)&=&\textrm{Außentemperatur von Tag t},\\S(t)&=&\textrm{Saisonkomponente von Tag t},\\W(t)&=&\textrm{Werktagindikator von Tag t}. \end{array}

 

Da Prognosemodelle im Allgemeinen nicht lineare Einflüsse besitzen und Daten Messfehler behaftet sind, ist es nicht möglich, \(p\) so zu wählen, dass in der Modellfunktion für alle \(t\) Gleichheit gilt. Aus diesem Grund wird \(p\) so gewählt, dass \(\sum_{t=1}^{m}(Q(t+1)-x(t) \cdot p)^2\) minimal ist.

Es sei \(X=\left[ \begin{array}{c}x(1)\\\vdots\\x(m)\end{array} \right] \in \mathbb{R}^{m \times 30}\) und \(Q=\left[ \begin{array}{c}Q(1+1)\\\vdots\\Q(m+1)\end{array} \right] \in \mathbb{R}^{m}.\).

Dann kann das optimale \(p^{*}\) durch die Moore-Penrose Pseudoinverse \(X^{\#}\), die in Matlab mit dem Befehl \(pinv(X)\) bestimmt werden kann, wie folgt berechnet werden:

$$p^{*}=X^{\#} \cdot Q.$$

Weitere Informationen und weiterführende Literatur zur linearen Regression können im zugehörigen Modulkonzept nachgelesen werden.

 

Neuronale Netze

Ein Neuronales Netz kann im Gegensatz zur Linearen Regression auch nicht-lineare Zusammenhänge abbilden. Dafür ist es jedoch deutlich komplexer und stellt bezüglich des Zustandekommens seiner Ausgabe eine Blackbox dar. Neuronale Netze haben ihre Stärken bei komplexen Aufgabenstellungen, wie beispielsweise der Bildanalyse oder dem Verständnis von natürlicher Sprache.

 

 

Grundsätzlich besteht ein Neuronales Netz aus einem Input Layer, einer Anzahl von Hidden Layern und einem Output Layer. Die Anzahl der Units (Neuronen) im Input Layer entspricht der Anzahl der betrachteten Features und für jeden vorherzusagenden Output gibt es eine Unit im Output Layer. Die Konfiguration der Hidden Layer, das heißt die Anzahl der Layer und der Units pro Layer, kann frei gewählt werden, hat jedoch Einfluss auf die Mächtigkeit und Komplexität des Netzes.

 

 

Units verschiedener Layer können beliebig durch gerichtete gewichtete Kanten verbunden werden. Jede Unit besitzt eine Aktivierungsfunktion, die bezüglich den Gewichten der eingehenden Kanten und den Outputs der verbundenen Units einen eigenen Output erzeugt welcher an die verbundenen Units des Folgelayers weitergegeben werden.

Die Kantengewichte  der einzelnen Kanten werden nach einer zufälligen Initialisierung in einem Trainingsprozess berechnet. Dabei werden Trainingsdaten mit bekannten Ergebnissen in das Netz gegeben und die Gewichte derart angepasst, dass der Fehler zwischen den bekannten Ergebnissen und den Outputs des Netzes minimal wird. Dabei ist zu beachten, dass bei der Minimierung des Fehlers möglicherweise nur ein lokales Minimum erreicht wird und die zufällige Initialisierung zu verschiedenen Endgewichten führen kann. Neuronale Netze verhalten sich also nicht deterministisch.

Weitere Informationen und weiterführende Literatur zu künstlichen neuronalen Netzen können im zugehörigen Modulkonzept nachgelesen werden.

Durch die Bearbeitung der vier als Download verfügbaren Übungsblätter Datenanalyse, VC-Theorie, Multiple Lineare Regression und Künstliche Neuronale Netze können alle Einzelschritte des beschriebenen Versuchs nachvollzogen werden. Dazu enthält das heruntergeladene Archiv die benötigten Daten im csv-Format sowie zwei Matlab-Livescripte, einmal mit fehlendem Code als Aufgabenstellung und einmal mit vollständigem Code als Musterlösung bereit.

 

Datenanalyse

Das Übungsblatt zum Thema Datenanalyse behandelt die Detektion, graphische Visualisierung und Bereinigung verschiedener Ausreißertypen.

Im ersten Schritt werden durch das Plotten der Daten als Histogrammplot in Kombination mit einer Normalverteilungskurve punktuelle Ausreißer visualisiert und entfernt.

Im zweiten Schritt werden kontextuelle Ausreißer entfernt in dem eine Zeitreihenzerlegung (Time Series Decomposition) der Daten durchgeführt wird und anschließend die Trendkomponente innerhalb eines beweglichen Zeitfensters betrachtet wird.

Im dritten Schritt wird eine Varianzanalyse durchgeführt um kollektive Ausreißer zu entfernen.

Am Ende dieser Übung liegen bereinigte Daten vor, die dann für maschinelles Lernen verwendet werden können.

 

VC-Theorie

Das Übungsblatt zum Thema VC-Theorie behandelt die VC Generalization Bound und vermittelt den Zusammenhang zwischen der Anzahl der Samples und der Dimensionalität der zu lernenden Hypothese. Dazu wird im ersten Schritt ein Schwellwert für die benötigte Anzahl an Samples berechnet um eine Hypothese mit einer gegebenen Dimensionalität mit einer gegebenen Wahrscheinlichkeit mit einem ebenfalls gegebenen maximalen Fehler zu lernen. Im nächsten Schritt wird ein Schwellwert mit einer bestimmten Wahrscheinlichkeit für die Performance beim Erlernen einer Hypothese anhand des vorliegenden Datensatzes berechnet. Im letzten Schritt wird dieser Schwellwert mit dem der tatsächlichen Performance beim Lernen mit dem vorliegenden Datensatz verglichen. Dabei wird deutlich, dass es sich bei der VC Bound um einen sehr losen Grenzwert handelt und die hier berechneten Ergebnisse keinen direkten Mehrwert für die praktische Durchführung des Versuchs bieten. Nichtsdestotrotz lohnt es sich, sich mit der VC-Theorie vertraut zu machen um ein besseres Verständnis für maschinelles Lernen zu erlangen.

 

Multiple Lineare Regression

Im dritten Übungsblatt wird mittels Linearer Regression ein Prognosemodell mit dem vorliegenden Datensatz erstellt. Dazu werden die Daten im ersten Schritt in ein Trainings- und ein Test-Set unterteilt. Anschließend wird das Trainingsset verwendet um ein Regressionsmodell zu berechnen. Dann kann die Performance des soeben errechneten Modells auf dem Testset getestet werden. Im letzten Schritt wird die Problematik des Underfittings demonstriert. Dazu wird für die Regression ein zweiter Datensatz verwendet der zusätzlich die Raumtemperaturen aller Einzelräume des betrachteten Gebäudes miteinbezieht. Beim Vergleich mit der ersten Prognose wird deutlich, dass die deutlich höhere Dimensionalität der Daten die Güte der Prognose erheblich verschlechtert.

 

Künstliche Neuronale Netze

In diesem Übungsblatt wird die Prognose aus dem Übungsblatt zur Multiplen Linearen Regression wiederholt, allerdings wird hier statt einem Regressionsmodell ein künstliches neuronales Netz trainiert. Dazu werden wieder zuerst die Daten in ein Trainings- und ein Test-Set unterteilt. Dann wird mit der Matlab Toolbox ein Feedforward Netz auf dem Trainingsset trainiert und anschließend auf dem Testset getestet. Im letzten Schritt wird die Problematik des Overfittings, also des „Auswendiglernens“ der Trainingsdaten demonstriert. Dazu wird wieder ein Neuronales Netz, allerdings ohne Validierungsdaten trainiert. Dabei wird deutlich, dass eine Überanpassung auf dem Trainingsset die Performance auf dem Testset verschlechtert.

Weitere Informationen und weiterführende Literatur zum Thema Over- und Underfitting können im zugehörigen Modulkonzept nachgelesen werden.

Dieser Versuch zeigt exemplarisch wie mit Hilfe von maschinellem Lernen mit historischen Daten mathematische Modelle trainiert werden können um damit zukünftige Werte zu prognostizieren. Dabei behandelt der Versuch das gesamte Spektrum von der Datenanalyse und Vorverarbeitung, über die Erstellung der mathematischen Modelle, die Durchführung der Prognose und die Auswertung der Ergebnisse.

 

Das hier vorgestellte Vorgehen und die angewandten Methoden können dabei auf eine Vielzahl an weiteren Szenarien angewendet werden bei denen es darum geht anhand von Trainingsdaten ein Modell zu lernen welches Zusammenhänge in den Daten abbildet.

 

Der Versuch wurde in der Veröffentlichung Big Data Analytics for Cyber-Physical Systems in Kapitel 8 behandelt und innerhalb eines Workshops der Informatik durchgeführt.