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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery API.
Dataset erstellen
Erstellen Sie ein BigQuery-Dataset, um Ihr ML-Modell zu speichern:
Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.
Klicken Sie im Bereich Explorer auf den Namen Ihres Projekts.
Klicken Sie auf
Aktionen ansehen > Dataset erstellen.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.
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:
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:
Klicken Sie in der Google Cloud Console auf Abfrage in BigQuery ausführen.
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;
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 eineCREATE 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:
Klicken Sie in der Google Cloud Console auf Abfrage in BigQuery ausführen.
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
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.
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:
Klicken Sie in der Google Cloud Console auf Abfrage in BigQuery ausführen.
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;
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 eineCREATE MODEL
-Anweisung zum Erstellen eines Modells verwendet, gibt es keine Abfrageergebnisse.
Ergebnisse des hierarchischen Zeitachsenmodells prüfen
Klicken Sie in der Google Cloud Console auf Abfrage in BigQuery ausführen.
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
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.
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):
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:
Rufen Sie, falls erforderlich, die Seite "BigQuery" in der Google Cloud Console auf.
Wählen Sie im Navigationsbereich das Dataset bqml_tutorial aus, das Sie erstellt haben.
Klicken Sie rechts im Fenster auf Dataset löschen. Dadurch werden das Dataset, die Tabelle und alle Daten gelöscht.
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:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Nächste Schritte
- Prognosen für mehrere Zeitachsen mit einer einzigen Abfrage für „NYC Citi Bike“-Fahrten durchführen
- Erfahren Sie, wie Sie ARIMA_PLUS beschleunigen, um eine Million Zeitachsen innerhalb von Stunden zu prognostizieren.
- Mehr über das maschinelle Lernen im Machine Learning Crash Course erfahren
- Eine Übersicht über BigQuery ML finden Sie unter Einführung in BigQuery ML.
- Weitere Informationen zur Google Cloud Console finden Sie unter Google Cloud Console verwenden.