Machine Learning für Zeitreihen - Jochen Hirschle - E-Book

Machine Learning für Zeitreihen E-Book

Jochen Hirschle

0,0

Beschreibung

- Konzepte Schritt für Schritt erklärt
- Die Eigenarten von Zeitreihendaten verstehen: Zeitfenster zum Anlernen einsetzen; mit latenten, saisonalen und Trend-Komponenten arbeiten
- Anleitungen zur Umsetzung in Python mit ausführlichen Code-Kommentaren
- Mit TensorFlow2 Deep-Learning-Verfahren zur Prognose aufbauen, anlernen und produktiv einsetzen

Daten über Vorgänge werden in der verarbeitenden Industrie, der Logistik oder im Finanzsektor im Sekundentakt aufgezeichnet: der Verlauf eines Aktienkurses, die Verkaufszahlen eines Produkts, die Sensordaten einer Turbine. Solche Daten informieren nicht nur über isolierte Zustände; sie sind wie Filme, die den Verlauf eines Vorgangs mit einer Serie einzelner Bilder nachzeichnen. Intelligente Algorithmen können die Muster dieser Verläufe analysieren, sie anlernen und über das Beobachtungsfenster hinaus fortschreiben: Zustände in der Zukunft werden prognostizierbar.
Das Buch bietet eine leicht verständliche Einführung in die Konzepte und die Praxis der Zeitreihenanalyse. Es zeigt, wie bewährte und neuere Lernalgorithmen arbeiten und wie sie sich mit Python anlernen und produktiv einsetzen lassen.
An einer Vielzahl von Anwendungsbeispielen werden die Vorbereitung der Daten, der Anlern- und Schätzprozess Schritt für Schritt erklärt.

Aus dem Inhalt:
- Zeitreihendaten mit pandas aufbereiten, fehlende Daten imputieren, mit Datumsangaben arbeiten
- Grundprinzipien maschinellen Lernens: Konzepte und Umsetzung mit Python und Scikit-Learn
- Feature-Preprocessing: Standardisierung, Dimensionsreduktion, Verarbeitung kategorialer Daten
- ARIMA-Modelle zur Analyse univariater Zeitreihen: Vorbereitung, Anlernen und Prognose mit Python und Statsmodels
- Komplexe Zeitreihen mit Deep-Learning-Verfahren analysieren: Rekurrente und konvolutionale Netze verstehen und mit Python und TensorFlow 2 aufbauen und anlernen
- Mit Zeifenstern arbeiten

Vorkenntnisse in Machine-Learning-Verfahren sind nicht notwendig. Grundlegende Statistik- und Python-Kenntnisse sollten vorhanden sein.

Der komplette Code im Buch sowie die Beispieldateien sind über ein GitHub-Repository verfügbar.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 468

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Jochen Hirschle

Machine Learning für Zeitreihen

Einstieg in Regressions-, ARIMA- und Deep-Learning-Verfahren mit Python

Der Autor:

Dr. Jochen Hirschle, Braunschweig

Alle in diesem Buch enthaltenen Informationen, Verfahren und Darstellungen wurden nach bestem Wissen zusammengestellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Buch enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor und Verlag übernehmen infolgedessen keine juristische Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen – oder Teilen davon – entsteht.Ebenso übernehmen Autor und Verlag keine Gewähr dafür, dass beschriebene Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Buch berechtigt deshalb auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.

Bibliografische Information der Deutschen Nationalbibliothek:Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

Dieses Werk ist urheberrechtlich geschützt.Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren) – auch nicht für Zwecke der Unterrichtsgestaltung – reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.

© 2021 Carl Hanser Verlag München, www.hanser-fachbuch.deLektorat: Sylvia HasselbachCopy editing: Walter Saumweber, RatingenUmschlagdesign: Marc Müller-Bremer, www.rebranding.de, MünchenUmschlagrealisation: Max KostopoulosTitelmotiv: © shutterstock.com/NESPIXLayout: Manuela Treindl, FürthAusstattung patentrechtlich geschützt. Kösel FD 351, Patent-Nr. 0748702

Print-ISBN:        978-3-446-46726-2E-Book-ISBN:   978-3-446-46814-6E-Pub-ISBN:     978-3-446-46830-6

Inhalt

Titelei

Impressum

Inhalt

Vorwort

1 Einleitung

1.1 Eigenschaften von Zeitreihen

1.2 Daten, Korrelationen und das „Ende der Theorie“

1.3 Inhalt

1.4 Voraussetzungen, Ressourcen und praktische Hinweise

2 Verarbeitung und Vorverarbeitung von Zeitreihen

2.1 Mit Datumsangaben arbeiten

2.1.1 Daten laden

2.1.2 Datumsangaben und Zeitstempel parsen

2.1.3 Indexbezogene Datums-Funktionen

2.2 Operationen entlang der Zeitachse

2.2.1 Mit Lags arbeiten

2.2.2 Differenzen erster und höherer Ordnung

2.3 Imputation fehlender Werte

2.3.1 Fehlende Werte vorbehandeln

2.3.2 Einfache Imputationsverfahren

2.3.3 Mit gleitenden Mittelwerten arbeiten

2.3.4 Zeitfenster imputieren

2.4 Daten mit NumPy in Form bringen

2.4.1 Pandas und NumPy

2.4.2 Slicing

2.4.3 Restrukturierungsmaßnahmen

3 Grundprinzipien maschinellen Lernens

3.1 Lineare Regression

3.1.1 Grundlagen

3.1.2 Umsetzung mit Scikit-learn

3.1.3 Trainings- und Testdaten separieren

3.2 Logistische Regression

3.2.1 Grundlagen

3.2.2 Umsetzung mit Scikit-learn

3.3 Softmax-Regression

3.3.1 Grundlagen

3.3.2 Umsetzung mit Scikit-learn

3.4 Feature-Vorverarbeitung

3.4.1 One-Hot-Codierung

3.4.2 Standardisierung

3.4.3 Hauptkomponentenanalyse

3.4.4 Vorverarbeitungsmethoden in der Praxis

3.5 Zeitreihen mit Standardverfahren verarbeiten

3.5.1 Modelle mit Zeitangaben anlernen

3.5.2 Mit Interaktionsvariablen arbeiten

3.5.3 Nicht-lineare Beziehungen modellieren

4 Prognoseverfahren für univariate Zeitreihen: ARIMA & Seasonal ARIMA

4.1 Autoregression (AR)

4.2 Moving-Averages-Modell (MA)

4.3 Stationarität

4.3.1 Auf Stationarität testen

4.3.2 Saisonale Komponenten entfernen

4.3.3 Trends entfernen

4.3.4 Warum man Zeitreihen stationär macht

4.4 Autokorrelationen und partielle Autokorrelationen

4.5 ARIMA-Verfahren

4.5.1 Umsetzung mit statsmodels

4.5.2 Evaluation des Modells über die Testdaten

4.5.3 Modell-Kenngrößen zur Evaluation einsetzen

4.6 Zeitreihen mit saisonalen Komponenten modellieren

4.6.1 Saisonale Daten analysieren und modellieren

4.6.2 Modelle mit der Brut-Force-Methode anlernen

4.6.3 Prognosen erstellen

4.7 Trends verarbeiten

4.7.1 Konstante Trends modellieren

4.7.2 Mit komplexen Trends arbeiten

4.8 Kontexteffekte integrieren

5 Deep-Learning-Verfahren

5.1 Arbeitsweise neuronaler Netze

5.1.1 Aufbau neuronaler Netze

5.1.2 Training eines neuronalen Netzes

5.1.3 Neuronale Netze auf Lernaufgaben einstellen

5.2 Mit TensorFlow 2/Keras arbeiten

5.2.1 Ein einfaches Keras-Modell aufbauen

5.2.2 Einen Klassifizierer anlernen

5.2.3 Den Anlernprozess steuern

5.3 Überanpassung verhindern

5.3.1 Regularisierung

5.3.2 Dropout

5.4 Rekurrente Netze

5.4.1 Funktionsweise rekurrenter Layer

5.4.2 Long Short Term Memory (LSTM) und Gated Recurrent Unit (GRU)

5.4.3 Training eines rekurrenten Layers mit Keras

5.4.4 Mit Zeitfenstern arbeiten

5.5 Konvolutionale Netze

5.5.1 Funktionsweise konvolutionaler Schichten

5.5.2 Zeitreihen mit konvolutionalen Layern verarbeiten

5.5.3 Training einer Zeitreihe mit einer konvolutionalen Schicht

5.6 Mit Zeitfenstern in der Praxis arbeiten

5.6.1 Generatoren

5.6.2 Zeitfenster mit Generatoren anlernen

5.7 Domänenspezifische Lernarchitekturen umsetzen

5.7.1 Saisonale Komponenten vorverarbeiten

5.7.2 Mit der funktionalen Keras-API arbeiten

5.7.3 Zeitreihendaten und zeitkonstante Daten in einem Modell verarbeiten

5.7.4 Lernarchitektur und Preprocessing

5.8 Dimensionsreduktion mit Autoencodern

5.8.1 Architektur eines Autoencoders

5.8.2 Einen Autoencoder anlernen

5.8.3 Dimensionen kategorialer Variablen reduzieren

Literaturverzeichnis

Vorwort

Zeitreihendaten entstehen heute in einer Vielzahl von Geschäftsfeldern – ob im Einzelhandel, in der Finanzbranche oder in der industriellen Produktion. Überall werden Messdaten aufgezeichnet und mit Zeitstempeln versehen abgelegt.

Solche Daten bilden nicht nur isolierte Zustände ab, sie sind wie Filme, die den Verlauf eines Vorgangs mit einer Serie von Momentaufnahmen nachzeichnen. Die zeitliche Dimension, die dadurch darstellbar wird, ist in einer datengetriebenen Ökonomie mehr als nur eine Spielart der Data Sciences. Der analytische Mehrwert von Zeitreihen wird bereits heute in einer Vielzahl von Geschäftsfeldern gewinnbringend eingesetzt und in einer noch größeren Zahl von Geschäftsfeldern wird das in der Zukunft geschehen.

Um diesen analytischen Mehrwert nutzen zu können, braucht man die richtigen Instrumente. Man braucht Konzepte und Techniken, muss verstehen, welche Muster in Zeitreihen typischerweise auftreten, welche Möglichkeiten es gibt, sie zu analysieren, und wie man sie zur Erzeugung von Prognosen einsetzen kann.

Genau das sind die Themen dieses Einführungsbuchs. Es bietet einen Einstieg in die Grundlagen und in die Praxis der Zeitreihenanalyse. Es zeigt anhand einer Vielzahl von Anwendungsbeispielen, wie sich Zeitreihen mit Python aufbereiten und analysieren lassen.

Dieses Buch ist aber kein Handbuch. Erwarten Sie also nicht, dass alle Verfahrensweisen, die es im Bereich der Zeitreihenanalyse gibt, besprochen werden. Es ist deshalb insbesondere für LeserInnen empfehlenswert, die neu in diesem Bereich sind und die sowohl eine Einführung in die wichtigsten Konzepte als auch in die zentralen Verfahren der Zeitreihenanalyse suchen. Wenn das Ihre Ziele sind und Sie darüber hinaus die nötigen Skills entwickeln möchten, um selbstständig mit Ihren eigenen Daten arbeiten zu können, bietet Ihnen dieses Buch einen soliden Einstieg.

Jetzt wünsche ich Ihnen eine anregende Lektüre. Ich hoffe, dass Sie währenddessen auch die Ehrfurcht vor der Materie verlieren, und dass das Buch Sie dazu inspiriert, eigene kreative Machine-Learning-Lösungen zu entwickeln!

Jochen Hirschle

Braunschweig im Oktober 2020

1Einleitung

Die Fortschritte, die mit Machine-Learning-Verfahren in den letzten Jahren erzielt wurden, sind insbesondere in zwei Bereichen greifbar geworden:

       In der Sprach- und Textverarbeitung sind durch die Entwicklung von Technologien wie Word-Embedding, rekurrente neuronale Netze und Sequence-to-Sequence-Architekturen nachhaltige Verbesserungen bei der semantischen und syntaktischen Analyse erzielt worden. Automatische Übersetzungen werden immer präziser, Chatbots sind in der Lage, Sätze zu verstehen und angemessene Antworten auf Fragen von BenutzerInnen zu geben.

       Die Analyse von Foto- und Videomaterial hat sich mit konvolutionalen Netzen, die wiederkehrende Formen und Muster an verschiedenen Positionen in Bildern lokalisieren können, völlig verändert. Computer-Vision-Technologien wie Gesichtserkennung oder autonomes Fahren sind dadurch erst möglich geworden.

Auch wenn das vielleicht weniger offensichtlich ist, vollzieht sich im Bereich der Analyse von Zeitreihen gegenwärtig ein ähnlicher Umbruch. Womöglich geht dieser Umbruch etwas leiser vonstatten als in den anderen Bereichen. Das heißt aber nicht, dass dessen Auswirkungen weniger weitreichend wären.

Schließlich sind Zeitreihendaten der Schlüssel zur Prognose der Zukunft. Mit ihrer Hilfe lässt sich der Verlauf eines Prozesses nachzeichnen – der Kurs einer Aktie, die Nachfrage nach einem Produkt, der Stromkonsum oder der Verlauf einer Krankheit oder des Klimas. Wer aber die Historie eines Prozesses und dessen typische Muster versteht, kann die Fortschreibung dieses Prozesses über die Gegenwart hinaus überblicken. Zustände und Entwicklungen in der Zukunft werden prognostizierbar.

Die Zeichen für diesen stillen Umbruch stehen jedenfalls gut. Das hat natürlich mit der Tatsache zu tun, dass Zeitreihendaten heute in großen Mengen und in ganz unterschiedlichen Geschäftsfeldern entstehen – in der Produktion (der sogenannten Industrie 2.0), im Finanzsektor, im Zuge der Entwicklung des „Internets der Dinge“. Überall werden Messreihen produziert, die Vorgänge in ihrem Verlauf beschreiben.

Und es hat damit zu tun, dass immer mehr Ressourcen in die Entwicklung von Analysetechnologien und neue Module und Frameworks fließen, die den praktischen Einsatz bewährter und neuerer Technologien vereinfachen. Sie vereinfachen es, Zeitreihen in auswertbare Strukturen zu gießen, und sie vereinfachen es, Lernarchitekturen aufzubauen, die auf die Analyse von Zeitreihen zugeschnitten sind.

Genau wie in den anderen Bereichen auch, sind dabei alle Augen auf neuronale Netze gerichtet. Mit ihnen gehen die größten Erwartungen, Hoffnungen und wahrscheinlich auch Befürchtungen einher. Und wirklich gibt es einige vielversprechende Ansätze in diesem Bereich. Vorwiegend mit Deep-Learning-Verfahren, die auf Basis rekurrenter Schichten arbeiten, deren Lernarchitekturen aber auf die Eigenarten von Zeitreihen eingestellt werden [Lai2018].

Aber auch wenn die Aufmerksamkeit groß und berechtigt ist, darf man sich nicht täuschen. Neuronale Netze sind zwar Schlüsseltechnologie, aber sie revolutionieren das maschinelle Lernen nicht im Alleingang. Auch wenn sie ihrer Grundveranlagung nach beliebig komplexe Probleme lösen können, heißt das noch lange nicht, dass sie das in der Praxis auch wirklich tun. Neuronale Netze sind keine Allesfresser, in die man oben Daten einfüllen und unten schlaue Ergebnisse abzapfen kann.

Sie sind sensibel im Hinblick auf die Struktur der Informationen, die wir ihnen präsentieren. Und sie reagieren sensibel auf die Art und Weise, wie wir ihre Lernarchitektur einstellen. Das hat damit zu tun, dass sie keine Vorkenntnisse und keine Vorstellungen von Problemen aus ihrem Alltagswissen schöpfen können. Sie wissen nicht, welche Datenpartitionen für eine Lernaufgabe relevant sind und welche nicht. Sie können wichtige von unwichtigen Informationen nicht unterscheiden und keine systematischen, hypothesengeleiteten Versuche unternehmen, um ein Problem anzugehen. Deshalb arbeiten sie am besten, wenn sie auf eine Lernaufgabe hin getrimmt werden, und wenn die Daten, mit denen wir sie füttern, eine bestimmte Art der Interpretation nahelegt.

Sie werden im Laufe der Lektüre und an den Anwendungsbeispielen feststellen, dass weder Machine-Learning-Verfahren im Allgemeinen, noch Deep-Learning-Ansätze im Besonderen und schon gar nicht ARIMA-Modelle, eine Lernaufgabe ohne weitreichende menschliche Vorbereitung zuverlässig lösen können. Das heißt aber natürlich nicht, dass neuronale Netze deswegen in ihrer Prognosekraft eingeschränkt wären. Es heißt nur, dass wir ihre Eigenschaften kennen müssen, um sie auf eine Lernaufgabe einstellen zu können.

1.1Eigenschaften von Zeitreihen

Bevor wir uns aber mit den Lernalgorithmen und ihren Eigenheiten beschäftigen, deren konzeptuelle Grundlagen und praktische Einsatzmöglichkeiten ansehen, loten wir zu Beginn einige Hintergründe der Materie aus. Wir beschäftigen uns mit den Eigenschaften und Problemen des Materials, mit dem wir arbeiten.

Zeitreihen sind – etwa im Unterschied zu Text- oder Bilddaten – kein spezifischer Datentyp. Es handelt sich um ein Strukturmerkmal von Daten, um eine Ordnung, in der Informationen vorliegen. In diesem Buch interessieren wir uns in erster Linie für diskrete Zeitreihen. Diskrete Zeitreihen sind Zeitreihen, in denen die Messwerte, die über einen Untersuchungsgegenstand gewonnen wurden, in regelmäßigen Intervallen organisiert sind – zum Beispiel in Sekunden-, Stunden oder Tagesintervallen.

Diese Ordnung der Daten ermöglicht es, die Veränderung des Untersuchungsgegenstandes über die Zeitachse zu analysieren. Das ist einer der Hauptvorteile von Zeitreihen. Im Wesentlichen geht es darum, herauszufinden, inwiefern ein zeitlich späterer Messwert durch zeitlich frühere Messwerte beeinflusst wird. Treten wiederkehrende Muster in Erscheinung, spricht das dafür, dass die Reihe einem bestimmten Regelsystem unterliegt. Dessen Kenntnis kann dann dazu verwendet werden, die Historie einer spezifischen Reihe mit einer gewissen Fehlertoleranz in die Zukunft hinein fortzuschreiben.

Leider beginnen an dieser Stelle auch schon die Unwägbarkeiten. Zwar sind die meisten davon nicht auf Zeitreihen beschränkt, treten aber in Zeitreihen im besonderen Maß in Erscheinung.

Kausale Beziehungen und Korrelationen

Eine dieser Fragen, mit denen wir praktisch immer konfrontiert werden, wenn wir mit Machine-Learning-Algorithmen arbeiten, ist die Frage der Unterscheidung zwischen Korrelation und Ursache-Wirkungsbeziehung. Auch wenn die Analyse von Zeitreihen immerhin den Vorteil hat, dass wir kontrollieren können, ob ein Ereignis vor oder nach einem anderen Ereignis auftritt, sind wir dadurch noch lange nicht sorgenfrei.

Unproblematisch ist das nur, solange wir uns an die idealtypischen Beispiele aus dem Lehrbuch halten, zum Beispiel der Aufzug dunkler Wolken, die nicht nur Vorbote oder Symptom des Regens sind, sondern den Regen tatsächlich auslösen. Was ist aber die Ursache für einen Unfall, den ein betrunkener Autofahrer ausgelöst hat? Zu spätes Bremsen, Tunnelblick, verlangsamtes Reaktionsvermögen, die Tatsache, dass am Straßenrand ein Reh stand, die Trinkkultur der Gesellschaft oder vielleicht doch der Bossa Nova?

Auch gehen die allermeisten Ereignisse nicht nur auf eine einzige Ursache zurück. Sie gehen auf ein ganzes Bündel von Ursachen zurück, das erst in Kombination zu einem auslösenden Faktor wird – das Entladen von Elektrizität zwischen Wolken, das sich als Blitz manifestiert, die Ausbreitung einer Protestbewegung, die auf vielfältige, mehr oder weniger koordinierte Handlungen von Individuen zurückgeht.

Davon abgesehen haben wir oft überhaupt nicht die Möglichkeit, das verursachende Phänomen direkt zu messen. Entweder weil wir es nicht kennen oder weil wir keine Messinstrumente besitzen, mit denen das möglich wäre. Also benutzen wir Indikatoren und Proxys. Wo wir auch hinsehen, wird nicht das eigentliche Phänomen gemessen, für das wir uns interessieren, sondern auf Stellvertreter gesetzt.

Dazu muss man keine abstrakten Beispiele erfinden. Schon der Abfall des Benzindrucks, den wir aus den Sensordaten auslesen und aus dem wir schließen, dass die Turbine bald ausfällt, ist nicht die Ursache für deren Ausfall, sondern nur Epiphänomen, das wir als Indikator benutzen. Ursache ist etwas anderes. Vielleicht ein Steinschlag, der die Benzinleitung beschädigt hat.

In manchen Fällen spielt es womöglich keine Rolle, ob wir Ursache oder Begleiterscheinungen messen. Vollkommen irrelevant ist es aber so gut wie nie. Allein schon, weil ein Epiphänomen von sehr unterschiedlichen Faktoren ausgelöst werden kann und nicht nur von dem einen Faktor, der das Ereignis zur Folge hat, das wir prognostizieren wollen. Wir können uns also nie sicher sein, ob am Ende wirklich das erwartete Ereignis eintritt, nur weil wir das Epiphänomen beobachtet haben.

Messungen

Damit sind wir auch schon bei einem zweiten Aspekt angelangt: bei der Messung bzw. der Gewinnung von Informationen. Darüber machen wir uns als Data Scientists nur selten Gedanken. Jedenfalls nicht, wenn es um die Frage der Erhebung geht. Ein Vorgang, bei dem wir auf sehr konkrete Weise mit der Realität und ihren Eigenarten konfrontiert werden.

In der empirischen Praxis delegieren wir die Erhebung von Informationen an Messinstrumente: An Thermometer, Spektrometer, Cookies, Tracker, Formulare oder Fragebögen. Dabei nehmen wir stillschweigend an, dass solche Informationen zuverlässig oder sogar objektiv sind – was immer das heißt. Zum Beispiel, dass sie nicht den typischen Verzerrungen unterliegen, die unsere Sinnesorgane und unser Erinnerungsvermögen produzieren.

Das ist ein Fehler. Denn Messungen gehen in den meisten Fällen mit einer Vielzahl von Problemen einher. Auch wenn wir das den polierten Datenmatrizen, mit denen wir später arbeiten, nicht mehr ansehen.

Da wäre zum Beispiel, wie wir oben gesehen haben, die Tatsache, dass wir die Dinge, für die wir uns eigentlich interessieren, häufig nicht direkt erheben können. Wir weichen auf Proxys aus, mit all den Konsequenzen, die daraus im Hinblick auf die Frage der Analyse von Ursache-Wirkungsbeziehungen resultieren.

Da wären aber auch die Ungenauigkeiten des Messinstruments oder der Einfluss sich verändernder Rahmenbedingungen bei mehrmaligen Messungen. Wenn zum Beispiel die Vibrationen, die beim Ausfahren der Landeklappen eines Flugzeugs entstehen, die Aufzeichnungen der Schwingungen einer Turbine beeinflussen oder wenn das Messinstrument über die Zeit hinweg verkalkt, undicht wird oder oxidiert, sind unsere Messungen verzerrt. Auch ein Tracker misst nur so lange die Aktivitäten einer Person im Internet, bis ihn jemand löscht oder bis sich die Person entscheidet, mit einem anderen Browser die interessanten Seiten zu öffnen. Hinzu kommt, dass solche Ungenauigkeiten und Ausfälle, wie wir später sehen werden, bei der Analyse von Zeitreihen besonders schwer ins Gewicht fallen, weil Algorithmen häufig schon kleinste Schwankungen im Verlauf als Anzeichen für ein Ereignis deuten.

Veränderung

Darüber hinaus haben wir es in der Zeitreihenanalyse mit einem ganz allgemeinen und wissenschaftstheoretisch weitgehend ungelösten Kernproblem zu tun, nämlich mit der Frage, was Veränderung überhaupt bedeutet. Das klingt vielleicht erst einmal seltsam. Aber was ist Veränderung? Wenn sich etwas verändert, wird es dann durch die Veränderung nicht zu etwas Anderem? Ist Veränderung nicht ein Paradoxon? Wenn es Veränderung gibt, dann muss das Objekt, das sich verändert, doch gleichzeitig unverändert bleiben, jedenfalls soweit unverändert, dass wir es nach der Änderung immer noch als das gleiche Objekt erkennen können.

Ist ein Mensch, der altert, noch derselbe Mensch wie früher, der Erwachsene der gleiche Mensch wie das Kind? Die Frage können wir vielleicht aus unserer Erfahrung heraus noch eindeutig mit Ja beantworten – obwohl dem einen oder anderen schon gewisse Zweifel kommen mögen. Und die Grenzen sind ja fließend. Wie ist es mit einer Raupe, die sich zu einem Schmetterling verpuppt, ein Mensch, der stirbt, oder eine Maschine, die sich in ihre Bestandteile auflöst? Jetzt wird es schon schwieriger. In den ersten beiden Fällen würde man vermutlich eher von Verwandlung oder von Übergang und im zweiten von Desintegration sprechen [Popper2016, S. 45].

1.2Daten, Korrelationen und das „Ende der Theorie“

Das Schöne oder auch das Problem der Data Sciences – je nachdem aus welcher Perspektive man das betrachten möchte – ist, dass sie sich um all diese Dinge in der Regel wenig Gedanken machen muss.

Zum einen überlassen wir die Erhebung der Informationen anderen. Wir arbeiten mit fertigen Datenmatrizen, die wir höchstens noch für die Analyse aufbereiten und in Form bringen müssen. Wenn Daten fehlen oder ungenau sind, dann sind das für uns pragmatische Fragen, dir wir mit technischen Mitteln, mit Imputationsverfahren oder Kontrollvariablen, die wir in Lernalgorithmen einsetzen, – soweit wie möglich – in den Griff bekommen müssen.

Zum anderen haben wir uns eine gewisse Ignoranz gegenüber der Frage von Ursache-Wirkungsbeziehungen zu eigen gemacht. Manche haben daraus sogar eine Grundhaltung entwickelt, die sich in etwa so zusammenfassen lässt: Warum sollten wir uns überhaupt dafür interessieren, ob die Modelle auf Basis von Epiphänomenen angelernt werden oder nicht, solange wir damit nur zuverlässige Prognosen erstellen können?

Google’s founding philosophy is that we don’t know why this page is better than that one: If the statistics of incoming links say it is, that’s good enough. No semantic or causal analysis is required. That’s why Google can translate languages without actually „knowing“ them. [Anderson2008]

Das ist natürlich nur eine Art der Grundhaltung. Andere sehen das anders. Andere denken, dass wir uns, indem wir die methodische Not zur beruflichen Tugend machen, mittelfristig die Zukunftschancen verbauen.

Zum Beispiel Judea Pearl, einer der Pioniere in der Entwicklung intelligenter Systeme: „All the impressive achievements of deep learning amount to just curve fitting“, sagte er 2018 in einem Interview [TheAtlantic2018] und wollte damit zum Ausdruck bringen, dass wir uns seit geraumer Zeit im Kreis drehen.

Solange künstliche Intelligenz nicht mehr leistet als Regelmäßigkeiten in großen Datensätzen aufzuspüren und wir den Algorithmen nicht den Unterschied zwischen Epiphänomenen und kausalen Ursache-Wirkungsbeziehungen beibringen können, werden wir schon bald keine weiteren Fortschritte mehr erzielen [Pearl2018]:

The key, he [Judea Pearl] argues, is to replace reasoning by association with causal reasoning. Instead of the mere ability to correlate fever and malaria, machines need the capacity to reason that malaria causes fever. [TheAtlantic2018]

Zuletzt, und das ist vielleicht die wichtigste Erkenntnis, können wir das Paradoxon von Veränderung und Identität in gewisser Weise für unsere Zwecke lösen, nämlich indem wir daraus eine statistische Eigenschaft machen. Vielleicht ist das nicht die Antwort auf die philosophische Frage, die dahintersteht, aber immerhin eine Antwort auf die Frage, wie sich Veränderung bei gleichzeitiger Beständigkeit überhaupt konzeptualisieren lässt.

Nehmen wir an, ein Objekt verfügt über gewisse Eigenschaften, die es zu dem machen, was es ist. Und nehmen wir weiter an, dass wir diese Eigenschaften mithilfe eines oder mehrerer Indikatoren messen können. Wenn wir die Identität eines Objekts nicht als etwas außerhalb dieser Eigenschaften stehendes betrachten, dann drückt sich Identität offensichtlich in der Korrelation dieser Eigenschaften über die Zeit aus.

Das Phänomen nennt sich Autokorrelation. Es bedeutet zum Beispiel, dass der Messwert einer Eigenschaft zum Zeitpunkt t vermutlich sehr ähnlich dem Messwert zum Zeitpunkt t + 1 ist. Zumindest dann, wenn man davon ausgeht, dass der zeitliche Abstand zwischen t und t + 1 sehr klein Ist. Veränderung drückt sich dann in einer abnehmenden Korrelation über die Zeit aus. Die Korrelation selbst zeigt aber immer noch an, dass zwischen dem Objekt zum Zeitpunkt t und dem Objekt zum Zeitpunkt t + 1, t + 10 oder t + 1000 eine Verbindung besteht.

Nehmen wir zum Beispiel die Drehgeschwindigkeit eines Triebwerkteils, die wir zu zwei Zeitpunkten messen. Wenn der Abstand zwischen den beiden Messzeitpunkten hinreichend gering ist, ist die Divergenz zwischen der Drehzahl sehr klein. Die Geschwindigkeit zum Zeitpunkt t0 beinhaltet also bereits einen hohen Anteil der Information über die Drehgeschwindigkeit zum Zeitpunkt t1.1

Die Veränderung der Messwerte zwischen zwei Zeitpunkten zeigt entsprechend an, dass sich das Objekt verändert. Darüber hinaus erhalten wir über den Vergleich der Messwerte aber auch Informationen über die Art der Veränderung. Bleiben wir bei unserem Triebwerk: Wenn der Messwert zum Zeitpunkt t0 kleiner ist als zum Zeitpunkt t1, deutet das darauf hin, dass die Maschine beschleunigt. Ist der Wert zum Zeitpunkt t1 kleiner als zum Zeitpunkt t0, verlangsamt sich die Drehgeschwindigkeit.

Auch lässt sich die Stärke der Differenz interpretieren, zum Beispiel weil ein Schwungrad eine gewisse Trägheit an den Tag legt und eine abrupte Verlangsamung oder Beschleunigung nur unter hoher Krafteinwirkung zustande kommt. Ein vollkommenes Degradieren der Maschine würde sich gegebenenfalls in einer Nullkorrelation relevanter Messwerte über zwei kurze Zeitpunkte hinweg widerspiegeln. Wenn man das wollte, könnte man dann von der Auflösung der Identität des Objekts sprechen.

Ob es über diese Art der Analyse hinaus sinnvoll ist, Identität mithilfe von Korrelationen auszudrücken, ist eine andere Frage. Tatsächlich ist die Trägheit von Objekten beziehungsweise die Abhängigkeit von Zuständen eines Objekts in der Zukunft von Zuständen in der Vergangenheit ja die einzige Möglichkeit überhaupt, einen Blick in die Zukunft zu werfen. Wenn wir also für den Kurs einer Aktie keine Korrelation zwischen den Kursen am Vortag und Folgetag feststellen, können wir auch keine Prognosen erstellen. Für den Börsenmakler oder den Anleger ist das allerdings kein Grund, die Identität der Aktie in Zweifel zu ziehen – zumal die daran gekoppelten Gewinne und Verluste sehr reale Konsequenzen dieser Identität sind. Das liegt aber streng genommen nicht daran, dass wir Identität falsch operationalisieren, sondern dass die Identität eines Objekts im Zweifelsfall über ein Außenkriterium hergestellt wird, dass sich per Definition nicht verändern kann.

In der Zeitreihenanalyse sind Autokorrelationen jedenfalls ein wichtiges Konzept, das für verschiedenste Zwecke herangezogen wird. Auch saisonale Schwankungen sind aus statistischer Sicht nicht viel mehr als Korrelationen zweier Messwerte über die Zeit hinweg. Allerdings kommen jetzt andere zeitliche Bezüge ins Spiel. Wir müssen uns daher nicht nur um zeitversetzte Messungen kümmern, sondern auch um die Abstände zwischen den Messzeitpunkten. Die Temperatur im März hängt vielleicht weniger von der Temperatur im Februar als von der Temperatur im März des Vorjahres ab. Die Verkaufszahlen von Weihnachtsmännern im Dezember 2021 lassen sich präziser mithilfe der Zahlen der Verkäufe von Weihnachtsmännern im Dezember 2020 vorhersagen als mit den verkauften Weihnachtsmännern im November des gleichen Jahres.

Prognosen erzeugen heißt also im Wesentlichen, die wiederkehrenden Muster entdecken und sie in die Zukunft fortzuschreiben. Solche Muster können natürlich mehr oder weniger komplex sein: Trägheit, saisonale Schwankungen, einfache Trends, exponentielles Wachstum. Und sie können in unterschiedlichen Messdaten zum Ausdruck kommen.

Als Menschen vor unserer Zeit versuchten, die Temperatur von morgen vorherzusagen, verwendeten sie intuitiv alle verfügbaren Indikatoren und nicht nur die Temperatur am heutigen Tag. Sie warfen einen Blick in den Himmel und deuteten aufziehende Wolken als Vorboten für Regen, der Kälte bringt. Sie leiteten aus der Windrichtung ab, ob Luftmassen aus dem Süden oder Norden zu ihnen strömten. Sie orientierten sich womöglich am Verhalten der Tiere, an den Schwalben, die bei aufziehendem Regen, so sagt man, tiefer fliegen.

Komplexe statistische Modelle gehen ganz ähnlich vor. Wir können sie unter Verwendung aller verfügbaren Messdaten trainieren, und sie versuchen aus all diesen Daten – aus Verläufen, Trends, Interaktionen einzelner Messindikatoren untereinander – Muster zu erlernen, die Hinweise auf Zielwerte in der Zukunft geben.

1.3Inhalt

Damit haben wir uns einen ersten Eindruck über die Hintergründe und Probleme verschafft. Wir werden sehen, dass wir einige dieser Probleme nicht loswerden. Trotzdem sollten wir sie nicht ignorieren, da die Modelle ab einem bestimmten Punkt nicht mehr besser werden, wenn wir nicht in der Lage sind, die tieferliegenden Schwachstellen unserer Daten oder Ansätze zu beheben.

Kommen wir jetzt aber zu den Inhalten dieses Buches. Es geht schließlich nicht darum, was wir nicht können, sondern um das, was möglich ist. Was wir also aus unseren Daten machen, welche Ansätze für welche Arten von Daten geeignet sind, wie wir Daten vorbereiten, Modelle aufsetzen, einstellen und anlernen können. Das ist Thema dieses für die Praxis geschriebenen Einführungsbuches.

Wir beginnen im zweiten Kapitel mit einer Auseinandersetzung mit dem Datenmaterial. Die Aufbereitung von Zeitreihendaten birgt in der Praxis einige Fallstricke. Wir müssen mit Datumsangaben arbeiten, unsere Daten in gleichmäßige Intervalle unterteilen, in Sekunden-, Minuten-, Stunden-, Tages- oder Monatsrhythmen. Wir müssen unser Datenmaterial, bevor wir Modelle anlernen können, verstehen, Dynamiken und Bewegungen visuell erfassen, um das richtige Modell für eine Aufgabe auswählen zu können und auch, um unsere Modelle beim Anlernen auf die richtige Spur zu bringen. Denn der Erfolg von Lernalgorithmen hängt neben der Frage, ob die Daten überhaupt relevante Informationen beinhalten, auch von der Wahl der richtigen Lernarchitektur ab.

Nachdem wir also im ersten Kapitel die Daten organisiert und visualisiert haben, beginnen wir im dritten Kapitel mit der Besprechung möglicher Prognoseverfahren. Wir starten mit den einfacheren Verfahren, die zum Grundstock des Machine Learning gehören. Es geht um lineare, logistische und Softmax-Regressionen. Verfahren, die zwar nicht speziell zur Analyse von Zeitreihendaten konzipiert sind, mit denen sich aber bestimmte Problemstellungen ohne Weiteres modellieren lassen. Davon abgesehen bilden sie die Grundlage aller anderen Verfahren, sowohl der ARIMA- als auch der Deep-Learning-Modelle, denen wir uns in den folgenden Kapiteln widmen. Daher nutzen wir die Gelegenheit und sehen uns an, wie sie arbeiten, wie sich lineare und nicht-lineare Zusammenhänge modellieren lassen und woran sie scheitern.

Von dort aus geht es ohne weitere Umwege zum vierten Kapitel und damit zu den ARIMA-Verfahren. Mit ihnen lassen sich latente Beziehungen, die erst auf den zweiten Blick in den Daten sichtbar werden, für Prognosen fruchtbar machen. Außerdem bieten sie Möglichkeiten, mit saisonalen und Trendkomponenten umzugehen. Auf der anderen Seite sind ARIMA-Modelle etwas widerspenstig in der Handhabung. Sie verlangen, dass wir die Daten vorbereiten und gut genug kennen. Wir müssen den Modellen mitteilen, in welchen Regionen der Reihe sie Muster anlernen sollen. Daher kümmern wir uns um Begriffe wie Stationarität und versuchen mithilfe von Autokorrelationsdiagrammen ein Auge für die verborgenen Muster zu entwickeln, die in unseren Daten enthalten sind.

Die Beschäftigung mit ARIMA-Verfahren ist die beste Schule, um das Handwerk der Zeitreihenanalyse zu lernen. Das brauchen wir auch, wenn es im fünften Kapitel um Deep-Learning-Verfahren geht. Von allen Verfahren sind neuronale Netze am leistungsstärksten. Sie können auf Grundlage eines Messwertes oder einer Vielzahl von Messwerten einer Zeitreihe eine Zielvariable prognostizieren. Sie können komplexe Muster aus Daten lernen. Sie haben das größte Potenzial und ihnen gehört die Zukunft. Aber sie verzeihen Fehler in der Handhabung noch weniger als ARIMA-Modelle. Sie sind anfällig für schlecht vorbereitete Daten, die sie nicht anlernen. Sie neigen zur Überanpassung an die Trainingsdaten und es gibt nur sehr wenige Anhaltspunkte dafür, wie wir ein neuronales Netz aufbauen sollten, über wie viele Schichten und Neuronen es verfügen sollte, um optimale Schätzergebnisse zu erzielen.

Wir müssen also erst verstehen, wie neuronale Netze arbeiten, um sie für unsere Problemstellungen einsetzen und zuschneiden zu können und um unsere Daten für den Anlernprozess vorbereiten zu können. Und wir brauchen vor allem Vergleichsmöglichkeiten. Wir müssen in der Lage sein, herauszufinden, ob ein angelerntes neuronales Netz wirklich besser funktioniert als eine einfache Regression, ein ARIMA-Modell oder ein Baseline-Schätzer, den wir auf Grundlage einer Faustformel erzeugt haben.

1.4Voraussetzungen, Ressourcen und praktische Hinweise

Im praktischen Teil arbeiten wir dabei mit der Programmiersprache Python. Sie hat sich in den letzten Jahren zu einer der beliebtesten Programmiersprachen unter Data Scientists und Entwicklern gleichermaßen gemausert [Stackoverflow2019].

Python ist leicht zu lernen und bietet eine Reihe von Vorteilen im Umgang mit der Verarbeitung strukturierter und unstrukturierter Daten, im Umgang mit mehrdimensionalen Arrays und mit Datentypen aller Art. Außerdem bietet Python mit Scikit-learn, statsmodels, TensorFlow und Keras State-of-the-Art Machine-Learning-Bibliotheken, die ständig verbessert und weiterentwickelt werden.

Wenn Sie mit diesem Buch arbeiten, sollten Sie über Python-Grundlagenwissen verfügen. Und sie sollten wissen, wie sich Daten mit der Bibliothek pandas einlesen und verarbeiten lassen. Außerdem sind Kenntnisse statistischer Basiskonzepte wie Mittelwert, Standardabweichung, Korrelation oder lineare Regression hilfreich.

Die Inhalte der Kapitel des Buches bauen aufeinander auf. Sie sollten also die Inhalte des Kapitels zur Verarbeitung und Vorverarbeitung von Zeitreihen kennen, wenn Sie das Kapitel Grundlagen maschinellen Lernens lesen. Und Sie sollten die Grundlagen maschinellen Lernens beherrschen, wenn sie das Kapitel zum Thema neuronale Netze lesen. Eine Ausnahme bildet das ARIMA-Kapitel. Es ist nicht zwingend Voraussetzung, um das nachfolgende Kapitel zum Thema Deep Learning zu verstehen. Trotzdem finden Sie dort eine Reihe von Informationen über die Anatomie von Zeitreihen, die ihnen das Leben bei der Anwendung von Deep-Learning-Verfahren leichter macht.

Wenn Sie bereits Vorerfahrung in Machine Learning haben, können Sie gegebenenfalls das dritte Kapitel überspringen. Die Verfahren, die im Speziellen für die Analyse von Zeitreihendaten interessant sind, werden in den Kapiteln 4 und 5 vorgestellt.

Die Anwendungsbeispiele sind durchgehend mit Python 3.7.7 und unter Verwendung der folgenden Pakete/Versionen umgesetzt worden:

tensorflow=2.1.0 statsmodels=0.11.1 scikit-learn=0.22.1 pandas=1.1.1 seaborn=0.10.1

Wenn Sie die Beispiele selbst rechnen und dazu eine neue virtuelle Umgebung mit den relevanten Bibliotheken aufsetzen möchten, ist es ratsam, das mit Anaconda zu erledigen.2 Wenn Sie stattdessen den Package-Installer pip zur Installation verwenden, laufen Sie Gefahr, auf eine Reihe von Versionskonflikten zu stoßen.

Begleitend zum Buch finden Sie den kompletten Code und die Daten zu den Anwendungsbeispielen im Internet auf einem GitHub-Repository unter: https://github.com/tplusone/hanser_ml_zeitreihen. Sie können sich die Jupyter Notebooks mit dem Code zu den Kapiteln entweder im Browser ansehen oder das Repository klonen. Dafür benötigen Sie eine lauffähige git-Version, die sie kostenlos im Internet herunterladen und installieren können (https://git-scm.com/downloads). Mit dem folgenden Befehl werden alle Daten und Code-Beispiele auf ihren lokalen Rechner gezogen:

$ git clone https://github.com/tplusone/hanser_ml_zeitreihen.git

Hinweis zur Dezimalschreibweise:

Da in der Ausgabe der Programmiersprache Python durchgehend das amerikanische Zahlenformat zur Darstellung verwendet wird, haben wir uns – um Verwechslungen zu vermeiden – entschieden, auch im Text, in den Formeln und Tabellen dieses Zahlenformat zu verwenden. Mit einem Punkt werden daher immer Dezimalstellen, mit einem Komma Tausenderstellen abgetrennt. Ausgenommen davon sind Prozentangaben.

1 Ganz anders ist das, wenn wir diese Messwerte mit den Messwerten eines anderen Triebwerks vergleichen, die so gut wie unkorreliert sind.

2 Anaconda (https://www.anaconda.com) ist eine Data-Science-Plattform, die verschiedene nützliche Werkzeuge, unter anderem zum Anlegen virtueller Umgebungen und zur Installation von Bibliotheken, zur Verfügung stellt.

2Verarbeitung und Vorverarbeitung von Zeitreihen