In dieser Anleitung erfahren Sie, wie Sie mit einem multivariaten Zeitreihenmodell den zukünftigen Wert für eine bestimmte Spalte anhand der bisherigen Werte mehrerer Eingabefeatures prognostizieren.
In dieser Anleitung werden Prognosen für mehrere Zeitreihen erstellt. Die prognostizierten Werte werden für jeden Zeitpunkt und für jeden Wert in einer oder mehreren angegebenen Spalten berechnet. Wenn Sie beispielsweise das Wetter vorhersagen möchten und eine Spalte mit Daten zu Bundesländern angeben, enthalten die prognostizierten Daten Vorhersagen für alle Zeitpunkte für Bundesland A, dann Vorhersagewerte für alle Zeitpunkte für Bundesland B usw. Wenn Sie das Wetter vorhersagen und Spalten mit Daten zu Bundesstaaten und Städten angeben möchten, enthalten die Prognosedaten Vorhersagen für alle Zeitpunkte für Bundesstaat A und Stadt A, dann Vorhersagewerte für alle Zeitpunkte für Bundesstaat A und Stadt B usw.
In dieser Anleitung werden Daten aus den öffentlichen Tabellen bigquery-public-data.iowa_liquor_sales.sales
und bigquery-public-data.covid19_weathersource_com.postal_code_day_history
verwendet. Die Tabelle bigquery-public-data.iowa_liquor_sales.sales
enthält Daten zum Verkauf von Spirituosen aus mehreren Städten im US-Bundesstaat Iowa. Die Tabelle bigquery-public-data.covid19_weathersource_com.postal_code_day_history
enthält Wetterdaten aus der Vergangenheit, z. B. Temperatur und Luftfeuchtigkeit, aus der ganzen Welt.
Bevor Sie diese Anleitung lesen, empfehlen wir Ihnen dringend, Prognosen für eine einzelne Zeitreihe mit einem multivariaten Modell erstellen zu lesen.
Lernziele
In dieser Anleitung werden Sie durch die folgenden Aufgaben geführt:
- Erstellen eines Zeitreihenmodells, um Bestellungen in einem Getränkemarkt mithilfe der Anweisung
CREATE MODEL
vorherzusagen - Die prognostizierten Bestellwerte mithilfe der Funktion
ML.FORECAST
aus dem Modell abrufen. - Komponenten der Zeitreihe wie Saisonabhängigkeit, Trend und Feature-Attributionen mithilfe der Funktion
ML.EXPLAIN_FORECAST
abrufen Sie können diese Zeitreihenkomponenten prüfen, um die prognostizierten Werte zu erklären. - Bewerten Sie die Genauigkeit des Modells mit der Funktion
ML.EVALUATE
. - Verwenden Sie das Modell mit der
ML.DETECT_ANOMALIES
-Funktion, um Anomalien zu erkennen.
Kosten
In dieser Anleitung werden kostenpflichtige Komponenten von Google Cloudverwendet, darunter:
- BigQuery
- BigQuery ML
Weitere Informationen zu den Kosten von BigQuery finden Sie auf der Seite BigQuery-Preise.
Weitere Informationen zu den Kosten für BigQuery ML finden Sie unter BigQuery ML-Preise.
Vorbereitung
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- BigQuery ist in neuen Projekten automatisch aktiviert.
Zum Aktivieren von BigQuery in einem vorhandenen Projekt wechseln Sie zu
Enable the BigQuery API.
.
Dataset erstellen
Erstellen Sie ein BigQuery-Dataset, um Ihr ML-Modell zu speichern:
Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.
Klicken Sie im Bereich Explorer auf den Namen Ihres Projekts.
Klicken Sie auf
Aktionen ansehen > Dataset erstellen.Führen Sie auf der Seite Dataset erstellen die folgenden Schritte aus:
Geben Sie unter Dataset-ID
bqml_tutorial
ein.Wählen Sie als Standorttyp die Option Mehrere Regionen und dann USA (mehrere Regionen in den USA) aus.
Die öffentlichen Datasets sind am multiregionalen Standort
US
gespeichert. Der Einfachheit halber sollten Sie Ihr Dataset am selben Standort speichern.Übernehmen Sie die verbleibenden Standardeinstellungen unverändert und klicken Sie auf Dataset erstellen.
Tabelle mit Eingabedaten erstellen
Erstellen Sie eine Datentabelle, mit der Sie das Modell trainieren und bewerten können. In dieser Tabelle werden Spalten aus den Tabellen bigquery-public-data.iowa_liquor_sales.sales
und bigquery-public-data.covid19_weathersource_com.postal_code_day_history
kombiniert, um zu analysieren, wie sich das Wetter auf die Art und Anzahl der von Spirituosengeschäften bestellten Artikel auswirkt. Außerdem erstellen Sie die folgenden zusätzlichen Spalten, die Sie als Eingabevariablen für das Modell verwenden können:
date
: das Datum der Bestellungstore_number
: die eindeutige Nummer des Geschäfts, das die Bestellung aufgegeben hatitem_number
: die eindeutige Nummer des bestellten Artikelsbottles_sold
: die Anzahl der bestellten Flaschen des zugehörigen Artikelstemperature
: die durchschnittliche Temperatur am Standort des Geschäfts am Bestelldatumhumidity
: die durchschnittliche Luftfeuchtigkeit am Standort des Geschäfts am Bestelldatum
So erstellen Sie die Tabelle mit den Eingabedaten:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Fügen Sie die folgende Abfrage in den Abfrageeditor ein und klicken Sie auf Ausführen:
CREATE OR REPLACE TABLE `bqml_tutorial.iowa_liquor_sales_with_weather` AS WITH sales AS ( SELECT DATE, store_number, item_number, bottles_sold, SAFE_CAST(SAFE_CAST(zip_code AS FLOAT64) AS INT64) AS zip_code FROM `bigquery-public-data.iowa_liquor_sales.sales` AS sales WHERE SAFE_CAST(zip_code AS FLOAT64) IS NOT NULL ), aggregated_sales AS ( SELECT DATE, store_number, item_number, ANY_VALUE(zip_code) AS zip_code, SUM(bottles_sold) AS bottles_sold, FROM sales GROUP BY DATE, store_number, item_number ), weather AS ( SELECT DATE, SAFE_CAST(postal_code AS INT64) AS zip_code, avg_temperature_air_2m_f AS temperature, avg_humidity_specific_2m_gpkg AS humidity, FROM `bigquery-public-data.covid19_weathersource_com.postal_code_day_history` WHERE SAFE_CAST(postal_code AS INT64) IS NOT NULL ), avg_weather AS ( SELECT DATE, zip_code, AVG(temperature) AS temperature, AVG(humidity) AS humidity, FROM weather GROUP BY DATE, zip_code ) SELECT aggregated_sales.date, aggregated_sales.store_number, aggregated_sales.item_number, aggregated_sales.bottles_sold, avg_weather.temperature AS temperature, avg_weather.humidity AS humidity FROM aggregated_sales LEFT JOIN avg_weather ON aggregated_sales.zip_code=avg_weather.zip_code AND aggregated_sales.DATE=avg_weather.DATE;
Zeitreihenmodell erstellen
Erstellen Sie ein Zeitreihenmodell, um die Anzahl der verkauften Flaschen für jede Kombination aus Geschäfts-ID und Artikel-ID für jedes Datum in der Tabelle bqml_tutorial.iowa_liquor_sales_with_weather
vor dem 1. September 2022 vorherzusagen. Verwenden Sie die durchschnittliche Temperatur und Luftfeuchtigkeit am jeweiligen Datum als Features, die bei der Vorhersage berücksichtigt werden sollen. In der Tabelle bqml_tutorial.iowa_liquor_sales_with_weather
gibt es etwa eine Million verschiedene Kombinationen aus Artikelnummer und Geschäftsnummer. Das bedeutet, dass eine Million verschiedener Zeitreihen prognostiziert werden müssen.
So erstellen Sie das Modell:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Fügen Sie die folgende Abfrage in den Abfrageeditor ein und klicken Sie auf Ausführen:
CREATE OR REPLACE MODEL `bqml_tutorial.multi_time_series_arimax_model` OPTIONS( model_type = 'ARIMA_PLUS_XREG', time_series_id_col = ['store_number', 'item_number'], time_series_data_col = 'bottles_sold', time_series_timestamp_col = 'date' ) AS SELECT * FROM `bqml_tutorial.iowa_liquor_sales_with_weather` WHERE DATE < DATE('2022-09-01');
Die Abfrage dauert etwa 38 Minuten. Anschließend wird das Modell
multi_time_series_arimax_model
im Bereich Explorer angezeigt. Da in der Abfrage eineCREATE MODEL
-Anweisung zum Erstellen eines Modells verwendet wird, werden keine Abfrageergebnisse angezeigt.
Mit dem Modell Daten prognostizieren
Mit der Funktion ML.FORECAST
können Sie zukünftige Zeitreihenwerte prognostizieren.
In der folgenden GoogleSQL-Abfrage gibt die Klausel STRUCT(5 AS horizon, 0.8 AS confidence_level)
an, dass mit der Abfrage fünf zukünftige Zeitpunkte prognostiziert und ein Prognoseintervall mit einer Konfidenzwahrscheinlichkeit von 80% generiert wird.
Die Datensignatur der Eingabedaten für die Funktion ML.FORECAST
stimmt mit der Datensignatur der Trainingsdaten überein, die Sie zum Erstellen des Modells verwendet haben. Die Spalte bottles_sold
ist nicht in der Eingabe enthalten, da es sich dabei um die Daten handelt, die das Modell vorhersagen soll.
So prognostizieren Sie Daten mit dem Modell:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Fügen Sie die folgende Abfrage in den Abfrageeditor ein und klicken Sie auf Ausführen:
SELECT * FROM ML.FORECAST ( model `bqml_tutorial.multi_time_series_arimax_model`, STRUCT (5 AS horizon, 0.8 AS confidence_level), ( SELECT * EXCEPT (bottles_sold) FROM `bqml_tutorial.iowa_liquor_sales_with_weather` WHERE DATE>=DATE('2022-09-01') ) );
Die Antwort sollte in etwa so aussehen:
Die Ausgabezeilen werden nach dem Wert
store_number
, dann nach dem Wertitem_ID
und dann in chronologischer Reihenfolge nach dem Spaltenwertforecast_timestamp
angeordnet. Bei der Zeitreihenprognose ist das Vorhersageintervall, das durch die Spaltenwerteprediction_interval_lower_bound
undprediction_interval_upper_bound
dargestellt wird, genauso wichtig wie der Spaltenwertforecast_value
. Der Wertforecast_value
ist der Mittelpunkt des Vorhersageintervalls. Das Vorhersageintervall hängt von den Spaltenwertenstandard_error
undconfidence_level
ab.Weitere Informationen zu den Ausgabespalten finden Sie unter
ML.FORECAST
.
Prognoseergebnisse erklären
Mit der Funktion ML.EXPLAIN_FORECAST
können Sie zusätzlich zu Prognosedaten auch Erklärbarkeitsmesswerte abrufen. Die Funktion ML.EXPLAIN_FORECAST
prognostiziert zukünftige Zeitreihenwerte und gibt auch alle einzelnen Komponenten der Zeitreihe zurück.
Ähnlich wie bei der Funktion ML.FORECAST
gibt die Klausel STRUCT(5 AS horizon, 0.8 AS confidence_level)
, die in der Funktion ML.EXPLAIN_FORECAST
verwendet wird, an, dass die Abfrage 30 zukünftige Zeitpunkte prognostiziert und ein Vorhersageintervall mit einer Konfidenz von 80% generiert.
Die Funktion ML.EXPLAIN_FORECAST
liefert sowohl Verlaufsdaten als auch Prognosedaten. Wenn Sie nur die Prognosedaten sehen möchten, fügen Sie der Abfrage die Option time_series_type
hinzu und geben Sie forecast
als Optionswert an.
So erklären Sie die Ergebnisse des Modells:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Fügen Sie die folgende Abfrage in den Abfrageeditor ein und klicken Sie auf Ausführen:
SELECT * FROM ML.EXPLAIN_FORECAST ( model `bqml_tutorial.multi_time_series_arimax_model`, STRUCT (5 AS horizon, 0.8 AS confidence_level), ( SELECT * EXCEPT (bottles_sold) FROM `bqml_tutorial.iowa_liquor_sales_with_weather` WHERE DATE >= DATE('2022-09-01') ) );
Die Antwort sollte in etwa so aussehen:
Die Ausgabezeilen sind nach dem Spaltenwert
time_series_timestamp
chronologisch sortiert.Weitere Informationen zu den Ausgabespalten finden Sie unter
ML.EXPLAIN_FORECAST
.
Genauigkeit der Prognosen bewerten
Bewerten Sie die Vorhersagegenauigkeit des Modells, indem Sie es mit Daten ausführen, mit denen es nicht trainiert wurde. Dazu können Sie die Funktion ML.EVALUATE
verwenden. Mit der ML.EVALUATE
-Funktion wird jede Zeitreihe unabhängig ausgewertet.
In der folgenden GoogleSQL-Abfrage enthält die zweite SELECT
-Anweisung die Daten mit den zukünftigen Features, die für die Prognose der zukünftigen Werte mit den tatsächlichen Daten verwendet werden.
So bewerten Sie die Genauigkeit des Modells:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Fügen Sie die folgende Abfrage in den Abfrageeditor ein und klicken Sie auf Ausführen:
SELECT * FROM ML.EVALUATE ( model `bqml_tutorial.multi_time_series_arimax_model`, ( SELECT * FROM `bqml_tutorial.iowa_liquor_sales_with_weather` WHERE DATE >= DATE('2022-09-01') ) );
Die Ergebnisse sollten in etwa so aussehen:
Weitere Informationen zu den Ausgabespalten finden Sie unter
ML.EVALUATE
.
Modell zur Erkennung von Anomalien verwenden
Mit der Funktion ML.DETECT_ANOMALIES
können Sie Anomalien in den Trainingsdaten erkennen.
In der folgenden Abfrage führt die STRUCT(0.95 AS anomaly_prob_threshold)
-Klausel dazu, dass die Funktion ML.DETECT_ANOMALIES
anormale Datenpunkte mit einem Konfidenzniveau von 95% identifiziert.
So erkennen Sie Anomalien in den Trainingsdaten:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Fügen Sie die folgende Abfrage in den Abfrageeditor ein und klicken Sie auf Ausführen:
SELECT * FROM ML.DETECT_ANOMALIES ( model `bqml_tutorial.multi_time_series_arimax_model`, STRUCT (0.95 AS anomaly_prob_threshold) );
Die Ergebnisse sollten in etwa so aussehen:
In der Spalte
anomaly_probability
in den Ergebnissen wird die Wahrscheinlichkeit angegeben, dass ein bestimmter Wert in der Spaltebottles_sold
anormal ist.Weitere Informationen zu den Ausgabespalten finden Sie unter
ML.DETECT_ANOMALIES
.
Anomalien in neuen Daten erkennen
Erkennen Sie Anomalien in den neuen Daten, indem Sie der Funktion ML.DETECT_ANOMALIES
Eingabedaten zur Verfügung stellen. Die neuen Daten müssen dieselbe Datensignatur wie die Trainingsdaten haben.
So erkennen Sie Anomalien in neuen Daten:
Öffnen Sie in der Google Cloud Console die Seite BigQuery.
Fügen Sie die folgende Abfrage in den Abfrageeditor ein und klicken Sie auf Ausführen:
SELECT * FROM ML.DETECT_ANOMALIES ( model `bqml_tutorial.multi_time_series_arimax_model`, STRUCT (0.95 AS anomaly_prob_threshold), ( SELECT * FROM `bqml_tutorial.iowa_liquor_sales_with_weather` WHERE DATE >= DATE('2022-09-01') ) );
Die Ergebnisse sollten in etwa so aussehen:
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
- Sie können das von Ihnen erstellte Projekt löschen.
- Sie können das Projekt aber auch behalten und das Dataset löschen.
Dataset löschen
Wenn Sie Ihr Projekt löschen, werden alle Datasets und Tabellen entfernt. Wenn Sie das Projekt wieder verwenden möchten, können Sie das in dieser Anleitung erstellte Dataset löschen:
Rufen Sie, falls erforderlich, die Seite „BigQuery“ in derGoogle Cloud -Konsole auf.
Wählen Sie im Navigationsbereich das Dataset bqml_tutorial aus, das Sie erstellt haben.
Klicken Sie rechts im Fenster auf Delete dataset (Dataset löschen). Dadurch werden das Dataset, die Tabelle und alle Daten gelöscht.
Bestätigen Sie im Dialogfeld Dataset löschen den Löschbefehl. Geben Sie dazu den Namen des Datasets (
bqml_tutorial
) ein und klicken Sie auf Löschen.
Projekt löschen
So löschen Sie das Projekt:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Nächste Schritte
- Informationen zum Erstellen einer Prognose für eine einzelne Zeitreihe mit einem univariaten Modell
- Mehrere Zeitreihen mit einem univariaten Modell prognostizieren
- Informationen zum Skalieren eines univariaten Modells bei der Prognose mehrerer Zeitreihen über viele Zeilen
- Hierarchische Prognosen für mehrere Zeitreihen mit einem univariaten Modell erstellen
- Eine Übersicht über BigQuery ML finden Sie unter Einführung in KI und ML in BigQuery.