1. Übersicht
In diesem Lab erfahren Sie, wie Sie mit TensorFlow ein Zeitreihenprognosemodell erstellen und diese Modelle dann mit dem Vertex AI bereitstellen.
Lerninhalte
Die folgenden Themen werden behandelt:
- Daten so transformieren, dass sie in einem ML-Modell verwendet werden können
- Daten visualisieren und untersuchen
- Mit BigQuery ML ein Zeitreihenprognosemodell erstellen
- Mit TensorFlow und LSTM- und CNN-Architekturen ein Zeitreihenprognosemodell erstellen
2. Einführung in die Zeitreihenprognose
In diesem Codelab geht es darum, wie Sie Zeitreihenprognosetechniken mit der Google Cloud Platform anwenden. Es ist kein allgemeiner Kurs zur Zeitreihenprognose, aber eine kurze Einführung in die Konzepte kann für unsere Nutzer hilfreich sein.
Zeitreihendaten
Was ist eine Zeitreihe? Eine Zeitreihe ist ein Dataset mit Daten, die in regelmäßigen Zeitintervallen aufgezeichnet wurden. Ein Zeitreihendatensatz enthält sowohl Zeit als auch mindestens eine von der Zeit abhängige Variable.

Komponenten
Eine Zeitreihe kann in Komponenten zerlegt werden:
- Trend: Steigt oder fällt in einem einigermaßen vorhersagbaren Muster
- Saisonal: Wiederholt sich über einen bestimmten Zeitraum, z. B. einen Tag, eine Woche, einen Monat oder eine Saison
- Zufällig: Restliche Schwankungen
Es kann mehrere Saisonalitätsebenen geben. Beispielsweise kann in einem Callcenter ein Muster im Anrufvolumen an bestimmten Wochentagen sowie in bestimmten Monaten auftreten. Der Rest kann möglicherweise durch andere Variablen als die Zeit erklärt werden.

Stationarität
Um die besten Ergebnisse bei der Prognose zu erzielen, sollten Zeitreihendaten stationär gemacht werden. Dabei sind statistische Eigenschaften wie Mittelwert und Varianz über die Zeit konstant. Techniken wie Differenzierung und Trendbereinigung können auf Rohdaten angewendet werden, um sie stationärer zu machen.
Die folgende Grafik der CO2-Konzentration zeigt beispielsweise ein sich wiederholendes jährliches Muster mit einem Aufwärtstrend. ( Quelle)

Nach dem Entfernen des linearen Trends sind die Daten besser für die Prognose geeignet, da sie jetzt einen konstanten Mittelwert haben.

Zeitreihendaten für maschinelles Lernen verwenden
Wenn Sie Zeitreihendaten in einem Problem des maschinellen Lernens verwenden möchten, müssen sie so transformiert werden, dass frühere Werte zur Vorhersage zukünftiger Werte verwendet werden können. In dieser Tabelle sehen Sie ein Beispiel dafür, wie verzögerte Variablen erstellt werden, um das Ziel vorherzusagen.

Nachdem wir nun einige Grundlagen behandelt haben, können wir mit der Datenanalyse und ‑prognose beginnen.
3. Notebook-Umgebung einrichten
Nachdem wir eine kurze Einführung in die Daten gegeben haben, richten wir nun unsere Umgebung für die Modellentwicklung ein.
Schritt 1: APIs aktivieren
Der BigQuery-Connector verwendet die BigQuery Storage API. Suchen Sie in der Konsole nach der BigQuery Storage API und aktivieren Sie sie, falls sie derzeit deaktiviert ist.

Schritt 2: Vertex AI Workbench-Notebook erstellen
Rufen Sie in der Cloud Console den Bereich „Vertex AI Workbench“ auf und klicken Sie auf Neues Notebook. Wählen Sie dann den neuesten TensorFlow Enterprise 2.x Notebook-Typ ohne GPUs aus:
Übernehmen Sie die Standardoptionen und klicken Sie auf Erstellen. Nachdem die Instanz erstellt wurde, klicken Sie auf JupyterLab öffnen:

Erstellen Sie dann in JupyterLab ein Python 3-Notebook:

Schritt 3: Lab-Materialien herunterladen
Erstellen Sie über die JupyterLab-Oberfläche ein neues Terminalfenster: „Datei“ -> „Neu“ -> „Terminal“.
Klonen Sie von dort aus das Quellmaterial mit diesem Befehl:
git clone https://github.com/GoogleCloudPlatform/training-data-analyst
4. Daten analysieren und visualisieren
In diesem Abschnitt führen Sie folgende Aufgaben aus:
- Eine Abfrage erstellen, mit der Daten in einer Zeitreihe gruppiert werden
- Fehlende Werte einfügen
- Daten visualisieren
- Zeitreihen in Trend- und Saisonkomponenten zerlegen
Schritt 1
Rufen Sie in Vertex AI Workbench training-data-analyst/courses/ai-for-time-series/notebooks auf und öffnen Sie 01-explore.ipynb.
Schritt 2
Löschen Sie alle Zellen im Notebook („Bearbeiten“ > „Alle Ausgaben löschen“), ändern Sie die Einstellungen für Region, Projekt und Bucket in einer der ersten Zellen und führen Sie die Zellen dann einzeln aus.
Schritt 3
In diesem Abschnitt haben Sie die Daten importiert und verschiedene Dimensionen visualisiert. Nachdem Sie nun ein klareres Bild der Daten haben, können Sie mit der Modellierung für maschinelles Lernen mit diesen Daten fortfahren.

5. Modell mit BigQuery-Zeitreihenprognose erstellen
In diesem Abschnitt führen Sie folgende Aufgaben aus:
- Zeitreihen-Eingabedaten in eine BigQuery-Tabelle importieren
- Mit der BQML-Syntax ein Zeitreihenmodell erstellen
- Modellparameter und ‑genauigkeit bewerten
- Mit dem Modell Prognosen erstellen
Schritt 1
Wir erstellen eine BigQuery-Tabelle mit den Rohdaten aus der CSV-Datei, die wir gerade untersucht haben. Laden Sie zuerst die CSV-Datei aus der Notebook-Umgebung herunter.
Klicken Sie im Verzeichnis training-data-analyst/courses/ai-for-time-series/notebooks/data mit der rechten Maustaste auf cta_ridership.csv und wählen Sie Herunterladen aus, um die Datei in Ihre lokale Umgebung herunterzuladen.
Schritt 2
Als Nächstes laden wir diese Daten in eine BigQuery-Tabelle hoch.
Rufen Sie BigQuery in der Konsole auf (suchen Sie danach oder verwenden Sie diesen Link):

Sie können die Tabelle einem neuen oder vorhandenen Dataset hinzufügen, in dem verwandte Tabellen gruppiert werden. Wenn Sie noch kein Dataset erstellt haben, klicken Sie links unten auf Ihr Projekt und dann rechts unten auf Dataset erstellen.

Wählen Sie einen Namen Ihrer Wahl aus, z. B. demo, übernehmen Sie die Standardeinstellungen und fahren Sie fort.
Wählen Sie das Dataset aus und klicken Sie rechts unten auf Tabelle erstellen, um eine neue Tabelle zu erstellen.

Wählen Sie für die Optionen zur Tabellenerstellung Folgendes aus:
- Tabelle erstellen aus: Upload
- Datei auswählen: cta_ridership.csv
- Tabellenname: cta_ridership
- Schema: Klicken Sie das Kästchen an, um Schema und Eingabeparameter automatisch zu erkennen.

Schritt 3
Jetzt können wir unser Modell erstellen. BigQuery ML bietet eine einfache Syntax ähnlich SQL, mit der Sie eine Vielzahl von Modelltypen erstellen können.
Fügen Sie diese Abfrage in den Abfrageeditor ein und ersetzen Sie demo bei Bedarf an beiden Stellen durch den Namen Ihres Datasets:
CREATE OR REPLACE MODEL
`demo.cta_ridership_model` OPTIONS(MODEL_TYPE='ARIMA',
TIME_SERIES_TIMESTAMP_COL='service_date',
TIME_SERIES_DATA_COL='total_rides',
HOLIDAY_REGION='us') AS
SELECT
service_date, total_rides
FROM
`demo.cta_ridership`
Sehen wir uns die wichtigsten Elemente der Syntax an:
| Mit dieser Anweisung wird das Modell erstellt. Es gibt Varianten dieser Anweisung, z.B. |
| Hier definieren wir die Modelloptionen, wobei die erste Option der Modelltyp ist. Wenn Sie „ARIMA“ auswählen, wird ein Zeitreihenprognosemodell erstellt. |
| Die Spalte mit den Datums-/Uhrzeitinformationen |
| Die Datenspalte |
| Mit diesem optionalen Parameter können wir Feiertage in das Modell einbeziehen. Da unsere Datenanalyse im vorherigen Schritt gezeigt hat, dass die Fahrgastzahlen an Feiertagen niedriger waren, und die Daten aus Chicago, Illinois, USA, stammen, beziehen wir US-Feiertage in das Modell ein. |
| In diesem Abschnitt werden die Eingabedaten ausgewählt, mit denen wir das Modell trainieren. |
Sie können der Abfrage eine Reihe weiterer Optionen hinzufügen, z. B. eine Spalte definieren, wenn Sie mehrere Zeitreihen haben, oder auswählen, ob die ARIMA-Modellparameter automatisch ermittelt werden sollen. Weitere Informationen finden Sie in der Syntaxreferenz für die CREATE MODEL-Anweisung für Zeitreihenmodelle.
Schritt 4
Sehen wir uns unser Modell genauer an. Nachdem das Training abgeschlossen ist, führen wir eine weitere Abfrage aus und ersetzen dabei bei Bedarf wieder demo:
SELECT * FROM ML.EVALUATE(MODEL `demo.cta_ridership_model`)
Interpretieren wir die Ergebnisse. In jeder Zeile sehen Sie ein Kandidatenmodell mit seinen Parametern und Bewertungsstatistiken. Die Ergebnisse werden in aufsteigender Reihenfolge des AIC (Akaike-Informationskriterium) zurückgegeben, das einen relativen Indikator für die Modellqualität darstellt. Das Modell in der ersten Zeile hat also den niedrigsten AIC und gilt als bestes Modell.
Sie sehen die Parameter „p“, „d“ und „q“ des ARIMA-Modells sowie die im Modell erkannte Saisonalität. In diesem Fall umfasst das beste Modell sowohl wöchentliche als auch jährliche Saisonalität.

Schritt 5
Jetzt können wir mit der ML.FORECAST Funktion Prognosen erstellen.
Fügen Sie Folgendes ein (und ersetzen Sie dabei bei Bedarf demo):
SELECT
*
FROM
ML.FORECAST(MODEL `demo.cta_ridership_model`,
STRUCT(7 AS horizon))
Mit dieser Abfrage werden einfach 7 Tage mit unserem Modell prognostiziert. Unten sehen Sie die sieben zurückgegebenen Zeilen. Die Prognose enthält auch ein Konfidenzintervall, das standardmäßig auf 0,95 festgelegt ist, aber in der Abfrage konfiguriert werden kann.

Gut gemacht! Wir haben mit nur wenigen BQML-Abfragen ein Zeitreihenmodell erstellt.
6. Benutzerdefiniertes Prognosemodell erstellen
In diesem Abschnitt führen Sie folgende Aufgaben aus:
- Ausreißer aus den Daten entfernen
- Mehrstufige Prognosen erstellen
- Zusätzliche Features in ein Zeitreihenmodell einbeziehen
- Informationen zu neuronalen Netzwerkarchitekturen für die Zeitreihenprognose: LSTM und CNN
- Informationen zu statistischen Modellen, einschließlich der exponentiellen Glättung nach Holt-Winters
- Ensemble-Modelle
Schritt 1
Rufen Sie in Vertex AI Workbench training-data-analyst/courses/ai-for-time-series/notebooks auf und öffnen Sie 02-model.ipynb.
Schritt 2
Löschen Sie alle Zellen im Notebook („Bearbeiten“ > „Alle Ausgaben löschen“), ändern Sie die Einstellungen für Region, Projekt und Bucket in einer der ersten Zellen und führen Sie die Zellen dann einzeln aus.
Schritt 3
Im Notebook haben Sie nun mehrere Modellarchitekturen untersucht: LSTM, CNN und statistische Modelle. Für jedes Modell sehen Sie, wie es im Vergleich zu den Testdaten abschneidet:

7. In der Cloud trainieren und Prognosen erstellen
In diesem Abschnitt führen Sie folgende Aufgaben aus:
- Daten und Modelle für das Training in der Cloud vorbereiten
- Modell mit AI Platform Training trainieren und den Fortschritt des Jobs beobachten
- Mit dem Modell mit AI Platform Prediction Prognosen erstellen
Schritt 1
Rufen Sie in Vertex AI Workbench training-data-analyst/courses/ai-for-time-series/notebooks auf und öffnen Sie 03-cloud-training.ipynb.
Schritt 2
Löschen Sie alle Zellen im Notebook („Bearbeiten“ > „Alle Ausgaben löschen“), ändern Sie die Einstellungen für Region, Projekt und Bucket in einer der ersten Zellen und führen Sie die Zellen dann einzeln aus.
Schritt 3
Im vorherigen Abschnitt haben wir ein Modell trainiert und damit Prognosen erstellt, alles in einem Workbench-Notebook. In diesem Abschnitt haben wir gezeigt, wie Sie das Python SDK für Vertex AI in Ihrem Notebook verwenden, um Vertex AI-Dienste für Training und Bereitstellung zu nutzen.

8. Herausforderung
In diesem Abschnitt versuchen Sie, die gelernten Konzepte auf ein neues Dataset anzuwenden.
Wir geben keine detaillierte Anleitung, sondern nur einige Tipps (falls Sie sie möchten).
Ziel ist es, 311-Dienstanfragen der Stadt New York vorherzusagen. Diese Anfragen, die keine Notfälle betreffen, umfassen z. B. Beschwerden über Lärm oder Probleme mit der Straßenbeleuchtung.
Schritt 1
Sehen wir uns zuerst das Dataset an.
Rufen Sie zuerst das Dataset „311 Service Requests from the City of New York“ auf.
Um die Daten besser kennenzulernen, probieren Sie einige der Beispielabfragen aus, die in der Dataset-Beschreibung aufgeführt sind:
- Wie hoch ist die Anzahl von 311-Anfragen für LKWs mit Speiseeis?
- An welchen Tagen gehen die meisten 311-Anfragen im Zusammenhang mit Partys ein?
Wählen Sie in der BigQuery-UI Abfrage erstellen aus, um zu sehen, wie Sie auf das Dataset zugreifen. Beachten Sie, dass die SELECT-Anweisung eine Abfrage von bigquery-public-data.new_york_311.311_service_requests ausführt.
Schritt 2
Wir können loslegen. Nehmen Sie in diesem Abschnitt Änderungen am Notebook Explore and Visualize vor, um mit diesen Daten zu arbeiten.
Tipps
- Duplizieren Sie das Notebook
01-explore.ipynbund arbeiten Sie damit. - Probieren Sie diese Abfrage aus, um die Daten zu untersuchen:
from google.cloud import bigquery as bq
sql = """
SELECT * FROM `bigquery-public-data.new_york_311.311_service_requests` LIMIT 5
"""
client = bq.Client(project=PROJECT)
df = client.query(sql).to_dataframe()
df.head()
- Verwenden Sie diese Abfrage, um die Anzahl der Vorfälle nach Monat zu erhalten:
SELECT
COUNT(unique_key) as y,
DATE_TRUNC(DATE(created_date), month) as ds
FROM `bigquery-public-data.new_york_311.311_service_requests`
GROUP by ds ORDER BY ds asc
- Aktualisieren Sie die Spaltenvariablen im Abschnitt „Konstanten“. In der obigen Abfrage ist die Zielspalte y und die Datumsspalte ds. Es gibt keine zusätzlichen Features.
- Ändern Sie gegebenenfalls den Dateinamen, in dem Sie die Daten für das nächste Lab exportieren.
- Exportieren Sie die Daten mit:
df.to_csv(YOUR-EXPORT-FILENAME, index=False)
Schritt 3
Erstellen wir nun ein Zeitreihenmodell mit den monatlichen Daten.
Tipps
- Duplizieren Sie das Notebook
02-model.ipynbund arbeiten Sie damit. - Aktualisieren Sie die Dataset-Parameter:
- Aktualisieren Sie die Parameter
target_colundts_colentsprechend Ihrem neuen Dataset. - Aktualisieren Sie die Modellparameter:
- Häufigkeit auf „Monatlich“ ändern (Code für Monatsbeginn ist „MS“)
- Eingabeschritte: 12 (Rückblickzeitraum ist 12 Monate)
- Ausgabeschritte: 3 (Prognose für 3 Monate)
- Saisons: 12 (Saisonalität ist 12 Monate)
- Ändern Sie den Namen der Eingabedatei, wenn Sie ihn im vorherigen Notebook geändert haben.
- Wenn Sie die Abfrage Mitte des Monats ausführen, ist die monatliche Gesamtzahl für den letzten Monat viel niedriger als erwartet. Entfernen Sie für dieses Lab den letzten Monat aus dem Dataset mit:
df = df[:-1] - In den Daten sind keine offensichtlichen Ausreißer zu sehen. Überspringen Sie diese Zellen oder kommentieren Sie sie aus.
- Passen Sie die LSTM-Einheiten und CNN-Filter sowie die Kernelgröße für dieses neue Modell an.
9. Bereinigen
Wenn Sie dieses Notebook weiterhin verwenden möchten, sollten Sie es deaktivieren, wenn Sie es nicht verwenden. Wählen Sie in der Workbench-UI in der Cloud Console das Notebook aus und klicken Sie dann auf Beenden:

Wenn Sie alle Ressourcen löschen möchten, die Sie in diesem Lab erstellt haben, löschen Sie einfach das Workbench-Notebook, anstatt es zu beenden.
Rufen Sie im Navigationsmenü in der Cloud Console „Storage“ auf und löschen Sie beide Buckets, die Sie zum Speichern Ihrer Modellressourcen erstellt haben. **Achtung** : Führen Sie diesen Schritt nur aus, wenn Sie für dieses Lab neue Buckets erstellt haben.
