Prognosen für mehrere Zeitreihen mit einem univariaten TimesFM-Modell erstellen


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 vorherzusagen.

In dieser Anleitung werden Daten aus der öffentlichen Tabelle bigquery-public-data.san_francisco_bikeshare.bikeshare_trips verwendet.

Lernziele

In dieser Anleitung erfahren Sie, wie Sie die Funktion AI.FORECAST mit dem integrierten TimesFM-Modell verwenden, um Fahrten mit Leihfahrrädern vorherzusagen. In den ersten beiden Abschnitten wird beschrieben, wie Sie Ergebnisse für eine einzelne Zeitreihe prognostizieren und visualisieren. Im dritten Abschnitt wird beschrieben, wie Sie Prognosen für mehrere Zeitachsen erstellen.

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.

Hinweise

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. BigQuery ist in neuen Projekten automatisch aktiviert. So aktivieren Sie BigQuery in einem vorhandenen Projekt:

    Enable the BigQuery API.

    Enable the API

Prognose für eine einzelne Zeitreihe für Leihfahrradfahrten 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 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:

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. 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 sie zu vergleichen.

So stellen Sie die Funktionsausgabe in einem Diagramm dar:

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. 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_low,
        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;
  3. Wenn die Ausführung der Abfrage abgeschlossen ist, klicken Sie im Bereich Abfrageergebnisse auf den Tab Diagramm. Das resultierende Diagramm sieht etwa so aus:

    Stellen Sie 100 Zeitpunkte der Eingabedaten zusammen mit den Ausgabedaten der Funktion AI.FORECAST in einem Diagramm dar, um ihre Ähnlichkeit zu bewerten.

    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 ansteigen.

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:

  1. Rufen Sie in der Google Cloud Console die Seite BigQuery auf.

    BigQuery aufrufen

  2. 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...                   |                    |
    +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+
    | ...                 | ...                      |  ...             | ...              | ...                             |  ...                            |                    |
    +---------------------+--------------------------+------------------+------------------+---------------------------------+---------------------------------+--------------------+
    

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

So löschen Sie das Projekt:

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Nächste Schritte