In dieser Anleitung erfahren Sie, wie Sie die AI.FORECAST
-Funktion mit dem integrierten univariaten TimesFM-Modell von BigQuery ML verwenden, um den zukünftigen Wert für eine bestimmte Spalte auf Grundlage des historischen Werts dieser Spalte zu prognostizieren.
In dieser Anleitung werden Daten aus der öffentlichen Tabelle bigquery-public-data.san_francisco_bikeshare.bikeshare_trips
verwendet.
Prognose für eine einzelne Zeitreihe für Fahrten mit Leihfahrrädern erstellen
Mit der Funktion AI.FORECAST
können Sie zukünftige Zeitachsenwerte prognostizieren.
Mit der folgenden Abfrage wird die Anzahl der Fahrten mit Leihfahrrädern pro Stunde für den nächsten Monat (ca. 720 Stunden) auf Grundlage der Verlaufsdaten der letzten vier Monate prognostiziert. Das Argument confidence_level
gibt an, dass die Abfrage ein Vorhersageintervall mit einem Konfidenzniveau von 95% generiert.
So prognostizieren Sie Daten mit dem TimesFM-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 AI.FORECAST( ( SELECT TIMESTAMP_TRUNC(start_date, HOUR) as trip_hour, COUNT(*) as num_trips FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips` WHERE subscriber_type = 'Subscriber' AND start_date >= TIMESTAMP('2018-01-01') GROUP BY TIMESTAMP_TRUNC(start_date, HOUR) ), horizon => 720, confidence_level => 0.95, timestamp_col => 'trip_hour', data_col => 'num_trips');
Die Ergebnisse sehen in etwa so aus:
+-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+ | forecast_timestamp | forecast_value | confidence_level | prediction_interval_lower_bound | prediction_interval_upper_bound | ai_forecast_status | +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+ | 2018-05-01 00:00:00 UTC | 26.3045959... | 0.95 | 21.7088378... | 30.9003540... | | +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+ | 2018-05-01 01:00:00 UTC | 34.0890502... | 0.95 | 2.47682913... | 65.7012714... | | +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+ | 2018-05-01 02:00:00 UTC | 24.2154693... | 0.95 | 2.87621605... | 45.5547226... | | +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+ | ... | ... | ... | ... | ... | | +-------------------------+-------------------+------------------+---------------------------------+---------------------------------+--------------------+
Prognostizierte Daten mit Eingabedaten vergleichen
Stellen Sie die Ausgabe der Funktion AI.FORECAST
zusammen mit einer Teilmenge der Eingabedaten der Funktion in einem Diagramm dar, um zu sehen, wie sie sich vergleichen.
So stellen Sie die Funktionsausgabe in einem Diagramm dar:
Ö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:
WITH historical AS ( SELECT TIMESTAMP_TRUNC(start_date, HOUR) as trip_hour, COUNT(*) as num_trips FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips` WHERE subscriber_type = 'Subscriber' AND start_date >= TIMESTAMP('2018-01-01') GROUP BY TIMESTAMP_TRUNC(start_date, HOUR) ORDER BY TIMESTAMP_TRUNC(start_date, HOUR) ) SELECT * FROM ( (SELECT trip_hour as date, num_trips AS historical_value, NULL as forecast_value, 'historical' as type, NULL as prediction_interval_lower_bound, NULL as prediction_interval_upper_bound FROM historical ORDER BY historical.trip_hour DESC LIMIT 400) UNION ALL (SELECT forecast_timestamp AS date, NULL as historical_value, forecast_value as forecast_value, 'forecast' as type, prediction_interval_lower_bound, prediction_interval_upper_bound FROM AI.FORECAST( ( SELECT * FROM historical ), horizon => 720, confidence_level => 0.99, timestamp_col => 'trip_hour', data_col => 'num_trips'))) ORDER BY date asc;
Wenn die Abfrage abgeschlossen ist, klicken Sie im Bereich Abfrageergebnisse auf den Tab Visualisierung. Das resultierende Diagramm sieht etwa so aus:
Die Eingabedaten und die prognostizierten Daten zeigen eine ähnliche Nutzung des Bikesharing. Außerdem sehen Sie, dass die Unter- und Obergrenze des Vorhersageintervalls mit zunehmender Entfernung der prognostizierten Zeitpunkte in der Zukunft steigen.
Prognosen für mehrere Zeitreihen von Bike-Sharing-Fahrten
Mit der folgenden Abfrage wird die Anzahl der Fahrten mit Leihfahrrädern pro Abonnententyp und Stunde für den nächsten Monat (ca. 720 Stunden) auf Grundlage der historischen Daten der letzten vier Monate prognostiziert. Das Argument confidence_level
gibt an, dass die Abfrage ein Vorhersageintervall mit einem Konfidenzniveau von 95% generiert.
So prognostizieren Sie Daten mit dem TimesFM-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 AI.FORECAST( ( SELECT TIMESTAMP_TRUNC(start_date, HOUR) as trip_hour, subscriber_type, COUNT(*) as num_trips FROM `bigquery-public-data.san_francisco_bikeshare.bikeshare_trips` WHERE start_date >= TIMESTAMP('2018-01-01') GROUP BY TIMESTAMP_TRUNC(start_date, HOUR), subscriber_type ), horizon => 720, confidence_level => 0.95, timestamp_col => 'trip_hour', data_col => 'num_trips', id_cols => ['subscriber_type']);
Die Ergebnisse sehen in etwa so aus:
+---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+ | subscriber_type | forecast_timestamp | forecast_value | confidence_level | prediction_interval_lower_bound | prediction_interval_upper_bound | ai_forecast_status | +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+ | Subscriber | 2018-05-01 00:00:00 UTC | 26.3045959... | 0.95 | 21.7088378... | 30.9003540... | | +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+ | Subscriber | 2018-05-01 01:00:00 UTC | 34.0890502... | 0.95 | 2.47682913... | 65.7012714... | | +---------------------+-------------------+------------------+-------------------------+---------------------------------+---------------------------------+--------------------+ | Subscriber | 2018-05-01 02:00:00 UTC | 24.2154693... | 0.95 | 2.87621605... | 45.5547226... | | +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+ | ... | ... | ... | ... | ... | ... | | +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+