Prognostizierte Werte für ein Zeitachsenmodell beschränken

In dieser Anleitung erfahren Sie, wie Sie mithilfe von Limits die prognostizierten Ergebnisse eingrenzen, die von einem Zeitachsenmodell zurückgegeben werden. In dieser Anleitung erstellen Sie zwei Zeitachsenmodelle, die dieselben Daten nutzen. Ein Modell verwendet Limits und ein Modell verwendet keine Limits. So können Sie die von den Modellen zurückgegebenen Ergebnisse vergleichen und den Unterschied verstehen, den die Angabe von Limits bewirkt.

Sie verwenden die new_york.citibike_trips-Daten zum Trainieren der Modelle in dieser Anleitung. Dieser Datensatz enthält Informationen zu Citi Bike-Fahrten in New York City.

Bevor Sie diese Anleitung durcharbeiten, sollten Sie mit den Prognosen für einzelne Zeitachsen vertraut sein. Eine Einführung in dieses Thema finden Sie in der Anleitung Prognosen für einzelne Zeitachsen für Google Analytics-Daten durchführen.

Erforderliche Berechtigungen

  • Sie benötigen die IAM-Berechtigung bigquery.datasets.create, um das Dataset zu erstellen.
  • Zum Erstellen der Verbindungsressource benötigen Sie die folgenden Berechtigungen:

    • bigquery.connections.create
    • bigquery.connections.get
  • Zum Erstellen des Modells benötigen Sie die folgenden Berechtigungen:

    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.connections.delegate
  • Zum Ausführen von Inferenzen benötigen Sie die folgenden Berechtigungen:

    • bigquery.models.getData
    • bigquery.jobs.create

Weitere Informationen zu IAM-Rollen und Berechtigungen in BigQuery finden Sie unter Einführung in IAM.

Lernziele

In dieser Anleitung verwenden Sie Folgendes:

  • Die CREATE MODEL-Anweisung zum Erstellen eines Zeitachsenmodells.
  • Die ML.FORECAST-Funktion zur Prognose der täglichen Gesamtbesuche.

Kosten

In dieser Anleitung werden kostenpflichtige Komponenten von Google Cloud verwendet, 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. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. BigQuery API aktivieren.

    Aktivieren Sie die API

  5. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  6. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  7. BigQuery API aktivieren.

    Aktivieren Sie die API

Dataset erstellen

Erstellen Sie ein BigQuery-Dataset, um Ihr ML-Modell zu speichern:

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

    Zur Seite „BigQuery“

  2. Klicken Sie im Bereich Explorer auf den Namen Ihres Projekts.

  3. Klicken Sie auf Aktionen ansehen > Dataset erstellen.

    Dataset erstellen

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

      Seite "Dataset erstellen"

Die zu prognostizierenden Zeitachsen visualisieren

Schauen Sie sich Ihre Eingabezeitachse genau an, bevor Sie das Modell erstellen.

In der folgenden Abfrage gibt die FROM bigquery-public-data.new_york.citibike_trips-Klausel an, dass Sie die Tabelle citibike_trips im Dataset new_york abfragen.

In der SELECT-Anweisung verwendet die Abfrage die EXTRACT-Funktion, um die Datumsinformationen aus der Spalte starttime zu extrahieren. Die Abfrage verwendet die COUNT(*)-Klausel, um die Gesamtzahl der Citi Bike-Touren pro Tag abzurufen.

#standardSQL
SELECT
   EXTRACT(DATE from starttime) AS date,
   COUNT(*) AS num_trips
FROM
  `bigquery-public-data`.new_york.citibike_trips
GROUP BY date

Die Abfrage führen Sie so aus:

  1. Klicken Sie in der Google Cloud Console auf Neue Abfrage erstellen.

  2. Geben Sie im Abfrageeditor die folgende GoogleSQL-Abfrage ein.

    #standardSQL
    SELECT
       EXTRACT(DATE from starttime) AS date,
       COUNT(*) AS num_trips
    FROM
      `bigquery-public-data`.new_york.citibike_trips
    GROUP BY date
    
  3. Klicken Sie auf Ausführen. Die Abfrageergebnisse sehen in etwa so aus:

    Screenshot: Ausgabe der Abfrage

  4. Verwenden Sie die Google Cloud Console, um die Zeitachsendaten grafisch darzustellen. Klicken Sie im Bereich Abfrageergebnisse auf den Tab Diagramm. Wählen Sie im Bereich Diagrammkonfiguration für Diagrammtyp die Option Balkendiagramm aus:

    Screenshot: Ergebnisvisualisierung

Zeitachsenmodell erstellen

Erstellen Sie ein Zeitachsenmodell mit den Daten der NYC Citi Bike-Fahrten.

Die folgende GoogleSQL-Abfrage erstellt ein Modell, das die täglichen Gesamtreisen prognostiziert. Die CREATE MODEL-Anweisung erstellt und trainiert ein Modell mit dem Namen bqml_tutorial.nyc_citibike_arima_model.

#standardSQL
CREATE OR REPLACE MODEL bqml_tutorial.nyc_citibike_arima_model
OPTIONS
  (model_type = 'ARIMA_PLUS',
   time_series_timestamp_col = 'date',
   time_series_data_col = 'num_trips'
  ) AS
SELECT
   EXTRACT(DATE from starttime) AS date,
   COUNT(*) AS num_trips
FROM
  `bigquery-public-data`.new_york.citibike_trips
WHERE starttime > '2014-07-11' AND starttime < '2015-02-11'
GROUP BY date

Die OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...)-Anweisung gibt an, dass Sie ein ARIMA-basiertes Zeitachsenmodell erstellen. Standardmäßig wird auto_arima=TRUE verwendet, sodass der auto.ARIMA-Algorithmus die Hyperparameter in ARIMA_PLUS-Modellen automatisch abstimmt. Der Algorithmus passt Dutzende von Kandidatenmodellen an und wählt das beste Modell mit dem niedrigsten Akaike-Informationskriterium (AIC) aus. Da der Standardwert data_frequency='AUTO_FREQUENCY' ist, leitet der Trainingsprozess außerdem automatisch die Datenhäufigkeit der Eingabezeitachse ab. Schließlich verwendet die CREATE MODEL-Anweisung standardmäßig decompose_time_series=TRUE, sodass sowohl der Verlauf als auch die Prognoseteile der Zeitachse im Modell gespeichert werden. Anhand dieser Informationen können Sie die Prognose der Zeitachsen besser verstehen, indem Sie die separaten Zeitachsenkomponenten wie beispielsweise saisonale Zeiträume abrufen.

Führen Sie die CREATE MODEL-Abfrage aus, um Ihr Modell zu erstellen und zu trainieren:

  1. Klicken Sie in der Google Cloud Console auf Neue Abfrage erstellen.

  2. Geben Sie im Abfrageeditor die folgende GoogleSQL-Abfrage ein.

    #standardSQL
    CREATE OR REPLACE MODEL `bqml_tutorial.nyc_citibike_arima_model`
    OPTIONS
      (model_type = 'ARIMA_PLUS',
       time_series_timestamp_col = 'date',
       time_series_data_col = 'num_trips'
      ) AS
    SELECT
       EXTRACT(DATE from starttime) AS date,
       COUNT(*) AS num_trips
    FROM
      `bigquery-public-data`.new_york.citibike_trips
    WHERE starttime > '2014-07-11' AND starttime < '2015-02-11'
    GROUP BY date
    
  3. Klicken Sie auf Ausführen.

    Die Abfrage dauert ungefähr 17 Sekunden. Anschließend wird das Modell (nyc_citibike_arima_model) im Bereich Explorer angezeigt. Da die Abfrage eine CREATE MODEL-Anweisung zum Erstellen eines Modells verwendet, gibt es keine Abfrageergebnisse.

Zeitachsen prognostizieren und die Ergebnisse visualisieren

Sie können erklären, wie die Zeitreihe prognostiziert wird, indem Sie alle Teilzeitkomponenten-Komponenten wie Saisonalität und Trend mithilfe der Funktion ML.FORECAST visualisieren.

Gehen Sie hierzu folgendermaßen vor:

  1. Klicken Sie in der Google Cloud Console auf Neue Abfrage erstellen.

  2. Geben Sie im Abfrageeditor die folgende GoogleSQL-Abfrage ein.

    #standardSQL
      SELECT
      forecast_timestamp AS forecast_timestamp,
      history_value AS history_value,
      forecast_value AS forecast_value
      FROM ( (
         SELECT
            DATE(forecast_timestamp) AS forecast_timestamp,
            NULL AS history_value,
            forecast_value AS forecast_value
         FROM
            ML.FORECAST(MODEL bqml_tutorial.`nyc_citibike_arima_model`,
            STRUCT(365 AS horizon,
               0.9 AS confidence_level)) )
      UNION ALL (
         SELECT
            DATE(date_name) AS forecast_timestamp,
            num_trips AS history_value,
            NULL AS forecast_value
         FROM (
            SELECT
            EXTRACT(DATE
            FROM
               starttime) AS date_name,
            COUNT(*) AS num_trips
            FROM
            `bigquery-public-data`.new_york.citibike_trips
            WHERE
            starttime > '2014-07-11'
            AND starttime < '2015-02-11'
            GROUP BY
            date_name ) ))
      ORDER BY
      forecast_timestamp
    
  3. Klicken Sie auf Ausführen. Die Abfrageergebnisse sehen in etwa so aus:

    Diagramm: BQUI_chart.

  4. Verwenden Sie die Google Cloud Console, um die Zeitachsendaten grafisch darzustellen. Klicken Sie im Bereich Abfrageergebnisse auf den Tab Diagramm:

    Screenshot: Ergebnisvisualisierung

Das Diagramm zeigt, dass die prognostizierten Werte für die tägliche Gesamtzahl der Citi Bike-Fahrten negativ sind. Dies ist nicht hilfreich. Durch die Verwendung eines Modells mit Limits werden die prognostizierten Daten stattdessen verbessert.

Zeitachsenmodell mit Limits erstellen

Mit den Daten von NYC Citi Bike-Fahrten ein Zeitachsenmodell mit Limits erstellen.

Die folgende GoogleSQL-Abfrage erstellt ein Modell, das die täglichen Gesamtreisen prognostiziert. Die CREATE MODEL-Anweisung erstellt und trainiert ein Modell mit dem Namen bqml_tutorial.nyc_citibike_arima_model_with_limits. Der einzige Unterschied zwischen diesem und dem zuvor erstellten Modell ist die Ergänzung der Option forecast_limit_lower_bound=0. Mit dieser Option prognostiziert das Modell nur Werte größer als 0.

#standardSQL
CREATE OR REPLACE MODEL `bqml_tutorial.nyc_citibike_arima_model_with_limits`
OPTIONS
  (model_type = 'ARIMA_PLUS',
   time_series_timestamp_col = 'date',
   time_series_data_col = 'num_trips',
   forecast_limit_lower_bound = 0
  ) AS
SELECT
   EXTRACT(DATE from starttime) AS date,
   COUNT(*) AS num_trips
FROM
  `bigquery-public-data`.new_york.citibike_trips
WHERE starttime > '2014-07-11' AND starttime < '2015-02-11'
GROUP BY date

Führen Sie die CREATE MODEL-Abfrage aus, um Ihr Modell zu erstellen und zu trainieren:

  1. Klicken Sie in der Google Cloud Console auf Neue Abfrage erstellen.

  2. Geben Sie im Abfrageeditor die folgende GoogleSQL-Abfrage ein.

    #standardSQL
    CREATE OR REPLACE MODEL `bqml_tutorial.nyc_citibike_arima_model_with_limits`
    OPTIONS
      (model_type = 'ARIMA_PLUS',
       time_series_timestamp_col = 'date',
       time_series_data_col = 'num_trips',
       forecast_limit_lower_bound = 0
      ) AS
    SELECT
       EXTRACT(DATE from starttime) AS date,
       COUNT(*) AS num_trips
    FROM
      `bigquery-public-data`.new_york.citibike_trips
     WHERE starttime > '2014-07-11' AND starttime < '2015-02-11'
    GROUP BY date
    
  3. Klicken Sie auf Ausführen.

    Die Abfrage dauert ungefähr 17 Sekunden. Anschließend wird das Modell (nyc_citibike_arima_model_with_limits) im Bereich Explorer angezeigt. Da die Abfrage eine CREATE MODEL-Anweisung zum Erstellen eines Modells verwendet, gibt es keine Abfrageergebnisse.

Zeitachsen mithilfe des Modells mit Limits prognostizieren

  1. Klicken Sie in der Google Cloud Console auf Neue Abfrage erstellen.

  2. Geben Sie im Abfrageeditor die folgende GoogleSQL-Abfrage ein.

    #standardSQL
      SELECT
      forecast_timestamp AS forecast_timestamp,
      history_value AS history_value,
      forecast_value AS forecast_value
      FROM ( (
         SELECT
            DATE(forecast_timestamp) AS forecast_timestamp,
            NULL AS history_value,
            forecast_value AS forecast_value
         FROM
            ML.FORECAST(MODEL `bqml_tutorial.nyc_citibike_arima_model_with_limits`,
            STRUCT(365 AS horizon,
               0.9 AS confidence_level)) )
      UNION ALL (
         SELECT
            DATE(date_name) AS forecast_timestamp,
            num_trips AS history_value,
            NULL AS forecast_value
         FROM (
            SELECT
            EXTRACT(DATE
            FROM
               starttime) AS date_name,
            COUNT(*) AS num_trips
            FROM
            `bigquery-public-data`.new_york.citibike_trips
            WHERE
            starttime > '2014-07-11'
            AND starttime < '2015-02-11'
            GROUP BY
            date_name ) ))
      ORDER BY
      forecast_timestamp
    
  3. Klicken Sie auf Ausführen.

    Diagramm: BQUI_chart.

  4. Verwenden Sie die Google Cloud Console, um die Zeitachsendaten grafisch darzustellen. Klicken Sie im Bereich Abfrageergebnisse auf den Tab Diagramm:

    Screenshot: Ergebnisvisualisierung

Das ARIMA PLUS-Modell erkennt, dass die Gesamtzahl der Citi Bike-Touren pro Tag sinkt. Zukünftige Prognosewerte folgen diesem Trend und geben relativ kleinere Prognosezahlen in der Zukunft an. Das Diagramm zeigt, dass die prognostizierten Werte für die Gesamtzahl der Citi Bike-Touren positiv sind. Dies ist nützlicher. Das Modell mit Limits erkennt, dass die tägliche Gesamtzahl der Citi Bike-Fahrten abnimmt, aber weiterhin aussagekräftige Prognosewerte liefert.

Wie in dieser Anleitung gezeigt, können Sie mit den Optionen forecast_limit_lower_bound und forecast_limit_upper_bound aussagekräftigere Prognosewerte als in diesem Beispiel abrufen, z. B. bei der Prognose von Aktienkursen oder zukünftigen Verkaufszahlen.

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:

  1. Rufen Sie, falls erforderlich, die Seite "BigQuery" in der Google Cloud Console auf.

    Zur Seite "BigQuery"

  2. Wählen Sie im Navigationsbereich das Dataset bqml_tutorial aus, das Sie erstellt haben.

  3. Klicken Sie rechts im Fenster auf Dataset löschen. Dadurch werden das Dataset, die Tabelle und alle Daten gelöscht.

  4. 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:

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Nächste Schritte