Hierarchische Zeitachsenprognosen

In dieser Anleitung wird gezeigt, wie Sie eine hierarchische Zeitachse generieren. In dieser Anleitung erstellen Sie zwei Zeitachsenmodelle, die dieselben Daten nutzen. Eins verwendet die hierarchische Prognose 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 Spirituosenprodukten in verschiedenen Geschäften unter Verwendung öffentlicher Verkaufsdaten für Spirituosen in Iowa.

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.

Lernziele

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

Hierarchischer Abgleich

Zeitreihenprognosen können oft anhand verschiedener Dimensionen, die von Interesse sind, aufgeschlüsselt oder aggregiert werden. Diese werden als hierarchische Zeitachsen bezeichnet. Beispielsweise können Volkszählungsdaten, die die Gesamtbevölkerung pro Bundesland anzeigen, nach Stadt und Postleitzahl aufgeschlüsselt werden. Umgekehrt können wir diese Daten für jedes Land oder jeden Kontinent zusammenfassen.

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

Hierarchische Zeitreihe.

Die unterste Ebene zeigt die Ladenebene, gefolgt von der Postleitzahlebene, der Stadt, dem Land und schließlich dem Bundesstaat. Ziel der hierarchischen Prognose ist es, dafür zu sorgen, dass alle Prognosen für jede Ebene abgeglichen werden müssen. Ausgehend von der vorherigen Abbildung bedeutet dies, dass die Prognosen für Clive und Des Moines die Vorhersage in Polk ergeben müssen. Ebenso sollten die Vorhersagen für Polk, Linn und Scott zur Vorhersage für Iowa addiert werden.

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

Zeitachsenmodell erstellen

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

Die folgende GoogleSQL-Abfrage erstellt ein Modell, das die tägliche Gesamtzahl der 2015 verkauften Flaschen in den Countys Polk, Linn und Scott prognostiziert. 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. Wenn Sie die Option holiday_region auf US setzen, ist eine genauere Modellierung der Feiertagszeitpunkte in den USA möglich, wenn in der Zeitachse US-Feiertagsmuster 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 die Schaltfläche 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 Ihr Modell erstellt haben, können Sie die ML.FORECAST-Funktion verwenden, um die Prognoseergebnisse anzuzeigen.

Führen Sie die Funktion ML.FORECAST für das Modell liquor_forecast aus. Dazu geben Sie sie in der FROM-Klausel an.

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 die Schaltfläche 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 sollte etwa 5 Sekunden dauern. Nach der Ausführung der Abfrage werden in der Ausgabe die folgenden Ergebnisse ausgegeben:

    Beispiel für eine Zeitreihe

    Beachten Sie, wie die Prognose für die erste Zeitreihe angezeigt wird (store_number=2190, zip_code=50314, city=DES MOINES, county=POLK). Sehen Sie sich die restlichen Zeilen an, um die Prognosen für die anderen Gruppen zu sehen.

    Im Allgemeinen werden Prognosen für jede eindeutige Zeitreihe generiert. Um Prognosen für aggregierte Ebenen zu erstellen, wie Prognosen für ein bestimmtes Land, müssen Sie eine hierarchische Prognose erstellen.

Zeitachsenmodell mit hierarchischen Prognosen erstellen

Erstellen Sie eine hierarchische Zeitachsenprognose mit den Verkaufsdaten für Spirituosen in Iowa.

Die folgende GoogleSQL-Abfrage erstellt ein Modell, das hierarchische Prognosen für die tägliche Gesamtzahl von Flaschen generiert, die 2015 in den Countys Polk, Linn und Scott verkauft wurden. 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 zusammengefügt wird, um Prognosen für jeden county, city und zip_code anzuzeigen. Unabhängig davon werden sowohl zip_code als auch store_number zusammengefügt, um Prognosen für jede county und city anzuzeigen. Die Spaltenreihenfolge 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 die Schaltfläche 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 die Schaltfläche 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 sollte etwa 5 Sekunden dauern. Nach der Ausführung der Abfrage werden in der Ausgabe die folgenden Ergebnisse ausgegeben:

    Hierarchisches Zeitachsenbeispiel.

    Beachten Sie, wie die aggregierte Prognose für die Stadt LeClaire angezeigt wird (store_number=NULL, zip_code=NULL, city=LECLAIRE, county=SCOTT). Sehen Sie sich die restlichen Zeilen an, um die Prognosen für die anderen Untergruppen zu sehen. Die folgende Abbildung zeigt beispielsweise die für die Postleitzahl 52753 (store_number=NULL, zip_code=52753, city=LECLAIRE, county=SCOTT) aggregierten Prognosen:

    Hierarchisches Zeitachsenbeispiel.

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