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
- 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.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
BigQuery API aktivieren.
-
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
-
BigQuery API aktivieren.
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 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:
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:
Klicken Sie in der Google Cloud Console auf die Schaltfläche 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 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:
Klicken Sie in der Google Cloud Console auf die Schaltfläche 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 sollte etwa 5 Sekunden dauern. Nach der Ausführung der Abfrage werden in der Ausgabe die folgenden Ergebnisse ausgegeben:
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:
Klicken Sie in der Google Cloud Console auf die Schaltfläche 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 die Schaltfläche 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 sollte etwa 5 Sekunden dauern. Nach der Ausführung der Abfrage werden in der Ausgabe die folgenden Ergebnisse ausgegeben:
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:
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:
- Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.
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.