Hierarchische Zeitachsenprognosen

In dieser Anleitung erfahren Sie, wie Sie eine hierarchische Zeitachse generieren. In dieser Anleitung erstellen Sie zwei Zeitachsenmodelle, die dieselben Daten nutzen, von denen eines die hierarchische Prognose verwendet und das andere nicht. So können Sie die von den Modellen zurückgegebenen Ergebnisse vergleichen.

Sie verwenden die iowa_liquor.sales.sales-Daten zum Trainieren der Modelle in dieser Anleitung. Dieses Dataset enthält Informationen zu über einer Million Spirituosenprodukte in verschiedenen Geschäften, die auf öffentlichen Verkaufsdaten für Spirituosen in Iowa basieren.

Bevor Sie diese Anleitung durcharbeiten, sollten Sie mit den Prognosen für mehrere Zeitachsen vertraut sein. Eine Einführung in dieses Thema finden Sie in der Anleitung Prognosen für mehrere 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.

Ziele

In dieser Anleitung verwenden Sie Folgendes:

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

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. 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. Enable the BigQuery API.

    Enable the API

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

    Go to project selector

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

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

Hierarchischer Abgleich

Zeitreihenprognosen können häufig nach verschiedenen relevanten Dimensionen aufgeschlüsselt oder aggregiert werden. Diese werden als hierarchische Zeitachsen bezeichnet. Zum Beispiel können Volkszählungsdaten, die die Gesamtbevölkerung pro Bundesstaat aufzeigen, nach Stadt und Postleitzahl aufschlüsseln. Umgekehrt können wir diese Daten für jedes Land oder jeden Kontinent zusammenfassen.

Es gibt verschiedene Methoden, mit denen Sie hierarchische Prognosen generieren und abgleichen können. Das folgende Beispiel zeigt eine vereinfachte hierarchische Struktur für den Alkoholabsatz im Bundesstaat Iowa:

Hierarchische Zeitachse.

Auf der untersten Ebene sehen Sie die Ebene des Geschäfts, gefolgt von der Postleitzahl, der Stadt, dem Landkreis und schließlich dem Bundesstaat. Das Ziel bei hierarchischen Prognosen besteht darin, dass sich alle Prognosen auf jeder Ebene übereinstimmen müssen. Angesichts der vorherigen Abbildung bedeutet das, dass die Prognosen für Clive und Des Moines zusammen der Prognose in Polk entsprechen müssen. Ebenso sollten die Prognosen für Polk, Linn und Scott zusammengenommen der Prognose für ganz Iowa entsprechen.

Es gibt mehrere gängige Techniken, mit denen Sie übereinstimmende Prognosen für jede Ebene generieren können. Eine Technik wird als von unten nach oben bezeichneter Ansatz bezeichnet. Bei diesem Ansatz werden die Prognosen zuerst auf der untersten Ebene der Hierarchie erstellt bevor die anderen Ebenen addiert werden. Im vorigen Beispiel werden die Prognosen für jedes Geschäft verwendet, um die Prognosemodelle für die anderen Ebenen zu erstellen (zuerst nach Postleitzahl, dann Stadt usw.).

Zeitachsenmodell erstellen

Erstellen Sie zuerst ein Zeitachsenmodell mit den Verkaufsdaten für Spirituosen in Iowa.

Mit der folgenden GoogleSQL-Abfrage wird ein Modell erstellt, mit dem die tägliche Gesamtzahl der im Jahr 2015 verkauften Flaschen in den Countys Polk, Linn und Scott prognostiziert wird. Die CREATE MODEL-Anweisung erstellt und trainiert ein Modell mit dem Namen bqml_tutorial.liquor_forecast.

#standardSQL
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 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.

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 Abfrage in BigQuery ausführen.

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

#standardSQL
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;
  1. Klicken Sie auf Ausführen.

    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.

Ergebnisse des Zeitachsenmodells prüfen

Nachdem Sie das Modell erstellt haben, können Sie mit der Funktion ML.FORECAST die Prognoseergebnisse anzeigen.

Sie führen die Funktion ML.FORECAST für das Modell liquor_forecast aus, indem Sie sie in der Klausel FROM angeben.

Standardmäßig gibt diese Abfrage die Prognosen für alle eindeutigen Zeitachsen in den Daten zurück, die durch die Spalten store_number, zip_code, city und county identifiziert werden.

Führen Sie die folgenden Schritte aus, um die ML.FORECAST-Abfrage auszuführen:

  1. Klicken Sie in der Google Cloud Console auf Abfrage in BigQuery ausführen.

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

#standardSQL
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
  1. Klicken Sie auf Ausführen.

    Die Ausführung der Abfrage dauert etwa 5 Sekunden. Nachdem die Abfrage ausgeführt wurde, enthält die Ausgabe die folgenden Ergebnisse.

    Beispiel für eine Zeitreihe

    Wie Sie sehen, wird die Prognose für die erste Zeitreihe angezeigt (store_number=2190, zip_code=50314, city=DES MOINES, county=POLK). Wenn Sie sich die restlichen Zeilen genauer ansehen, sehen Sie die Prognosen für die anderen Gruppen.

    Im Allgemeinen werden Prognosen für jede eindeutige Zeitreihe generiert. Wenn Sie Prognosen für aggregierte Ebenen generieren möchten, z. B. Prognosen für ein bestimmtes Landkreis, müssen Sie eine hierarchische Prognose generieren.

Zeitachsenmodell mit hierarchischen Prognosen erstellen

Erstellen Sie mithilfe der Verkaufsdaten für Spirituosen in Iowa eine hierarchische Zeitachsenprognose.

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. Die CREATE MODEL-Anweisung erstellt und trainiert ein Modell mit dem Namen bqml_tutorial.liquor_forecast_hierarchical.

#standardSQL
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;

Der Parameter HIERARCHICAL_TIME_SERIES_COLS gibt an, dass Sie eine hierarchische Prognose basierend auf einer Reihe von Spalten erstellen. Jede dieser Spalten wird für die Aggregation zusammengefügt. In der vorherigen Abfrage bedeutet dies beispielsweise, dass store_number zusammengefasst wird, um Prognosen für jede county, city und jeden zip_code anzuzeigen. Getrennt voneinander werden auch zip_code und store_number zusammengefasst, um Prognosen für jede county und city anzuzeigen. Die Reihenfolge der Spalten ist wichtig, da sie die Struktur der Hierarchie definiert.

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 Abfrage in BigQuery ausführen.

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

#standardSQL
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;
  1. Klicken Sie auf Ausführen.

    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.

Ergebnisse des hierarchischen Zeitachsenmodells prüfen

  1. Klicken Sie in der Google Cloud Console auf Abfrage in BigQuery ausführen.

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

    #standardSQL
    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
    
  3. Klicken Sie auf Ausführen.

    Die Ausführung der Abfrage dauert etwa 5 Sekunden. Nachdem die Abfrage ausgeführt wurde, enthält die Ausgabe die folgenden Ergebnisse.

    Beispiel für eine hierarchische Zeitachse

    Wie Sie sehen, wird die aggregierte Prognose für die Stadt LeClaire angezeigt (store_number=NULL, zip_code=NULL, city=LECLAIRE, county=SCOTT). Wenn Sie sich die restlichen Zeilen genauer ansehen, sehen Sie die Prognosen für die anderen Untergruppen. Das folgende Bild zeigt beispielsweise die Prognosen für die Postleitzahl 52753 (store_number=NULL, zip_code=52753, city=LECLAIRE, county=SCOTT):

    Beispiel für eine hierarchische Zeitachse

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