In dieser Arbeit sollte mittels Deep Learning ein Modell erstellt werden, mit dem sich die Auslastung eines Servers in einem Rechenzentrum vorhersagen lässt. Dafür sollte evaluiert werden, welche Modell-Architektur für diese Zeitreihenvorhersage am besten geeignet sind. Dafür wurde zunächst eine theoretische Untersuchung durchgeführt und anschließend ein Vergleich der geeigneten Modell-Architekturen angestellt. Es stellte sich heraus, dass ein Convolutional Neural Network (CNN) mit einer Long Short Term Memory (LSTM) Schicht die besten Prognosen erzeugt.
Es wurde untersucht, wie sich die Hauptkomponentenanalyse zur Dimensionsreduktion auf die Modelle auswirkt. Dies zeigte, dass die Effekte stark von der Architektur abhängen. Die System-Architektur einer Webanwendung wurde so erweitert, dass es möglich ist, neben der historischen Serverauslastung auch Prognosen anzuzeigen. Die Visualisierungen der aufgezeichneten Daten wurden um die Vorhersagen erweitert.
Die Arbeit stellt schließlich eine Möglichkeit dar, wie der Lebenszyklus des Prognosemodells in einem produktiven System mit stetiger Auslastungsmessung integriert werden kann.
Inhaltsverzeichnis
1 Einleitung
1.1 Ausgangssituation
1.2 Zielsetzung
1.3 Gliederung der Arbeit
2 Einführung in die Zeitreihenanalyse in der Statistik
2.1 Definition einer Zeitreihe
2.1.1 Arithmetisches Mittel
2.1.2 Erwartungswert
2.1.3 Varianz
2.1.4 Kovarianz
2.2 Stationare Prozesse
2.3 Das Komponentenmodell
2.3.1 Trendbereinigung
2.3.2 Saisonbereinigung
2.4 AR-, MA- und ARMA-Modelle
2.4.1 AR(p)-Modelle
2.4.2 MA(q)-Modelle
2.5 ARMA(p,q)-Modelle
2.6 ARIMA(p,d,q)-Modelle
2.6.1 Vorgehensweise zur Zeitreihenvorhersage mit ARIMA-Modellen
3 Python für Machine-Learning und Data Science
3.1 Relevante Python-Bibliotheken
3.1.1 Numpy
3.1.2 Pandas
3.1.3 statsmodels
3.1.4 Matplotlib
3.1.5 Tensorflow
3.1.6 Keras
3.1.7 Scikit-learn
4 Der Data Science Prozess
4.1 Fragestellung
4.2 Datenbeschaffung (1)
4.3 Datenexploration (1)
4.4 Datenbeschaffung (2)
4.5 Datenexploration (2)
4.5.1 Rücksprache mit Datenbankadministrator
4.6 Datenbeschaffung (3)
4.7 Datenexploration (3)
4.7.1 Vereinheitlichung der Timestamps
4.7.2 Merkmale als Spalten
4.7.3 Keine fehlenden Merkmalswerte
4.8 Datenmodellierung
4.9 Visualisierung
5 Grundlagen für die Prognosenerstellung mit Machine-Learning
5.1 Was ist Machine-Learning?
5.2 Statistische Methoden oder Machine-Learning?
5.3 Machine-Learning-Klassen
5.3.1 Supervised Learning
5.3.2 Unsupervised Learning
5.3.3 Reinforcement Learning
5.3.4 Entscheidung für eine Klasse
5.4 Künstliche Neuronale Netze
5.4.1 Das Perzeptron nach Rosenblatt
5.4.2 Aufbau von KNNs
5.4.3 Lernen mittels Gradientenabstiegsverfahren
5.4.4 Backpropagation
5.5 Über- und Unteranpassung eines Künstlichen Neuronalen Netzes
5.6 Regularisierung
5.6.1 Dropout-Regularisierung
5.6.2 Regularisierung durch Early Stopping
5.7 Standardisierung
5.8 Univariate und multivariate Vorhersagen
6 Zeitreihenprognose mit Neuronalen Netzen
6.1 Evaluation verschiedener Architekturen Neuronaler Netze
6.1.1 Multilayer Perceptron (MLP)
6.1.2 Convolutional Neural Network (CNN)
6.1.3 Recurrent Neural Network(RNN)
6.1.4 Long Short Term Memory (LSTM)
6.1.5 Gated Recurrent Unit (GRU)
6.2 Datenvorbereitung für multivariate KNNs
6.2.1 Featuregenerierung aus den Zeitstempeln
6.2.2 Hauptkomponentenanalyse (PCA)
6.2.3 Ablauf der Datenvorbereitung
6.3 Implementierung der KNNs
6.3.1 Grundlegende Designentscheidungen
6.3.2 Implementierung des MLP
6.3.3 Implementierung des CNN
6.3.4 Implementierung des LSTM- und GRU-Netzes
6.4 Modelloptimierung
6.4.1 Kreuzvalidierung
6.4.2 Rastersuche
6.4.3 Ergebnisse der Hyperparameteroptimierung
6.5 Trainings-, Validierungs- und Testdaten
6.6 Modellbewertung
6.6.1 Möglichkeiten zur Fehlerbestimmung
6.6.2 Fehlerauswertung der erstellten Modelle
6.6.3 Interpretation der Fehlerauswertung
6.6.4 Entscheidung für ein Modell
6.6.5 Modell für zweite Serverinstanz
7 Möglichkeiten zur Integration der Prognosen in die Webanwendung
7.1 Durchführen des Machine-Learning im Browser
7.1.1 Tensorflow.js
7.1.2 WebAssembly
7.1.3 Iodide
7.1.4 Pyodide
7.2 Bereitstellung der Prognosewerte
7.3 Entscheidung für einen Ansatz
8 Umsetzung des gewahlten Ansatzes
8.1 Die Webanwendung DC-Cubes
8.2 Verwendete Technologien
8.2.1 React
8.2.2 D3.js
8.2.3 three.js
8.2.4 Solr
8.2.5 Node.js
8.3 Backend-Architektur
8.4 Konzept zur Bereitstellung der Prognosewerte
8.5 Visualisierung der Prognosen in der Webanwendung
8.5.1 Ausgangssituation
8.5.2 Erweiterung um Prognose
8.6 Technische Umsetzung
8.6.1 Speichern der historischen Daten
8.6.2 Erzeugen und Speichern der Prognosen
8.6.3 Laden der Prognose in die Webanwendung
8.6.4 Neue Prognosen erstellen
8.6.5 Anzeigen der Prognose aktivieren
8.6.6 Anzeigen der Prognose im 2d-Chart
8.6.7 Anzeigen der Prognose im 3d-Chart
8.6.8 Merge-Core
9 Zusammenfassung und Ausblick
9.1 Zusammenfassung dieser Arbeit
9.2 Lebenszyklus der Prognosemodelle
9.3 Ausblick
Literaturverzeichnis
Abbildungsverzeichnis
Tabellenverzeichnis
Listingverzeichnis
A Abbildungen
B Tabellen
C Listings
Glossar
Abbildung in dieser Leseprobe nicht enthalten
Einleitung
Dieses Kapitel stellt zunachst die Ausgangssituation dar, formuliert dann die daraus entstehende Zielsetzung dieser Arbeit und legt schliefilich die Gliederung der Arbeit dar.
1.1 Ausgangssituation
Rechenzentren spielen seit eine zentrale Rolle bei Organisationen und Unternehmen, um diverse Dienste zur Verfügung zu stellen und Daten zu speichern. Mit der in den letzten Jahrzehnten steigenden Bedeutung des Internets und der IT wuchsen auch die Datenmengen und die Bedeutung der Daten nahm zu. Gleichzeitig erhöhten sich damit die Ansprüche an die Netzwerkstrukturen, die diese Daten speichern und zur Verfü- gung stellen. Diese Server sollen möglichst ununterbrochen erreichbar sein und immer höhere Geschwindigkeiten ermöglichen 42. Bei der Erreichbarkeit besteht für den reibungslosen Ablauf eines Betriebs meist der Anspruch der sogenannten „Hochver- fügbarkeit“. Das heifit nach 80, dass die Server nahezu stetig erreichbar sein und die Ausfallquote weniger als ein Prozent betragen soll. Weiter weifit der Autor darauf hin, dass je gröfier die Anzahl der verwendeten Gerate ist, desto komplizierter und teurer ist es auch, dieses Ziel zu erreichen. Zudem ist der Betrieb eines Rechenzentrums an sich mit nicht vernachlassigbaren Kosten verbunden. Diese setzten sich hauptsachlich aus den Aufwendungen für die Hardware und den Stromkosten zusammen 36. Daher ist es auch aus dieser Sicht für Grofiorganisationen mit grofien Rechenzentren von wirtschaftlichem Interesse, die Infrastruktur effizient und mit geringen Ausfallzeiten zu betreiben. Nach 36 wird dies aber nur selten erreicht. Dementsprechend ist die Überwachung und Optimierung von Rechenzentren von grofier Bedeutung.
Der für diese Arbeit vorliegende Datensatz stammt von der Bundesagentur für Arbeit. Mit rund 9000 Servern, von denen die Halfte virtuell ist, die in zwei redundanten Rechenzentren betrieben werden, liegt eine der gröfiten IT-Landschaften Deutschlands vor 3.
1.2 Zielsetzung
Technologien aus den Bereichen der Künstlichen Intelligenz und Data Science können bei mehreren Aspekten eines Rechenzentrums eine Unterstützung sein. Laut 51 konnte Google durch deren Einsatz die Energiekosten für ihre Rechenzentren um 40% senken. Ein durch statistische Vorhersagen angereichertes Monitoring kann aufierdem zu erhöhter Effizienz führen und dabei helfen, Ausfallzeiten zu minimieren 1. Im Zuge dieser Arbeit sollen basierend auf realen Belastungsdaten mittels Machine Learning Prognosen über die zukünftige Auslastung eines Servers getroffen werden. Die Daten stammen dabei aus der IT-Struktur der Bundesagentur für Arbeit. Diese Vorhersagen können als Grundlage zur Optimierung und Verhinderung von Netzwerkausfallen dienen. Dafür ist es nötig, die Ergebnisse zu visualisieren. So können die Prognosen vom Menschen besser verstanden und analysiert werden und es wird eine einfachere Kommunikation ermöglicht [86, S. 1 f.]. Diese Visualisierung soll in eine prototypische Web-Anwendung, die zum Monitoring der oben genannten IT-Struktur konzipiert ist, integriert werden. Dabei soll kenntlich gemacht werden, ob der Benutzer gerade Monitoringdaten der Vergangenheit oder die prognostizierten Werte betrachtet. Nach dem Lesen dieser Arbeit kennt der Leser Grundlagen zur Zeitreihenvorhersage in der Statistik und für die Prognosenerstellung mit tiefen Künstlichen Neuronalen Netzen. Er kennt Architekturen beziehungsweise Arten von Neuronalen Netzen, die sich für die Verarbeitung von Sequenzen, zu denen Zeitreihen gehören, anbieten sowie deren besonderen Eigenschaften, die sie dafür geeignet machen. An einem konkreten Datensatz kann er den Prozess zur Prognosenerstellung nachverfolgen. Schliefilich lernt er Leser Möglichkeiten kennen, mit denen man die Zeitreihenvorhersagen in eine Webanwendung integrieren kann. Dem Leser wird eine Implementierung der Integration sowie die verwendete Visualisierung in der Webanwendung vorgestellt.
1.3 Gliederung der Arbeit
Das folgende Kapitel gibt eine Einführung in die Zeitreihenanalyse in der Statistik und stellt eine Modellklasse vor, die für Zeitreihenvorhersagen verwendet werden kann. Anschliefiend wird in Kapitel 3 erlautert, warum sich Python als Programmiersprache für Machine-Learning und Data Science eignet. Dabei werden einige für diese Bereiche und diese Arbeit relevante Bibliotheken vorgestellt. Daraufhin wird in Kapitel 4 ein Prozess erlautert, der die Vorgehensweise bei einem Data Science Projekt allgemein aber auch in dieser Arbeit, beschreibt. Im darauf folgenden Kapitel werden einige Grundlagen zur Prognosenerstellung mittels Machine-Learning vorgestellt, bevor dann in Kapitel 6 auf konkrete Modell-Architekturen eingegangen wird. In diesem Kapitel wird auch die Hauptkomponentenanalyse und deren Auswirkungen auf die verschie- denen Netz-Architekturen dargestellt. Anschliefiend wird die Implementierung und Optimierung der Modelle beschrieben. Daraufhin wird das Ergebnis des Trainierens analysiert und darauf basierend eine Modell-Architektur ausgewahlt. Für die ausge- wahlte Architektur werden die Vorhersagemodelle erstellt, deren Integration in das Monitoring-Webdashboard in den Kapiteln 7 und 8 behandelt wird. Dafür werden in Kapitel 7 zunachst zwei grundlegende Ansatze vorgestellt und verglichen. Danach wird in Kapitel 8 die Umsetzung eines der beiden Ansatze für den konkreten Fall dieser Arbeit beschrieben. Schliefilich werden in Kapitel 9 die Ergebnisse dieser Arbeit zusammengefasst und eine Empfehlung für den Lebenszyklus des Prognosemodells sowie ein Ausblick für das Monitoring-Webdashboard gegeben.
Kapitel 2 Einführung in die Zeitreihenanalyse in der Statistik
In diesem Kapitel werden zunachst Verfahren zur Zeitreihenanalyse aus der Statistik behandelt. Zunachst wird definiert, was man unter einer Zeitreihe versteht und es werden einige Kennzahlen eingeführt. Danach werden Zeitreihen theoretischer betrachtet und das Komponentenmodell erlautert. Schliefilich wird das Zeitreihenmodell ARIMA, sowie die Modelle, aus denen sich ARIMA zusammensetzt, vorgestellt.
2.1 Definition einer Zeitreihe
Eine Zeitreihe lasst sich definieren als „zeitlich geordnete Beobachtungswerte des jeweils gleichen Sachverhaltes" 84. Nach der Definition in 57 kann noch hinzugefügt werden, dass es sich um eine diskrete Sequenz mit endlichem Zeitinterval handelt. Eine Zeitreihe entsteht demnach dadurch, dass man etwas in bestimmten, im Idealfall regelmafiigen, Zeitabstanden misst. In einem Rechenzentrum gibt es viele Metriken, die nach diesem Prinzip erhoben werden. Misst und speichert man beispielsweise die CPU-Auslastung eines Servers alle n Minuten, entsteht durch diese Diskretisierung eine Zeitreihe. Im Folgenden werden einige wichtige Kennzahlen erklart.
2.1.1 Arithmetisches Mittel
Das arithmetische Mittel x ist die Summe der Zeitreihenwerte X i dividiert durch deren Anzahl N und stellt somit den mittleren Wert der Zeitreihe dar. Es lasst sich berechnen über
Abbildung in dieser Leseprobe nicht enthalten
2.1.2 Erwartungswert
Der Erwartungswert E (X) einer Zufallsvariable X berechnet sich aus den Werten, die X annimmt, xi, unter Berücksichtigung ihrer Eintrittswahrscheinlichkeit P (X — xi) . Die xi werden auch Realisationen genannt. Er wird berechnet als
Abbildung in dieser Leseprobe nicht enthalten
40. Die Realisationen werden also gewichtet betrachtet. Ein einfaches Beispiel zur Veranschaulichung ist das Werfen eines sechsseitigen Würfels. Jede Augenzahl hat die Wahrscheinlichkeit P(X — x;-) — g- für i — 1..6. Somit ergibt sich für den Erwartungs- wert der gewürfelten Augenzahl: E(X) — £6—1 i * 6 — 3.5. Wenn man das arithmetische Mittel der Augenzahlen aus n Würfen bildet, wird man also - bei ausreichend grofsem n - einen Wert erhalten, der sehr nahe bei 3.5 ist. Man kann den Erwartungswert also als den zu erwartenden Mittelwert betrachten.
2.1.3 Varianz
Die empirische Varianz s 2 ist ein Mas dafür, wie stark die Werte xi um das arithmetische
Mittel schwanken:
Abbildung in dieser Leseprobe nicht enthalten
[85, S. 3]. Je geringer die Varianz, desto ahnlicher ist die Kurve einer waagrechten Linie im zweidimensionalen Raum.
Für Zufallsvariablen muss die Wahrscheinlichkeitsverteilung berücksichtigt werden. Man spricht dann nur von Varianz und berechnet diese über den Erwartungswert als
Abbildung in dieser Leseprobe nicht enthalten
Die Varianz einer Zufallsvariable X gibt demnach den Erwartungswert der Abweichung zwischen X und dem Erwartungswert E (X) an. Wenn also n Werte einer Zufallsvariable X gezogen werden, erwartet man, dass diese eine Abweichung von Var (X) von ihrem Erwartungswert haben.
2.1.4 Kovarianz
Die empirische Kovarianz c misst die Abhangigkeit zweier Werte xi und yi:
Abbildung in dieser Leseprobe nicht enthalten
[85, S. 4 f.]. Diese Formel gilt für stationare Prozesse, da hier x konstant ist (siehe Ab- schnitt 2.2) und so für beide Faktoren verwendet werden kann. Bei grofier empirischer Kovarianz und somit Abhangigkeit zwischen den Punkten, bedeutet ein hoher Wert in xt einen hohen Wert in xt+ T respektive ein niedriger Wert in xt auch einen niedrigen Wert in xt+ T.
Analog zur Varianz muss auch für die Kovarianz die Wahrscheinlichkeitsverteilung berücksichtigt werden, wenn man sie für Zufallsvariablen betrachten möchte. Sie ergibt sich für die Zufallsvariablen X und Y als
Abbildung in dieser Leseprobe nicht enthalten
2.2 Stationare Prozesse
In der Statistik wird eine Zeitreihe nach [85, S. 90 f.] als eine Realisation eines sto- chastischen Prozesses gesehen. Ein stochastischer Prozess ist dabei eine Folge von Zufallsvariablen. Die Zeitreihe entsteht dann, indem der zugehörige stochastische Prozess einem eingetretenen, zufalligen Ergebnis eine Zahlenreihe zuordnet [85, S. 90 f.]. Der stochastische Prozess ist also diejenige Vorschrift, die die Zeitreihe erzeugt hat. Somit kann es für jeden stochastischen Prozess mehrere Realisationen, also mehrere Zeitreihen, geben. Da die stochastischen Prozesse aus Zufallsvariablen bestehen, ist im Folgenden mit Varianz und Kovarianz nicht die jeweils empirische Art gemeint, sondern die für Zufallsvariablen nach Gleichung (2.4) beziehungsweise (2.7).
Selbst wenn man den stochastischen Prozess kennen würde, der eine Zeitreihe, die ja nur aus Beobachtungen eines begrenzten Zeitraums besteht, erzeugt hat, ware die Vorhersage dennoch nicht deterministisch [85, S. 91]. Schliefilich handelt es sich um Zufallsvariablen. Allerdings lasst sich der stochastische Prozess zu einer Zeitreihe ohnehin nicht einfach so finden. Selbst wenn man nur die Mafizahlen des Erwartungs- wertes und der Varianz betrachten möchte, ware dies schwierig. Bei einer Zeitreihe der Lange N, müssten dafür nach [84, S. 100] N Erwartungswerte sowie N Varianzen geschatzt werden. Wenn man nun festlegt, dass der Erwartungswert und die Varianz im zeitlichen Verlauf gleich sind, reduziert sich der Aufwand von N Erwartungswerten + N Varianzen = 2N zu schatzenden Werten auf 1 Erwartungswert + 1 Varianz = 2 zu schatzende Werte [85, S. 100]. Ein stochastischer Prozess, der die Anforderung des konstanten Erwartungswertes erfüllt heifit „mittelwertstationar“ [85, S. 100]. Des Weiteren bezeichnet man einen mittelwertstationaren Prozess als „kovarianzstationar“ wenn die Kovarianzen zweier Werte, also deren Ahnlichkeit zueinander, nur von deren zeitlichen Abstand abhangt [85, S. 100]. Mit der Kovarianzstationaritat geht einher, dass auch die Varianz konstant ist. Ist ein stochastischer Prozess sowohl mittelwert- als auch kovarianzstationar, bezeichnet man ihn auch als „schwach stationar" [85, S. 100]. Bei einem solchen schwach stationaren Prozess kennen wir nun für die Zeitreihen gewisse Eigenschaften - den Erwartungswert, die Varianz und Kovarianzen -, die auch gültig sind, wenn die Zeitreihe um s Zeitschritte verschoben wird [85, S. 100]. Dies ist für die Vorhersage der Zeitreihe entscheidend, da eine Vorhersage für s Zeitschritte einem Verschieben um s Einheiten in die Zukunft entspricht.
2.3 Das Komponentenmodell
Einige Besonderheiten von Zeitreihen sind aus dem Alltag bekannt. Betrachtet man beispielsweise die Konjunktur eines Landes, wird man Schwankungen feststellen. Diese Schwankungen können zum Beispiel an der Jahreszeit liegen. Die Konjunk- tur vieler typischer Urlaubslander hangt stark vom Tourismus und so auch von der Jahreszeit ab. Die Zeitreihe der Konjunktur besitzt also eine sogenannte Saisonalitat. Wenn die gemessenen Werte aber unabhangig von diesen saisonalen Schwankungen auf lange Sicht steigen oder fallen, liegt zusatzlich ein Trend vor. Diese Eigenschaften widersprechen den Forderungen nach konstantem Erwartungswert und konstanter Kovarianz der eben definierten schwachen Stationaritat. Auf den Kontext eines Re- chenzentrums übertragen kann man davon ausgehen, dass beispielsweise die Dauer einer Datenbankabfrage mit der Uhrzeit und dem Wochentag schwankt. Wenn die Auslastung des Servers an einem Montag um 09:00 Uhr deutlich höher ist, als an einem Sonntag um 03:00 Uhr, wird sich dies auch auf die Abfragedauer auswirken. Nimmt die gespeicherte Datenmenge über die Zeit zu, kann hierdurch ein steigender Trend bei der Abfragedauer entstehen. Es wird klar, dass nicht alle stochastischen Prozesse (schwach) stationar sind. Um die Zeitreihenanalyse dennoch durchführen zu können, beschrankt man sich auf stationare Prozesse und bereinigt die Zeitreihen entsprechend von Saisonalitat und Trend, um die Stationaritat herzustellen.
Das Komponentenmodell definiert Merkmale einer Zeitreihe, die bearbeitet werden können, um Stationaritat zu erreichen [85, S. 9]. Im folgenden sollen die Komponenten Trend und Saison beleuchtet werden. Des Weiteren existiert die Konjunkturkomponente für eventuell unregelmafiige, mehrjahrige Schwankungen sowie die Restkomponente, die unerklarbare Einflüsse beinhaltet [85, S. 9]. Abbildung A.1 (siehe Anhang) zeigt die Zerlegung der Zeitreihe cpuusage_ps in die Komponenten Trend, Saisonalitat und Rest bei wöchentlicher Frequenz und Abbildung 2.3 für eine tagliche Frequenz. Dadurch wird ersichtlich, dass in der Zeitreihe zwar eine klare Saisonalitat vorliegt, allerdings auch Schwankungen, die nicht erklarbar sind. Die tagliche Saisonalitat könnte sich daraus ergeben, dass auf diesem Server jeden Tag zu einer festgelegten Uhrzeit eine Aufgabe ausgeführt wird, die die Auslastung erhöht.
2.3.1 Trendbereinigung
[85, S. 9] definiert den Trend als „langfristige, systematische Veranderung des mittleren Niveaus einer Zeitreihe". Dies lasst sich am Temperaturverlauf in Deutschland veran- schaulichen. Der Aufwartstrend in der mittleren Tagestemperatur, der in Abbildung
2.1 klar ersichtlich ist, ist Teil der globalen Klimaerwarmung.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 2.1: Der Verlauf der mittleren Tagestestemperaturen in Deutschland für den Zeitraum von 1881 bis 2018 aus 104. Der steigende Trend ist klar zu erkennen.
Die Trendelimination stellt einen wichtigen Aspekt der Zeitreihenanalyse dar. Wird der Trend nicht vollstandig eliminiert, überwiegen die Reste und überdecken andere Komponenten. Andererseits kann zu starke Bereinigung zur Verfalschung der Zeitreihe führen [60, S. 10].
2.3.2 Saisonbereinigung
Die Saisonkomponente einer Zeitreihe ist die „jahreszeitlich bedingte Schwankungs- komponente, die sich relativ unverandert jedes Jahr wiederholt" [85, S. 9]. Ein Beispiel für eine solche Saisonalitat lasst sich bei der Zahl der Arbeitslosen in Deutschland erkennen (siehe Abbildung 2.2). Ob für die Serverauslastung eine jahrliche Schwan- kung für gewisse Metriken existiert, lasst sich aus dem vorliegenden Datensatz von vier Wochen nicht sagen. Jedoch ist eine tagliche Saisonalitat festzustellen (siehe Abbil- dung 2.3). Die Saisonalitat führt zusammen mit dem Trend und Zufallseinflüssen zur Variation einer Zeitreihe [85, S. 52]. Für das Beispiel der Konjunkturzeitreihe von oben ist oft der Trend von Interesse, weswegen die Zeitreihe saisonbereinigt betrachtet wird.
2.4 AR-, MA- und ARMA-Modelle
Die im Folgenden besprochenen Modelle gehen davon aus, dass es sich um einen stationaren Prozess handelt [84, S. 45].
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 2.2: Zahl der Arbeitslosen in Deutschland von 2005 bis 2019 aus 58. Es ist erkennbar, dass in den kalteren Wintermonaten die Arbeitslosigkeit regel- mafiig ansteigt. Aufierdem lasst sich ein Abwartstrend feststellen.
2.4.1 AR(p)-Modelle
Ein AR (p)-Modell ist ein autoregressives Modell p -ter Ordnung [60, S. 84]. Man bezeichnet es als autoregressiv, da sich der Wert zum Zeitpunkt t aus einer Linearkom- bination der vorhergegangenen Werte ergibt [98, S. 79]. Es ist intuitiv, dass bei den Werten einer Zeitreihe eine Abhangigkeit zu den vorherigen Werten besteht. Jedoch ist nicht klar, wie viele Zeitschritte in die Vergangenheit eine solche Abhangigkeit besteht. Das AR (p)-Modell stellt die Zeitreihe durch die in der Zeit verschobene Zeitreihe selbst dar. Der Parameter p des AR (p)-Modells gibt an, bis zu welchem Zeitpunkt in der Vergangenheit die Werte berücksichtigt werden sollen [84, S. 45]. Ein AR(p)-Prozess Y t
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 2.3: Zerlegung der Zeitreihe cpuusage_ps in die Komponenten Trend, Saisona- litat und Rest mit taglicher Frequenz. Es kein klarer Trend erkennbar, allerdings lasst sich eine tagliche Saisonalitat festzustellen. Dennoch liegen mit der Rest-Komponente unerklarliche Einflüsse vor. lasst sich nach [84, S. 45] durch folgende Gleichung definieren:
Abbildung in dieser Leseprobe nicht enthalten
Dabei ist Yt ist ein stochastischer Prozess und e t ein White-Noise-Prozess mit Er- wartungswert E(e t) = 0, der auch „Innovationen“ genannt wird [84, S. 45 f.]. Ein White-Noise-Prozess ist „eine Folge von unabhangigen identisch verteilten Zufalls- variablen“ [84, S. 4]. Aus der identischen Verteilung ergibt sich der Erwartungswert E(e t) = 0 für die Zufallsvariable e t. Aus der Unabhangigkeit folgt, dass die Kovarianz, das Mafi für Abhangigkeit, zweier Punkte Cov[ e t, e s] = 0 ist für s = t [84, S. 97]. Die Innovationen stellen in dieser Gleichung also den Rest dar, für den keine Abhangigkeit existiert.
Um den Parameter p zu finden, kann die Autokorrelationsfunktion (ACF) r T verwendet werden, die die Kovarianz der Zeitreihe zu verschiedenen Zeitabstanden ins Verhaltnis setzt zur Varianz der Zeitreihe [85, S. 7]. Auch die partielle Autokorrelationsfunktion (PACF) kann dafür nützlich sein. Sie beschreibt den Zusammenhang zwischen zwei Messzeitpunkten t — t und t, wobei der Einfluss der Werte zwischen diesen Zeit- punkten entfernt wird. Dafür wird deren Erwartungswert, der dank der Stationaritat konstant ist, von den zu vergleichenden Werten abgezogen [85, S. 194]. Dies ist nötig, da die Korrelation zweier Variablen allein daher rühren könnte, dass sie beide zu einer gemeinsamen, dritten Variable korrelieren.
ACF und PACF der Zeitreihe cpuusage_ps aus dem vorliegenden Datensatz befinden sich in den Abbildungen 2.4 und 2.5.
2.4.2 MA(q)-Modelle
Ein M A (q)-Modell ist ein Moving-Average-Modell q -ter Ordnung, das die Langzeit- wirkung von Störeinflüssen berücksichtigt [60, S. 101]. Das MA(q)-Modell erklart die Zeitreihe durch einen gewichteten White-Noise-Prozess.
Ein M A (q)-Prozess wird durch folgende Gleichung bestimmt:
Abbildung in dieser Leseprobe nicht enthalten
wobei £t erneut ein White-Noise-Prozess ist [84, S. 65]. Daher sind die £t - i mit i = 0.. q unabhangige Zufallsvariablen, die mit P i gewichtet werden. Der Parameter q kann ebenfalls anhand der Autokorrelationsfunktion ermittelt werden und sollte so gewahlt sein, dass ab dem Lag q kein Wert der Autokorrelationsfunktion mehr die sogenannten „Barlett-Grenzen" überschreitet [84, S. 60 f.]. Man untersucht also, für welchen Lag kein relevanter Zusammenhang mehr zwischen den Daten besteht. Die Relevanz wird dabei über eine obere und untere Grenze definiert. Diese sind jeweils die doppelte geschatztes Standardabweichung mit positivem Vorzeichen für die obere, und negativem Vorzeichen für die untere Grenze [84, S. 61]. Abbildung 2.4 zeigt den Plot der ACF, das sogenannte Korrelogramm, für die Zeitreihe cpuusage_ps aus dem Datensatz.
2.5 ARMA(p,q)-Modelle
Unter autoregressiven Moving-Average-Prozessen (ARMA (p, q)-Prozessen) versteht man nach [84, S. 62] die Kombination eines AR(p)- und eines MA(q)-Prozesses in folgender Form:
Abbildung in dieser Leseprobe nicht enthalten
Ein ARMA(p,q)-Prozess nutzt also gleichzeitig einen AR (p)- und einen M A (q)- Prozess.
Bringt man den AR-Anteil auf die linke Seite lasst sich das ARMA(p,q)-Modell auch in der nach [84, S. 62] üblichen Form angeben als
Abbildung in dieser Leseprobe nicht enthalten
Somit lasst sich festhalten, dass ein AR (p)-Prozess ein ARM A (p, 0)-Prozess, respektive ein MA (q)-Prozess ein ARMA (0, q)-Prozess ist [98, S. 101]. ARMA-Prozesse ermög- lichen es, ein „komplexes Verhalten einer Zeitreihe [...] mit einer geringen Zahl von Parametern [zu] beschreiben" [84, S. 63]. Die gleichzeitige Verwendung erlaubt es also, kleinere Ordnungen zu wahlen. Ein grofier Vorteil von ARMA-Prozessen ist nach [84, S. 63], dass die Summe zweier ARMA-Prozesse wiederum einen ARMA-Prozess ergibt:
Abbildung in dieser Leseprobe nicht enthalten
ACF für cpuusagejjs
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 2.4: Korrelogramm für die Zeitreihe cpuusage_ps. Bis zum vierten Lag sind
Abhangigkeiten sichtbar. Aufierdem nimmt die Funktion beim 20. Lag einen relativ gesehen hohen Wert an, sodass auch hier eine Abhangigkeit besteht. Dieser wiederholt sich für jeden weiteren 20. Lag.
So ist es möglich, zwei Zeitreihenmodelle zu aggregieren [84, S. 63], indem die p und q Ordnung aus den Ordnungen der Ausgangsprozesse berechnet werden.
2.6 ARIMA(p,d,q)-Modelle
Auf den vorher angesprochenen Modellen beruht eine weitere Möglichkeit zur statisti- schen Zeitreihenvorhersage: die ARIMA-Modelle. ARIMA steht für „autoregressive integrated moving average" [98, S. 122]. Der Name ergründet sich darin, dass sich ein ARIMA-Modell Integrieren eines ARMA-Modells ergibt. Damit ist allerdings nicht die Integralrechnung aus der Analysis gemeint. Beispiele für die Verwendung von ARIMA-Modellen liefern unter anderem 67, 19 und 26.
ARIMA-Prozesse können für nicht-stationare Zeitreihen verwendet werden, da diese sich durch Differenzenbildung als ein stationarer ARMA-Prozess modellieren lassen [84, S. 69]. Das Kriterium der Stationaritat für einen ARMA-Prozess wird also erfüllt, indem der Trend mittels Differenzenbildung entfernt wird.
Die Differenzenbildung erfolgt nach [98, S. 123] in folgender Form:
Abbildung in dieser Leseprobe nicht enthalten
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 2.5: Partielle Autokorrelationsfunktion für die Zeitreihe cpuusage_ps. Interessante Lags sind demnach 1, 2, 4 sowie 20, 21, 22, 24, 25, 26 und 28. Aufierdem sind die Lags 40, 60 und 80 auffallig.
Dabei ist B der sogenannte „Backshift-Operator“, der die Verschiebung der Zeitreihe von Zeitpunkt t hin zu Zeitpunkt t - 1 bewirkt:
Abbildung in dieser Leseprobe nicht enthalten
Man bildet also die Differenz aus dem stochastischen Prozess Yt und dem Prozess zum vorherigen Zeitpunkt Yt-1. Dies wird zum Teil auch als „differenzieren“ bezeichnet, sollte aber nicht mit der Differenzialrechnung der Analysis verwechselt werden. Hat beispielsweise Yt einen linearen Trend a, wie er in Abbildung 2.1 erkennbar ist, lasst sich der Prozess somit schreiben als Yt = a + bt + e t, wobei e t ein zentrierter stationarer
Prozess ist. Dann ergibt sich unter Anwendung von Gleichung (2.13):
Abbildung in dieser Leseprobe nicht enthalten
Wenn man nun eine Prognose für Yt erstellt hat, kann man durch Integrieren, also das Addieren des vorher abgezogenen Terms, die Prognose für Yt umrechnen: Yt = Y ' t + Yt—1.
Angewendet auf Gleichung (2.15) bedeutet dies:
Y t — Yt + Yj—1 — b + £ t — £ t—1 + a + b(t — 1) + £ t — 1 — a + bt + £ t. (2.16)
Das zeigt, dass auf diese Weise der Trend a in der Prognose wieder berücksichtigt wird.
Der Parameter d eines ARIMA(p,d,q)-Prozesses gibt an, wie oft die Differenz gebildet wird. Die Bedeutung von p und q ist Analog zu einem ARMA(p, q)- bzw. AR(q)- und MA(p)-Prozess. Wird ein ARIMA(p,d,q)-Prozess d-mal differenziert, entsteht ein ARMA(p,q)-Prozess. Durch das Differenzieren kann die Zeitreihe auch von nicht- linearen Trends bereinigt werden [98, S. 123]. Beinhaltet die Reihe beispielsweise einen quadratischen Trend, kann durch 2-faches Differenzenbilden, also mit d — 2, Stationaritat hergestellt werden:
Abbildung in dieser Leseprobe nicht enthalten
2.6.1 Vorgehensweise zur Zeitreihenvorhersage mit ARIMA-Modellen
Um mit einem ARIMA-Modell Vorhersagen für eine Zeitreihe zu erzeugen, kann man laut 19 grundlegend nach folgenden Schritten vorgehen.
1. Auswahlen einer Modell-Klasse, beispielsweise ARMA oder ARIMA.
2. Aufstellen eines Modells und Schatzen der Modellparameter.
3. Überprüfen, ob die Residuen, also die £ t ein White-Noise-Prozess sind. Falls dem so ist, kann mit dem nachsten Schritt fortgefahren werden, ansonsten muss zum vorherigen Schritt zurückgegangen werden.
4. Das Modell ist bereit für die Prognosenerstellung.
Da jetzt einige Grundlagen zur Zeitreihenanalyse in der Statistik erklart sind, soll im Folgenden die Entscheidung für Python als Programmiersprache für datenwissen- schaftliche Projekte begründet werden.
Kapitel 3 Python für Machine-Learning und Data Science
Die Programmiersprache Python hat sich in den letzten Jahren wachsender Beliebtheit erfreut. Obwohl sie im TIOBE Index 2018 das erste Mal unter die Top drei gewahlt wurde, erhielt sie von dem Unternehmen den Titel als die Sprache mit dem gröfiten prozentualen Zuwachs den Titel „Programmiersprache des Jahres 2018“ 68. Im Marz 2020 belegt Python hinter Java und C den dritten Platz im TIOBE Ranking noch vor C++ und C# 96. Dies zeigt, dass Python aktuell eine der bedeutendsten Pro- grammiersprachen ist. Besonders in den Bereichen des maschinellen Lernens und der damit eng verbundenen Disziplin Data Science ist Python zudem weit verbreitet. Eine Untersuchung der Stellenausschreibungen mit Bezug zu Data Science am deutschen Arbeitsmarkt ergab, dass Python mit Erwahnungen in rund 30% der Anzeigen die meistgesuchte Programmiersprache in diesem Kontext ist 72. Einen weiteren Beleg für die Relevanz von Python für diesen Anwendungsbereicht liefert GitHub. Github ist ein Portal, das die Verwendung des Versionsverwaltungssystem Git anbietet. Github veröffentlicht jahrlich den „State of the Octoverse Report 2018“. Dabei stellten die Autoren fest, dass sehr viele Projekte maschinelles Lernen beinhalten 27. Genauere Betrachtungen der Autoren ergaben dann, dass auf GitHub Python die beliebteste Programmiersprache für Machine Learning ist. Auch die Python-Entwickler selbst geben laut dem Python Developers Survey 2018 an, die Sprache zu grofien Teilen für datenwissenschaftliches Arbeiten - damit sind sowohl Data Science als auch Machine Learning gemeint - zu verwenden 72.
Die somit belegte Verbreitung Pythons im datenwissenschaftlichen Kontext geht einher mit der Existenz zahlreicher Publikationen, themenverwandten wissenschaftlichen Arbeiten und Programmierbibliotheken. Einige dieser Bibliotheken und ihre Verwen- dungszwecke werden im Folgenden beleuchtet.
3.1 Relevante Python-Bibliotheken
Im Folgenden werden kurz ausgewahlte Python Bibliotheken vorgestellt, die in den Bereichen Data Science und Machine Learning weit verbreitet und für diese Arbeit relevant sind.
3.1.1 Numpy
Im Paket Numpy sind Datenstrukturen wie N-Dimensionale Arrays und Matrizen sowie Funktionen der Linearen Algebra implementiert. Durch die hardwarenahe Umsetzung in der Programmiersprache C wird eine sehr gute Performanz erreicht. „Numpy" steht für „Numeric Python" und ist Teil vieler Anwendungen aus dem Bereich „big data" [56, S. 43]. Numpy kam in dieser Arbeit nicht nur über andere Bibliotheken, die Numpy verwenden, indirekt zum Einsatz, sondern wurde auch direkt bei der Datenverarbeitung und -aufbereitung genutzt.
3.1.2 Pandas
Pandas ermöglicht eine effiziente Analyse und Verarbeitung grofier Datenmengen 66. Pandas basiert auf Numpy und kann sowohl lesend als auch schreibend DSV- und Excel-Dateien verarbeiten [56, S. 253]. Pandas wurde in der vorliegenden Arbeit verwendet, um die Daten einzulesen und mit ihnen in einem Tabellenartigen Format zu arbeiten.
3.1.3 statsmodels
In statsmodels werden verschiedene Modelle, Tests sowie Funktionen zur Datenexplorati- on implementiert 87. statsmodels wurde zum Beispiel für die Komponentenzerlegung verwendet.
3.1.4 Matplotlib
Matplotlib ist ein Open-Source-Modul, das zur Datenvisualisierung verwendet wird. Es ermöglicht die Erstellung von Diagrammen verschiedener Typen sowie die optische Anpassung dieser Plots [56, S. 167]. Um Daten aufierhalb der Webanwendung zu visualisieren wurde im Rahmen dieser Arbeit Matplotlib verwendet.
3.1.5 Tensorflow
Tensorflow ist ein low-level Open-Source-Modul für Machine Learning, das von Google entwickelt wurde [69, S. 11]. Der Name setzt sich aus „Tensor" und „flow" zusammen. Tensoren sind Strukturen die Daten enthalten und der Begriff „flow" rührt daher, dass diese Tensoren in einem Flussdiagraphen verarbeitet werden [99, S. 97 f.]. Tensoren können dabei n Dimensionen haben und dadurch Skalare, Vektoren, Matrizen sowie mehrdimensionale Felder darstellen [99, S. 97 f.].
3.1.6 Keras
Keras ist ein high-level Machine Learning Framework, das als API-Schnittstelle für mehrere low-level Frameworks dient. Das am haufigsten verwendete Backend für Keras ist Tensorflow [69, S. 11 f.]. Das bedeutet, dass die Keras-Funktionen intern Tensorflow-Code verwenden. So ist ein Arbeiten auf einer höheren Abstraktionsebene möglich [69, S. 11 f.] . Die tiefen Neuronalen Netze, die in dieser Arbeit verwendet werden, wurden mittels Keras implementiert.
3.1.7 Scikit-learn
Scikit-learn bietet verschiedene aktuelle Machine Learning Algorithmen auf einer hohen Abstraktionsebene und mit einfachen Schnittstellen an. Die Funktionen sind effizient implementiert und bieten eine gute Performance 74. Zu den Nutzern von Scikit- learn gehören unter anderem J.P.Morgan, Spotify und Booking.com 102. Scikit-learn wurde für diese Arbeit an mehreren Stellen verwendet. Sowohl die Hauptkomponen- tenanalyse und Standardisierung (siehe Abschnitt 6.2) als auch die Rastersuche und Kreuzvalidierung (siehe Abschnitte 6.4.1 und 6.4.2) wurden mit Scikit-learn umgesetzt.
Das folgende Kapitel stellt einen Prozess vor, der die Herangehensweise an ein Data Science Projekt beschreibt.
Kapitel 4 Der Data Science Prozess
Die Herangehensweise an eine Problemstellung wie sie dieser Arbeit zugrunde liegt, kann mittels in der Abbildung 4.1 gezeigten Data Science Prozess beschrieben werden.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 4.1: Der Data Science Prozess nach 5.
Dieser formuliert die Schritte Fragestellung, Datenbeschaffung, Datenexploration, Da- tenmodellierung und Datenvisualisierung. Dabei handelt es sich allerdings nicht um einen linearen Prozess und die Stufen werden nicht zwingend nacheinander durchlau- fen. Vielmehr sind Iterationen notwendig, in denen vorhergegangene Schritte erneut betrachtet werden. In einem linearen Durchlauf würde zunachst also eine Fragestel- lung beziehungsweise ein Ziel definiert werden. Für dieses Ziel müssen dann die Daten beschafft werden. Anschliefiend können diese exploriert und analysiert werden, sodass im nachsten Schritt ein Modell aufgestellt werden kann. Die Prognosen dieses Modells werden im letzten Schritt visualisiert. Iterative Schritte zu einer vorherigen Stufe könnten beispielsweise dadurch notwendig werden, dass die Ergebnisse eines Schrittes nicht zufriedenstellend sind oder wenn sich die Anforderungen wahrend des Prozesses andern.
4.1 Fragestellung
Die Frage „Wie stark wird die CPU-Auslastung eines Servers zu einem in der Zukunft liegenden Zeitpunkt t sein?“ beschreibt die der Arbeit zugrunde liegende Fragestellung und kann den ersten Schritt im Data Science Prozess einnehmen. Die in Kapitel 1 dargelegten potenziellen Vorteile einer Prognose verleihen der Beantwortung dieser Frage grofie Relevanz. Die möglichen finanziellen Einsparungen und Sicherstellung der Verfügbarkeit sind dabei für Unternehmen von herausragender Bedeutung.
4.2 Datenbeschaffung (1)
Zu Beginn dieser Arbeit lag bereits ein Datensatz in Form einer 14-Megabyte grofien CSV-Datei vor. Dieser diente dem Unternehmen als Beispieldatensatz für die Entwicklung des Monitoring-Dashboards. Es handelt sich bei den Eintragen um reale, anonymisierte Messwerte aus den Rechenzentren der Bundesagentur für Arbeit, für die die Webapp entwickelt wird.
4.3 Datenexploration (1)
Der Datensatz umfasst etwa siebzigtausend Zeilen. Die Messwerte haben eine 15- minütige Abtastrate. Dabei wurden die Auslastung verschiedener Server in mehreren Clustern gemessen wurde. Die Last wird als Zugriffsanzahl im Messzeitraum fest- gestellt. Dies ist jedoch das einzige quantitative Merkmal im Datensatz, das für die Analyse beziehungsweise die Prognose verwendet werden kann. Das Diagramm in Abbildung 4.2 erlaubt einen ersten Blick auf diese Daten.
Nach Konsolidierung mit einem Datenbankadministrator der Bundesagentur für Arbeit wurde klar, dass ein völlig neuer Datensatz benötigt wurde. Der vorliegende Datensatz war bereits vorverarbeitet und es konnte nicht rekonstruiert werden, welche Schritte dabei stattgefunden haben. Da in dieser Arbeit Machine Learning angewendet werden sollte, war es zudem gewünscht, einen Datensatz mit mehreren quantitativen Merkmalen zu untersuchen. Daher musste eine neue Iteration im Prozess beginnen, an deren Anfang die Datenbeschaffung stand.
4.4 Datenbeschaffung (2)
Es war möglich, neue Messdaten und deren Freigabe zu organisieren. Allerdings ist es mit der verwendeten Datenbank nur möglich, die Rohdaten von sieben Tage zu
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 4.2: Plot zu dem ersten Datensatz. Der „count" ist dabei der Wert einer Metrik, die die Zugriffszahlen auf die Datenbank beschreibt. Es war jedoch nicht mehr rekonstruierbar, welche Metrik genau verwendet wurde. extrahieren. Etwas spater kamen erneut die Rohdaten einer weiteren Woche hinzu, allerdings gab es zwischen den beiden Wochen eine Lücke.
4.5 Datenexploration (2)
Bereits auf den ersten Blick wurde klar, dass es sich um eine deutlich gröfiere Datenmenge handelt. Die Daten einer Woche lagen nun in einer knapp 33 Gigabyte grofien DSV-Datei vor. Somit war die Datei zu umfangreich für viele Programme, um geöffnet zu werden. Der für die Abbildung 4.2 verwendete Quellcode war nicht in der Lage, die Daten zu verarbeiten. Die Datenmenge war so grofi, dass die verwendete Bibliothek „Pandas" einen Fehler erzeugte. Die Lösung bestand darin, die Daten in Blöcken einzulesen und zu verarbeiten. Dies zeigte, dass dieser Datensatz mehr als 130 Millionen Eintrage enthalt. Aufierdem wurde klar, dass bei diesen Daten wie gewünscht mehrere quantitative Merkmale vorlagen. Allerdings waren einige Spalten in allen Reihen leer, redundant oder irrelevant für den Zweck der Zeitreihenvorhersage. Die quantitativen Merkmale bestanden dabei aus einer Reihe verschiedener Metriken an den Servern. Aufierdem lagen die Metriken nicht als einzelne Spalte vor, sondern es gab eine Spalte, in der der Name der Metrik stand, und eine, in der der Wert der Metrik stand. Dies verbraucht aufgrund der redundanten Speicherung der meisten Spalten nicht nur unnötig viel Speicher, sondern ist auch unpraktikabel für das weitere Vorgehen. In Abbildung 4.3 wird der Vergleich zwischen dem vorliegenden und dem gewünschten Datensatzformat skizziert.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 4.3: Vergleich der Datensatzformate. Oben: In diesem Format lagen die Daten- bankexporte vor. Unten: Dieses Format sollte für die weitere Verarbeitung erzeugt werden.
Datensatz weiter analysiert werden. Dafür wurden als Nachstes die quantitativen Merkmale genauer untersucht um ein Feature Engineering durchzuführen. In [23, S. 84] bezeichnet der Autor das Feature Engineering als den Faktor, der darüber entscheidet, ob ein Machine-Learning-Projekt scheitert oder erfolgreich ist. Ein „Feature" ist dabei ein quantitatives Merkmal aus dem Datensatz, das die Grundlage für Prognosen bildet und „Feature Engineering" bezeichnet das "Herausarbeiten von relevanten Merkmalen als Eingabe"[103, S. 78]. Neben 23 weifit auch [103, S. 78] auf die hohe Bedeutung des Feature Engineering hin.
Zunachst wurden alle vorhandenen Merkmale mit ihrer Abkürzung und dem vollen Namen in eine CSV-Datei gespeichert. Dafür wurde das im Python-Standard ent- haltene Paket csv und die Methode writerow O eines writer-Objekts 20 verwendet. Beim blockweisen Einlesen des Datensatzes wurden die Datentypen der Spalten an- gegeben, um die Performance zu verbessern. Auf diese Weise müssen sie nicht mehr von read\_csv-Funktion bestimmt werden. Aufierdem wurde das Python-Modul pickle verwendet um die Blöcke zu serialisieren und als Binardateien zu speichern, sodass der Datensatz zukünftig nicht komplett neu gelesen werden muss. Es wurde untersucht, ob die Daten vollstandig sind. Durch die Pandas-Funktion isnuiiO wurde geprüft, ob im Datensatz für jede Zeile alle Spalten ausgefüllt sind. Es zeigte sich, dass der Datensatz vollstandig ist. Es war demnach nicht nötig, das Fehlen von Werten zu beheben.
Eine Untersuchung auf Duplikate im Datensatz mittels der Pandas-Funktion duplicated () ist in diesem speziellen Fall nicht relevant. Duplikate bedeuten lediglich, dass die gleichen Messwerte zu mehreren Zeitpunkten vorlagen. Würden mehrfach vorkom- mende Werte entfernt, würde der Datensatz verfalscht und somit die Prognose negativ beeinflusst.
Da jedoch das tiefere Verstandnis für die Features fehlte und deren Bezeichnungen unklar waren, war es nötig, Kontakt mit der Bundesagentur für Arbeit aufzunehmen, um in einem Interview Klarheit zu schaffen.
4.5.1 Rücksprache mit Datenbankadministrator
Im Gesprach mit einem der Zustandigen für Datenbankadministration und -support bei der Bundesagentur für Arbeit sollten folgende offene Fragen zum Datensatz geklart werden:
- Gibt es andere Exportmöglichkeiten der Datenbank?
- Lasst sich der Messzeitpunkt vereinheitlichen?
- Welche Bedeutung haben die Spalten?
- Welche Metriken bzw. Merkmale sind interessant?
- Welchen Features entsprechen diese?
- Welche Metrik soll prognostiziert werden? Beziehungsweise: Was ist die Zielva- riable?
- Welche Metriken sollen dafür als Eingabe verwendet werden?
Im Interview erlauterte der Kontakt, dass die Bundesagentur für Arbeit den Oracle Enterprise Manager zur Verwaltung der Datenbanken verwendet. Die Rohdaten werden für sieben Tage gespeichert, danach liegen sie nur noch aggregiert vor. Daher ist es nicht möglich, die Daten in anderer Form zu exportieren. Die Messzeitpunkte lassen sich nicht vereinheitlichen, da die Werte aus dem Produktivsystem der Bundesagentur für Arbeit kommen und die nötige Neukonfiguration daher nicht durchgeführt werden kann. Die Bedeutung der Spalten ergibt sich zum Teil aus dem Interview sowie aus der Dokumentation des Enterprise Managers 28 und wird in Tabelle B.1 (siehe Anhang) dargestellt.
Der Oracle Enterprise Manager erfasst dabei die Features selbststandig. Aus Sicht des Datenbankadministrators sind die Metriken zu den Sessions, dem PGA-Speicher und zur CPU-Auslastung interessant, da er diese überprüft, um den Zustand des Systems zu beurteilen. Allerdings konnte nicht geklart werden, welche Metriken sinnvoll für die Eingabe sind. PGA ist die Abkürzung für „Program global area", einem Speicherbe- reich, in dem jeder Server Prozess Daten und Kontrollinformationen ablegen kann 22. Die Summe der einzelnen PGA-Speicher wird in der Metrik „pga_total" erfasst. Die Spalte „TARGET_NAME" enthalt den anonymisierten Namen der Datenbankinstanz. Im Datensatz sind mehrere Datenbankinstanzen aufgeführt, für die jeweils einzeln die Metriken erhoben werden. Daher war es für folgende Schritte nötig, zunachst eine Datenbankinstanz auszuwahlen.
Zusatzlich war es nötig, die Daten weiter zu transformieren, um das gewünschte Format des Datensatzes zu erreichen.
4.6 Datenbeschaffung (3)
Da die Daten einer Woche nicht zwingend aussagekraftig sind, sollte eine gröfiere Datenbasis für die Vorhersage geschaffen werden. Wie oben beschrieben ist ein Export immer nur über die letzten sieben Tage möglich. Daher wurde ein Zeitraum von vier Wochen festgelegt. Das stückweise Abziehen der Datenbank nach begann nach Weih- nachten. Gegen Ende Januar standen vier Datensatze mit je einer Woche Messwerten zur Verfügung.
4.7 Datenexploration (3)
Die vier einzelnen Datensatze mussten als erstes zusammengefügt werden. Dafür wurde eine Datenbankinstanz ausgewahlt und für diese aus allen Datensatzen die Vorkommnisse extrahiert. Dafür wurden die Dateien erneut blockweise eingelesen. Anschliefiend wurde die Datenbankinstanz ausgewahlt und schliefilich die Datensatze durch die Pandas-Funktion concatO zusammengeführt. Dabei fiel auf, dass es bei den Ausgangsdaten Überschneidungen an den jeweiligen Anfangs- und Endtagen gab. Dies wurde bei der Vereinheitlichung der Zeitstempel bereinigt. Denn um den Datensatz praktikabel verwenden zu können, sollte er die folgenden Charakteristika erfüllen:
- Einheitliche Zeitstempel in gleichem Abstand
- Die Merkmale sind Spalten
- Für jede Reihe sind alle Merkmalswerte eingetragen
4.7.1 Vereinheitlichung der Timestamps
Die Problematik bestand hier hauptsachlich darin, dass manche Metriken in zehnmi- nütigen und andere in 15-minütigen Intervallen erfasst wurden. Aufierdem gab es einige wenige Metriken, die in einer noch geringeren Frequenz gemessen wurden.
Zunachst musste also für jedes Merkmal festgehalten werden, in welchen Abstanden die Zeitstempel vorliegen. Anschliefiend wurden die Minuten der Timestamps auf den nachstmöglichen Wert gerundet. Dabei gab es für 15-minütige Features vier mögliche Werte: 0, 15, 30, 45 und 60. Für Zehn-Minuten-Intervalle gab es sechs: 0,10, 20, 30, 40, 50, 60. Wurde eine Minute auf 60 gerundet, wurde auf den Zeitstempel eine Stunde addiert und dann die Minute auf 0 gesetzt. Die Sekunden wurden für jede Reihe auf 0 gesetzt. Allerdings musste eine weitere Anpassung vorgenommen werden, um die Zeitstempel für alle Merkmale, unabhangig von ihrer Abtastfrequenz, zu vereinheitlichen. Da die 15-minütigen Messungen seltener stattfinden sind sie ungenauer. Daher wurde für den multivariaten Datensatz das Abtastintervall auf 15- Minuten festgelegt. Dafür wurde das Prinzip aus Tabelle 4.1 auf Seite 24 verwendet. Hat das Merkmal einen 15-minütigen Abstand, konnten die Werte einfach übernommen werden. Bei einer zehnminütigen Periode konnten hingegen nur die Werte zu den Minuten hh:00 und hh:30 direkt verwendet werden. Der Wert zum Zeitpunkt hh:15 wurde als arithmetisches Mittel zwischen den Werten zu den Zeitpunkten hh:10 und hh:20 gebildet. Für hh:45 wurde mit den Werten zu den Zeiten hh:40 und hh:50 analog vorgegangen. Diese Transformation wurde mit dem Code aus Listing C.6 (siehe Anhang) erreicht. Anschliefiend wurden die nicht mehr benötigte Zeilen, also solche deren Zeitstempel nicht in das 15-Minuten-Intervall passt und die durch einen
Abbildung in dieser Leseprobe nicht enthalten
Tabelle 4.1: Prinzip zur Vereinheitlichung der Zeitstempel. f (ts) gibt den Wert vom Zeit- punkt ts zurück. vereinheitlichten Zeitstempel ersetzt wurden, mittels dem Code in Listing C.7 (siehe Anhang) aus dem Datensatz entfernt.
4.7.2 Merkmale als Spalten
Um die Merkmale aus den Zeilen in die Spalten zu transformieren, wurde dem Datensatz zunachst für jedes vorhandene Merkmal eine Spalte hinzugefügt, die mit NaN initialisiert wurden. Dann wird für jede Reihe der Wert aus der Spalte „VALUE" in die entsprechende Metrik-Spalte, die sich aus „METRIC_COLUMN" ergibt, eingetragen. Listing C.8 (siehe Anhang) zeigt, wie dies implementiert wurde. Im Anschluss an diese Transformation wurden noch textuelle Spalten sowie leere Platzhalterspalten (siehe Tabelle B.1) entfernt. Diese beinhalten auch keine Informationen, die für das Modell von Bedeutung waren, sondern lediglich beispielsweise den Benutzernamen der Datenbankverbindung oder Dateinamen.
4.7.3 Keine fehlenden Merkmalswerte
Da bei den vierwöchigen Daten manche Merkmalswerte mit einer geringeren Frequenz als 15 Minuten abgetastet wurden, gab es im Datensatz zunachst noch NaN-Werte, also leere Felder ohne jeglichen Wert. Um diese zu füllen, wurden zunachst alle fehlenden Werte xt zum Zeitpunkt t mit dem nachst früheren, gültigen Wert xt-n mit n > 0 aufgefüllt. Nach diesem sogenannten „forward fill" wurde noch ein „backward fill" angewandt, bei dem ein NaN bei xt durch den Wert von xt+n mit n > 0 ersetzt wird. So wurden NaN-Werte für die erste Zeile, beziehungsweise den ersten Zeitstempel, aufgefüllt.
Aus dem so entstandenen Datensatz wurden die Metriken, die der Datenbankadmi- nistrator verwendet (siehe Abschnitt 4.5.1), geplottet. Die Ergebnisse finden sich in den Abbildungen 4.4, A.2 und A.3. Für alles weitere ist hauptsachlich die Metrik
Abbildung in dieser Leseprobe nicht enthalten
Tabelle 4.2: Kennzahlen zur Zeitreihe cpuusage_ps. Die Werte wurden auf zwei Nachkom- mastellen gerundet. Ein p-Quantil ist dabei ein Wert, für den p Prozent der Zeitreihenwerte kleiner oder gleich sind. 25% der Messungen sind also kleiner oder gleich 0.22.
„cpuusage_ps" aus der Abbildung 4.4 interessant, da diese in der Web-Anwendung angezeigt und vorhergesagt werden soll. Aus diesem Plot wird auch klar, dass die Auslastung nie kritische Werte erreicht. Es gibt lediglich einen Zeitpunkt, zu dem sie mehr als 50% betragt. Dennoch können darin Optimierungsmöglichkeiten bestehen. Denn wie in Abschnitt 1.1 geschildert, setzen sich die Betriebskosten eines Rechen- zentrums hauptsachlich aus den Kosten für Hardware und Strom zusammen. Wenn man die Dienste neu auf eine geringere Serveranzahl verteilen würde, würde zwar die Auslastung steigen, überflüssige Server könnten aber abgeschaltet werden und die kosten so gesenkt. Allerdings muss berücksichtigt werden, dass die Bundesagentur für Arbeit als Körperschaft des öffentlichen Rechts kein gewinnorientiertes Unternehmen ist. Die IT-Infrastruktur ist so aufgebaut, dass hohe Auslastungen oder gar Ausfalle sehr unwahrscheinlich sind.
Zu der Zeitreihe der CPU-Auslastung wurden dann noch einige Kennzahlen berechnet, die in Tabelle 4.2 aufgeführt werden. Auffallig sind das arithmetische Mittel, das man aufgrund des Plots vermutlich höher erwartet hatte. Aufierdem zeigt das 75%- Quantil, dass 75% der Werte kleiner sind als die Halfte des arithmetischen Mittels. Die Auslastung ist also meistens sehr gering und schon die Werte von etwa 10%, die in Abbildung 4.4 auffallen, stellen in diesem Kontext eine verhaltnismafiig hohe Auslastung dar.
4.8 Datenmodellierung
Die Datenmodellierung wird in Kapitel 6 beschrieben.
4.9 Visualisierung
Die Visualisierung wird in Kapitel 8, speziell ab 8.4 geschildert.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 4.4: Plot der CPU-Auslastung aus dem vierwöchigen Datensatz. Verwendete Metrik: cpuusage_ps. Prognosen erstellt werden können. Die Grundlagen dafür und Entscheidungen dazu werden im Folgenden Kapitel erlautert.
Kapitel 5 Grundlagen für die Prognosenerstellung mit Machine-Learning
Nachdem in Kapitel 2 bereits die Zeitreihenanalyse aus der Sicht der Statistik be- trachtet wurde, wird in diesem Kapitel die Zeitreihenprognose mit Machine-Learning vorgestellt. Zunachst wird eine allgemeine Definition für Machine-Learning formuliert. Anschliefiend wird die Entscheidung für die Anwendung von Machine-Learning be- gründet. Daraufhin werden die verschiedenen Machine-Learning-Klassen vorgestellt und im Anschluss einige Grundlagen zu Künstlichen Neuronalen Netzen und deren Funktionsweise dargelegt.
5.1 Was ist Machine-Learning?
Machine-Learning könnte nach [82, S. 10] allgemein definiert werden als „ein Algo- rithmus, der durch gesammelte Erfahrung über die Zeit seine Leistungsfahigkeit, eine bestimmte Aufgabe zu erledigen, verbessert.“ Die Aufgabe, die der Algorithmus, also das Künstliche Neuronale Netz, in diesem Fall erledigen soll, ist die Vorhersage einer Zeitreihe. Die Erfahrung ergibt sich aus den gesammelten Daten, die für das Training verwendet werden. Und die Leistungsfahigkeit wird anhand der Genauigkeit der Vorhersagen gemessen.
5.2 Statistische Methoden oder Machine-Learning?
Der erhoffte Vorteil des maschinellen Lernens gegenüber klassischer statistischer Methoden zur Zeitreihenvorhersage ist, dass die Zusammenhange zwischen mehreren Features gelernt werden und somit bessere Vorhersagen getroffen werden können. So- wohl 63 als auch 61 kommen zu dem Schluss, dass Machine-Learning-Methoden für Zeitreihenvorhersagen bei Datensets mit nur einem untersuchten Merkmal mit weniger Aufwand zu besseren Prognosen führen. Sie stellen allerdings in Aussicht, dass die Ergebnisse bei anderen Datensatzen anders ausfallen hatten können. Die Autoren von 63 sehen bei der Verwendung von Machine-Learning zudem als Problem, dass keine Ungenauigkeiten beziehungsweise Konfidenzintervalle für die Vorhersagen angegeben werden. Es ist nicht ersichtlich, wie weit die tatsachlichen Werte um die Vorhersage schwanken könnte. In dieser Arbeit sollte speziell Machine-Learning angewendet werden, um die Prognosen zu treffen. Allerdings zeigen die oben genannten Artikel, dass es sinnvoll ware, einen Vergleich zu klassischen statistischen Methoden bei dem vorliegenden Datensatz anzustellen. Da in dem vorliegenden Datensatz nicht nur die Metrik, die vorhergesagt werden soll, enthalten ist, sondern ein multivariater Datensatz existiert, könnte ein vektorisiertes ARMA-Modell (VARMA) verwendet werden. Diese lassen multivariate Eingangsdaten in Form von Vektoren zu 52.
5.3 Machine-Learning-Klassen
Machine-Learning-Algorithmen lassen sich prinzipiell in drei verschiedene Klassen kategorisieren: Supervised Learning, Unsupervised Learning und Reinforcement Learning. Welche Klasse angewandt wird, hangt von der Problemstellung beziehungsweise dem Ziel eines Projektes ab. Im Folgenden wird ein kurzer Überblick über die Begriffe gegeben und schliefilich die für dieses Vorhaben passende Klasse gewahlt.
5.3.1 Supervised Learning
Das Supervised Learning basiert auf dem Prinzip, mit den vorhandenen Daten ein Vorhersagemodell zu trainieren, mit dem anschliefiend neue Daten bewertet und so Prognosen erstellt werden können [76, S.26 f.]. Entscheidend dafür ist nach [76, S.26 f.], dass die Ausgangsdaten bereits die zu vorhersagenden Werte enthalten. Innerhalb der Supervised Learning Klasse unterscheidet man zusatzlich zwischen Klassifizierung und Regression [76, S.26 f.]. Bei der Klassifizierung sollen die neuen Daten in eine der Klassen bzw. Gruppen eingeteilt werden, auf die das Modell mit den Trainingsdaten trainiert wurde [76, S.26 f.]. Dafür muss in den Trainingsdaten bereits die Klasse enthalten sein, zu der ein Eingabebeispiel gehört. Anwendungsbeispiele liegen in den Bereichen der Bilderkennung oder Optical-Character-Recognition (OCR). Soll beispielsweise ein Modell trainiert werden, das erkennt, ob auf einem Bild ein Hund vorhanden ist, ist es nötig, die Trainingsbilder mit dieser Information zu markieren. Das Ziel der Regression dagegen ist es, anhand von Regressor-Variablen und einer Ziel-Variable, ein Modell zu trainieren, das die Zusammenhange zwischen diesen Variablen erkennt, und so für neue Werte Prognosen treffen kann [76, S.28 f.].
5.3.2 Unsupervised Learning
Anders als beim Supervised Learning sind beim Unsupervised Learning keine Be- zeichner in den Ausgangsdaten vorhanden. Stattdessen wird durch das Trainieren des Modells die Struktur der Daten analysiert und daraus Informationen gewonnen [76, S. 31]. Ein Beispiel für Unsupervised Learning sind nach [99, S. 31] sogenannte „Deep Autoencoder", die zum Beispiel zur Suche nach ahnlichen Bildern verwendet werden können. Das Prinzip eines Deep Autoencoders besteht dabei darin, den Input zunachst zu kodieren und so eine komprimierte Version zu erstellen [99, S. 31]. Das Lernen geschieht dann, indem der Autoencoder versucht, aus der komprimierten Version das Original zu dekodieren [99, S. 31].
5.3.3 Reinforcement Learning
Beim Reinforcement Learning soll die Interaktion eines sogenannten Agenten mit seiner Umgebung optimiert werden, indem dessen Aktionen beurteilt werden [76, S.29 f.]. Die Bewertung wird durch eine Belohnungsfunktion realisiert [76, S.29 f.]. Handlungen, die zu gröfieren Belohnungen führen, werden dabei zukünftig favorisiert. Ein Anwendungsbeispiel sind Schachcomputer [76, S.29 f.]. Hier lassen sich zudem Parallelen zu „natürlicher" Intelligenz ziehen. Der Psychologe Edward Lee Thorndike formulierte nach seinen Tierstudien das „Gesetz der Wirkung" [17, S. 62 ff.]. Dieses besagt, dass Tiere durch Reiz-Reaktions-Ketten, die zu neuen Neuronenverknüpfungen im Gehirn führen, lernen [17, S. 62 ff.]. Wirkt sich das Ergebnis einer Handlung für das Individuum positiv aus, wird das Verhalten in Zukunft mit höherer Wahrscheinlichkeit wiederholt. Ist das Gegenteil der Fall, wird die neuronale Verknüpfung geschwacht [17, S. 62 ff.]. Das Resultat einer Aktion wirkt sich demnach in Zukunft auf die Aktion selbst aus.
5.3.4 Entscheidung für eine Klasse
Das hier entwickelte System soll Zeitreihenprognosen treffen. Dabei soll kein Feedback vom Nutzer eingeholt werden. Die Vorhersagegenauigkeit bis zum Zeitpunkt t kann bei erreichen dieses Zeitpunktes mit den tatsachlichen Messungen verglichen werden und so automatisiert ein Feedback erzeugt werden. Die Klasse Reinforcement Learning wird daher ausgeschlossen. Zeitreihenvorhersagen können als ein Supervised- Machine-Learning Problem betrachtet werden und der Regression zugeordnet werden. Allerdings bedarf es bei der Wahl eines Algorithmus besonderer Sorgfalt. Denn bei Zeitreihen hangt der Wert xt+1 zum Zeitpunkt t + 1 oft vom Wert xt ab. Zudem ist daher die Verarbeitungsreihenfolge von Bedeutung und muss parallel zur Zeitreihe eingehalten werden [76, S. 529 ff.]. Für diesen speziellen Fall eignen sich besonders sogenannte „Recurrent Neural Networks" [76, S.532 ff.], die in Abschnitt 6.1.3 erlautert werden.
[...]
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen.