Hierarchische Zeitreihen mit einem univariaten Modell prognostizieren

In dieser Anleitung erfahren Sie, wie Sie mit einem univariaten Zeitreihenmodell hierarchische Zeitreihen prognostizieren. Dabei wird der zukünftige Wert für eine bestimmte Spalte basierend auf den bisherigen Werten dieser Spalte vorhergesagt. Außerdem werden für diese Spalte zusammengefasste Werte für eine oder mehrere relevante Dimensionen berechnet.

Die prognostizierten Werte werden für jeden Zeitpunkt und für jeden Wert in einer oder mehreren Spalten berechnet, in denen die gewünschten Dimensionen angegeben sind. Wenn Sie beispielsweise tägliche Verkehrsbehinderungen prognostizieren möchten und eine Dimensionsspalte mit Daten zu Bundesländern angeben, enthalten die prognostizierten Daten Werte für jeden Tag für Bundesland A, dann Werte für jeden Tag für Bundesland B usw. Wenn Sie tägliche Verkehrsbehinderungen vorhersagen und Dimensionsspalten mit Daten zu Bundesstaaten und Städten angeben möchten, enthalten die prognostizierten Daten Werte für jeden Tag für Bundesstaat A und Stadt A, dann Werte für jeden Tag für Bundesstaat A und Stadt B usw. In hierarchischen Zeitreihenmodellen wird die hierarchische Abstimmung verwendet, um jede untergeordnete Zeitreihe mit ihrer übergeordneten Zeitreihe zusammenzuführen und abzugleichen. Die Summe der prognostizierten Werte für alle Städte in Bundesland A muss beispielsweise dem prognostizierten Wert für Bundesland A entsprechen.

In dieser Anleitung erstellen Sie zwei Zeitreihenmodelle, die dieselben Daten nutzen. Ein Modell verwendet hierarchische Prognosen und ein Modell verwendet keine. So können Sie die von den Modellen zurückgegebenen Ergebnisse vergleichen.

In dieser Anleitung werden Daten aus der öffentlichen Tabelle bigquery-public-data.iowa_liquor.sales.sales verwendet. Diese Tabelle enthält Informationen zu über einer Million Spirituosenprodukten in verschiedenen Geschäften anhand der öffentlichen Verkaufsdaten für Spirituosen in Iowa.

Bevor Sie diese Anleitung lesen, sollten Sie unbedingt Prognosen für mehrere Zeitreihen mit einem univariaten Modell erstellen lesen.

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.

Ziele

In dieser Anleitung verwenden Sie Folgendes:

  • Mit der CREATE MODEL-Anweisung ein Modell mit mehreren Zeitreihen und ein hierarchisches Modell mit mehreren Zeitreihen erstellen, um Werte für Flaschenverkäufe vorherzusagen
  • Die prognostizierten Werte für Flaschenverkäufe werden mithilfe der Funktion ML.FORECAST aus den Modellen abgerufen.

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.

  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. Zum Aktivieren von BigQuery in einem vorhandenen Projekt wechseln Sie zu

    Enable the BigQuery API.

    Enable the 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"

Zeitachsenmodell erstellen

Erstellen Sie ein Zeitreihenmodell mit den Daten zum Alkoholverkauf in Iowa.

Mit der folgenden GoogleSQL-Abfrage wird ein Modell erstellt, das die tägliche Gesamtzahl der im Jahr 2015 in Polk, Linn und Scott-Landkreisen verkauften Flaschen prognostiziert.

In der folgenden Abfrage gibt die OPTIONS(model_type='ARIMA_PLUS', time_series_timestamp_col='date', ...)-Klausel an, dass Sie ein ARIMA-basiertes Zeitreihenmodell erstellen. Mit der Option TIME_SERIES_ID der CREATE MODEL-Anweisung können Sie eine oder mehrere Spalten in den Eingabedaten angeben, für die Sie Prognosen erhalten möchten. Die Option auto_arima_max_order der CREATE MODEL-Anweisung steuert den Suchbereich für die Hyperparameter-Abstimmung im auto.ARIMA-Algorithmus. Die Option decompose_time_series der CREATE MODEL-Anweisung ist standardmäßig auf TRUE festgelegt, damit beim Bewerten des Modells im nächsten Schritt Informationen zu den Zeitreihendaten zurückgegeben werden.

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. Durch Festlegen der Option holiday_region auf US wird eine genauere Modellierung der Feiertagszeitpunkte in den USA ermöglicht, wenn in der Zeitachse Feiertagsmuster der USA vorhanden sind.

So erstellen Sie das Modell:

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Fügen Sie die folgende Abfrage in den Abfrageeditor ein und klicken Sie auf Ausführen:

    CREATE OR REPLACE MODEL `bqml_tutorial.liquor_forecast`
      OPTIONS (
        MODEL_TYPE = 'ARIMA_PLUS',
        TIME_SERIES_TIMESTAMP_COL = 'date',
        TIME_SERIES_DATA_COL = 'total_bottles_sold',
        TIME_SERIES_ID_COL = ['store_number', 'zip_code', 'city', 'county'],
        HOLIDAY_REGION = 'US')
    AS
    SELECT
      store_number,
      zip_code,
      city,
      county,
      date,
      SUM(bottles_sold) AS total_bottles_sold
    FROM
      `bigquery-public-data.iowa_liquor_sales.sales`
    WHERE
      date BETWEEN DATE('2015-01-01') AND DATE('2015-12-31')
      AND county IN ('POLK', 'LINN', 'SCOTT')
    GROUP BY store_number, date, city, zip_code, county;

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

Mit dem Modell Daten prognostizieren

Mit der Funktion ML.FORECAST können Sie zukünftige Zeitreihenwerte prognostizieren.

In der folgenden Abfrage gibt die STRUCT(20 AS horizon, 0.8 AS confidence_level)-Klausel an, dass die Abfrage 20 zukünftige Zeitpunkte prognostiziert und ein Vorhersageintervall mit einem Konfidenzniveau von 80% generiert.

So prognostizieren Sie Daten mit dem Modell:

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Fügen Sie die folgende Abfrage in den Abfrageeditor ein und klicken Sie auf Ausführen:

    SELECT *
    FROM
      ML.FORECAST(
        MODEL `bqml_tutorial.liquor_forecast`,
        STRUCT(20 AS horizon, 0.8 AS confidence_level))
    ORDER BY store_number, county, city, zip_code, forecast_timestamp;

    Die Antwort sollte in etwa so aussehen:

    Mehrere Zeitreihen mit einem univariaten Modell

    Die Ausgabe beginnt mit den prognostizierten Daten für die erste Zeitreihe: store_number=2190, zip_code=50314, city=DES MOINES, county=POLK. Wenn Sie durch die Daten scrollen, sehen Sie die Prognosen für jede nachfolgende eindeutige Zeitreihe. Wenn Sie Prognosen generieren möchten, die Gesamtwerte für verschiedene Dimensionen aggregieren, z. B. Prognosen für ein bestimmtes Bundesland, müssen Sie eine hierarchische Prognose generieren.

Hierarchisches Zeitreihenmodell erstellen

Erstellen Sie eine hierarchische Zeitreihenprognose mit den Daten zum Alkoholabsatz in Iowa.

Mit der folgenden GoogleSQL-Abfrage wird ein Modell erstellt, das hierarchische Prognosen für die tägliche Gesamtzahl der im Jahr 2015 in Polk, Linn und Scott-Landkreisen verkauften Flaschen generiert.

In der folgenden Abfrage gibt die Option HIERARCHICAL_TIME_SERIES_COLS in der CREATE MODEL-Anweisung an, dass Sie eine hierarchische Prognose auf der Grundlage einer von Ihnen angegebenen Gruppe von Spalten erstellen. Jede dieser Spalten wird für die Aggregation zusammengeführt. In der vorherigen Abfrage bedeutet das beispielsweise, dass der Wert der Spalte store_number zusammengefasst wird, um Prognosen für jeden Wert von county, city und zip_code anzuzeigen. Getrennt voneinander werden auch zip_code und store_number zusammengefasst, um Prognosen für jede county und city anzuzeigen. Die Spaltenreihenfolge ist wichtig, da sie die Struktur der Hierarchie definiert.

So erstellen Sie das Modell:

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Fügen Sie die folgende Abfrage in den Abfrageeditor ein und klicken Sie auf Ausführen:

    CREATE OR REPLACE MODEL `bqml_tutorial.liquor_forecast_hierarchical`
      OPTIONS (
        MODEL_TYPE = 'ARIMA_PLUS',
        TIME_SERIES_TIMESTAMP_COL = 'date',
        TIME_SERIES_DATA_COL = 'total_bottles_sold',
        TIME_SERIES_ID_COL = ['store_number', 'zip_code', 'city', 'county'],
        HIERARCHICAL_TIME_SERIES_COLS = ['zip_code', 'store_number'],
        HOLIDAY_REGION = 'US')
    AS
    SELECT
      store_number,
      zip_code,
      city,
      county,
      date,
      SUM(bottles_sold) AS total_bottles_sold
    FROM
      `bigquery-public-data.iowa_liquor_sales.sales`
    WHERE
      date BETWEEN DATE('2015-01-01') AND DATE('2015-12-31')
      AND county IN ('POLK', 'LINN', 'SCOTT')
    GROUP BY store_number, date, city, zip_code, county;

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

Hierarchisches Modell für die Prognose von Daten verwenden

Hierarchische Prognosedaten mithilfe der Funktion ML.FORECAST aus dem Modell abrufen

So prognostizieren Sie Daten mit dem Modell:

  1. Öffnen Sie in der Google Cloud Console die Seite BigQuery.

    BigQuery aufrufen

  2. Fügen Sie die folgende Abfrage in den Abfrageeditor ein und klicken Sie auf Ausführen:

    SELECT
      *
    FROM
      ML.FORECAST(
        MODEL `bqml_tutorial.liquor_forecast_hierarchical`,
        STRUCT(30 AS horizon, 0.8 AS confidence_level))
    WHERE city = 'LECLAIRE'
    ORDER BY county, city, zip_code, store_number, forecast_timestamp;

    Die Antwort sollte in etwa so aussehen:

    Beispiel für eine hierarchische Zeitreihe.

    Beachten Sie, dass die zusammengefasste Vorhersage für die Stadt LeClaire, store_number=NULL, zip_code=NULL, city=LECLAIRE, county=SCOTT angezeigt wird. Sehen Sie sich die Prognosen für die anderen Untergruppen in den restlichen Zeilen an. Auf dem folgenden Bild sind beispielsweise die Prognosen für die Postleitzahlen 52753, store_number=NULL, zip_code=52753, city=LECLAIRE und county=SCOTT zusammengefasst:

    Beispiel für eine hierarchische Zeitreihe.

Bereinigen

Damit Ihrem Google Cloud -Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, können Sie entweder das Projekt löschen, das die Ressourcen enthält, oder das Projekt beibehalten und die einzelnen Ressourcen löschen.

  • 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:

  1. Rufen Sie, falls erforderlich, die Seite „BigQuery“ in derGoogle Cloud -Konsole 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 Delete dataset (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. 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