In dieser Anleitung erfahren Sie, wie Sie mithilfe der AI.FORECAST-Funktion mit dem in BigQuery ML integrierten TimesFM 3.0-Modell multivariate Prognosen für mehrere Zeitreihen erstellen. Mit multivariaten Prognosen lässt sich die Genauigkeit von Vorhersagen verbessern, indem andere Variablen (Kovariaten) berücksichtigt werden, die sich auf das Ziel auswirken.
Wenn Sie Spalten mit Kennungen angeben, können Sie gleichzeitig Prognosen für mehrere unterschiedliche Einheiten erstellen. In diesem Tutorial wird gezeigt, wie Sie Taxifahrten und Fahrpreise in New York für verschiedene Abholzonen vorhersagen können, indem Sie historische Daten zur Fahrstrecke als vergangene Kovariate einbeziehen.
Ziele
- Einheitliches Dataset für mehrere Zeitreihen vorbereiten
- Vorhersagen für New Yorker Taxidaten mit der Funktion
AI.FORECASTund dem ModellTimesFM 3.0generieren
Kosten
In dieser Anleitung werden kostenpflichtige Komponenten von Google Cloudverwendet, darunter:
- BigQuery
- BigQuery ML
Weitere Informationen finden Sie unter BigQuery-Preise und Preise für BigQuery ML.
Hinweis
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Aktivieren Sie die BigQuery API, falls sie noch nicht aktiviert ist.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von RollenBei neuen Projekten ist die BigQuery API automatisch aktiviert.
Erforderliche Rollen
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Ausführen der Aufgaben in dieser Anleitung benötigen:
-
Dataset erstellen:
BigQuery-Dateneditor (
roles/bigquery.dataEditor) -
Modell erstellen:
- BigQuery Data Editor (
roles/bigquery.dataEditor) - BigQuery Job User (
roles/bigquery.jobUser)
- BigQuery Data Editor (
-
Inferenz ausführen:
- BigQuery Data Editor (
roles/bigquery.dataEditor) - BigQuery Job User (
roles/bigquery.jobUser)
- BigQuery Data Editor (
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Ausführen der Aufgaben in diesem Dokument erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind zum Ausführen der Aufgaben in dieser Anleitung erforderlich:
-
Dataset erstellen:
bigquery.datasets.create -
Modell erstellen:
-
bigquery.jobs.create -
bigquery.models.create -
bigquery.models.getData -
bigquery.models.updateData
-
-
Inferenz ausführen:
-
bigquery.models.getData -
bigquery.jobs.create
-
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Einführung in IAM.Eingabedaten vorbereiten
Im Gegensatz zu anderen multivariaten Modellen, für die möglicherweise separate Tabellen für historische und zukünftige Kovariaten erforderlich sind, wird für die Funktion AI.FORECAST mit TimesFM 3.0 eine einzelne Eingabetabelle oder ‑abfrage erwartet.
Für eine Prognose mit mehreren Zeitreihen müssen Ihre Daten eine oder mehrere Spalten mit Kennzeichnungen enthalten, um die Daten in separate Zeitreihen aufzuteilen. In diesem Beispiel enthält eine Zeitreihe Daten für den Abholort 132 (JFK Airport) und die andere Zeitreihe Daten für den Abholort 138 (LaGuardia Airport). Ihre Daten müssen die folgenden Anforderungen für jede einzelne Zeitreihe erfüllen:
- Verlaufszeilen: enthalten Werte ungleich null für Zeitstempel, Zielvorhaben und vergangene Kovariaten.
Da in diesem Beispiel keine zukünftigen Kovariaten verwendet werden, müssen in der Eingabeabfrage nur Verlaufsdaten angegeben werden. Ihre Eingabetabelle muss Spalten mit den folgenden Daten enthalten:
- Das Datum der Taxifahrt.
- Der Abholort: entweder 132 oder 138.
- Die Anzahl der Fahrten an diesem Datum. Dies ist eine Zielspalte.
- Der durchschnittliche Fahrpreis an diesem Datum. Dies ist eine Zielspalte.
- Die durchschnittliche Entfernung von Fahrten an diesem Datum. Dies ist eine Spalte mit einem vergangenen Kovariatenwert, der in der Prognose verwendet wird.
Prognose für die mehreren multivariaten Zeitreihen erstellen
Mit der folgenden Abfrage wird die Anzahl der Fahrten und der durchschnittliche Fahrpreis pro Tag für die nächsten 14 Tage für die Abholzonen JFK und LaGuardia prognostiziert. Darin wird past_cov_avg_distance als Funktion definiert, die nur historisch bekannt ist. Sie müssen das id_cols-Argument angeben, damit das Modell weiß, wie die verschiedenen Zeitreihen getrennt werden.
So prognostizieren Sie Daten mit dem TimesFM 3.0-Modell:
Rufen Sie in der Google Cloud Console die Seite BigQuery auf.
Fügen Sie die folgende Abfrage in den Abfrageeditor ein und klicken Sie auf Ausführen:
SELECT pickup_location_id, FORMAT_DATE("%Y-%m-%d", pickup_date) AS pickup_date, # Extract the forecast value and prediction intervals for the number of trips target target_num_trips.value AS forecasted_num_trips, target_num_trips.prediction_interval_lower_bound AS num_trips_lower, target_num_trips.prediction_interval_upper_bound AS num_trips_upper, # Extract the forecast value and prediction intervals for the average fare target target_avg_fare.value AS forecasted_avg_fare, target_avg_fare.prediction_interval_lower_bound AS avg_fare_lower, target_avg_fare.prediction_interval_upper_bound AS avg_fare_upper FROM AI.FORECAST( ( SELECT DATE(pickup_datetime) AS pickup_date, pickup_location_id, COUNT(*) AS target_num_trips, AVG(fare_amount) AS target_avg_fare, AVG(trip_distance) AS past_cov_avg_distance FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2022` WHERE pickup_datetime >= "2022-01-01" AND pickup_datetime < "2022-04-01" AND pickup_location_id IN ("132", "138") -- JFK and LaGuardia Airports GROUP BY 1, 2 ), model => "TimesFM 3.0", target_cols => ["target_num_trips", "target_avg_fare"], past_covariate_cols => ["past_cov_avg_distance"], timestamp_col => "pickup_date", id_cols => ["pickup_location_id"], horizon => 14 ) ORDER BY pickup_date;
Das Ergebnis sieht etwa so aus, wobei die Werte zur besseren Übersicht gerundet wurden:
+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+
| pickup_location_id | pickup_date | forecasted_num_trips | num_trips_lower | num_trips_upper | forecasted_avg_fare | avg_fare_lower | avg_fare_upper |
+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+
| 132 | 2022-04-01 | 5240 | 4633 | 5842 | 47 | 46 | 48 |
| 138 | 2022-04-01 | 3451 | 2848 | 4008 | 32 | 31 | 34 |
| ... | ... | ... | ... | ... | ... | ... | ... |
+--------------------+-------------+----------------------+-----------------+-----------------+---------------------+----------------+----------------+
Die Ergebnisse zeigen die prognostizierte Anzahl der Fahrten und den durchschnittlichen Fahrpreis für die nächsten 14 Tage in den Abholzonen JFK und LaGuardia. Die Ergebnisse enthalten auch die Unter- und Obergrenze für ein 95‑%‑Vorhersageintervall für jeden prognostizierten Wert.
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.
Projekt löschen
- Wechseln Sie in der Google Cloud -Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.