Zeitreihenprognose in Snowflake mit SQL
Bedarfsprognosen, Lieferketten- und Bestandsverwaltung sowie Finanzplanung sind wichtig für den Geschäftsbetrieb. Mit Modelstar können Sie das in Snowflake mit nur einer SQL-Zeile erledigen.
Was ist Zeitreihenprognose und ihre Anwendungsfälle?
Die Zeitreihenprognose ist eine Technik zur Vorhersage von Werten auf der Grundlage historischer Zeitstichprobendaten.
Prognosen sind rudimentär für die Unternehmensführung
Prognosen können Unternehmen dabei helfen, richtige Geschäftsentscheidungen in Bezug auf Lieferkettenmanagement, Bestandsverwaltung (wie viel und wann aufgefüllt werden soll), Finanzplanung, Produkt-Roadmap und Einstellungsstrategie usw. zu treffen. Mit genauen und zeitnahen Prognoseergebnissen kann die Unternehmensführung haben ein besseres Verständnis dafür, wie man Ressourcen zuweist oder Rückenwind nutzt.
Technische Herausforderungen für die Prognose
Prognosen sind eine Anwendung der Zeitreihenanalyse. Es sind mehrere Komponenten zu berücksichtigen:
- Saisonalität: periodische Änderungen im Laufe der Zeit. Beispiel: Sommer- und Winterurlaub sind jährlich, oder höherer Kaffeekonsum am Morgen ist täglich.
- Trend: kontinuierliche nicht periodische Änderungen. Beispiel: Umsatzwachstum des Unternehmens in den letzten 5 Jahren.
- Disruptive Events: plötzliche Veränderungen. Dies kann sowohl durch vorhersehbare Faktoren wie Feiertage oder Wartungsarbeiten als auch durch unvorhersehbare Probleme wie zufällige Fehler oder Bugs verursacht werden.
Technische Herausforderungen der Umsetzung
Python verfügt über ein reichhaltiges Ökosystem zur Implementierung von maschinellem Lernen und Prognosealgorithmen. Die neue Snowpark-Funktion von Snowflake, die Python in Ihr Data Warehouse bringt und UDFs zum Ausführen von Python in SQL verwendet, verändert die Transformationen, die Sie an Ihren Daten vornehmen können. Es kann jedoch entmutigend und zeitaufwändig sein, wenn Sie eine End-End-Lösung zur Durchführung von Prognosen implementieren möchten. Modelstar löst dies, indem es eine optimierte Lösung bereitstellt, um die Superkräfte von Python in SQL zu bringen.
Modelstar ist ein Open-Source-Projekt und basiert auf den kürzlich eingeführten Funktionen von Snowflake, wie z. B. Snowpark. Es verarbeitet automatisch Abhängigkeiten, Modellartefakte und Datei-I/O in Snowflake-Computing.
Der SQL 1-Liner für Prognosen
Mit Modelstar können Sie Prognosemodelle versenden und verwalten und Modellierungsergebnisse mit 1 Zeile SQL in Snowflake visualisieren. Unter der Haube bietet Modelstar vorgefertigte Prognosealgorithmen und stellt sie als gespeicherte SQL-Prozedur in Ihrer Datenbank bereit. In diesem Beispiel verwenden wir univariate_time_series_forecast
( API doc ). Diese API basiert auf einer Open-Source-Bibliothek Prophet , die einer der am weitesten verbreiteten Prognosealgorithmen in der Industrie ist.
Dieses Lernprogramm enthält die Schritte zum Erstellen eines Zeitreihen-Prognosemodells und eines Berichts. Es bedeckt:
- Grundkonzept: Anwendungsfälle und Technologie für Verkaufsprognosen.
- Modelstar CLI-Tool: Modelstar-Installationsanleitung
univariate_time_series_forecast
SQL-Syntax: der SQL-Einzeiler zur Erstellung einer Prognose- Prognosebericht: Prognoseergebnisse, die von Geschäftsteams verwendet werden können
Vorbereitung auf die SQL ML- Reise
Dies ist eine Kurzanleitung zum Einrichten von Modelstar, wenn Sie Modelstar zum ersten Mal verwenden.
Schritt #1: Modelstar
$ pip install modelstar
Überprüfen Sie die Installation mit einem schnellen Versionscheck:
$ modelstar --version
Schritt Nr. 2: Initialisieren Sie ein Modelstar- Projekt
$ modelstar init forecast_project
Sie sehen nun einen forecast_project
Ordner, der in Ihrem Arbeitsverzeichnis erstellt wurde.
Schritt #3: Konfigurieren Sie die Snowflake- Sitzung
Suchen Sie im forecast_project
Ordner nach einer Datei modelstar.config.yaml
und öffnen Sie sie mit Ihrem bevorzugten Editor. Fügen Sie Ihre Snowflake-Kontoinformationen und -Anmeldeinformationen hinzu. Fühlen Sie sich frei, die Sitzung mit einem beliebigen Namen zu benennen. In diesem Beispiel verwenden wir snowflake-test
. Die Anmeldeinformationen in dieser Datei werden verwendet, um eine Verbindung zu Ihrem Snowflake-Data Warehouse herzustellen. (Hinweis: Übertragen Sie die Datei modelstar.config.yaml nicht in Ihre CI/CD, Versionskontrolle.)
# ./modelstar.config.yaml
# MODELSTAR CONFIGURATION FILE
---
sessions:
- name: snowflake-test
connector: snowflake
config:
account: WQA*****
username: <username>
password: <password>
database: MODELSTAR_TEST
schema: PUBLIC
stage: test
warehouse: COMPUTE_WH
Schritt #4: Schneeflocke pingen
Wir können jetzt eine Modelstar-Sitzung von Ihrem Terminal aus starten. Führen Sie im Verzeichnis des neu generierten Modelstar-Projekts (in unserem Beispiel ist es ./forecast_project/
) Folgendes aus:
$ modelstar use snowflake-test
Ein erfolgreicher Ping sollte in etwa so aussehen:
Schritt #5: Registrieren Sie den Prognosealgorithmus bei Snowflake
Modelstar stellt den Prognosealgorithmus sofort einsatzbereit bereit und verwaltet Abhängigkeiten für diesen Algorithmus, sodass Sie dies nicht tun müssen. Führen Sie den folgenden Befehl aus, um dies in Ihrem Snowflake-Warehouse verfügbar zu machen:
$ modelstar register forecast:univariate_time_series_forecast
Schritt #6: Beispielverkaufsdaten in Snowflake hochladen (optional, wenn Sie Ihren eigenen Datensatz verwenden )
Wenn Sie den Prognosealgorithmus an einem Beispielverkaufsdatensatz ausprobieren möchten, führen Sie diesen Befehl aus, um eine Datentabelle in Ihrem Data Warehouse zu erstellen. Sie können diesen Schritt überspringen, wenn Sie Ihre eigenen Daten verwenden möchten.
$ modelstar create table sample_data/time_series_data.csv:TS_DATA_TABLE
Erstellen Sie ein Prognosemodell mit einem SQL 1- linear
Führen Sie dieses Skript in einem Snowflake -Arbeitsblatt
Verwenden Sie den folgenden Befehl in Snowflake, um das Vorhersagemodell zu erstellen (das folgende Beispiel verwendet die in Schritt 6 hochgeladenen Beispieldaten):
CALL UNIVARIATE_TIME_SERIES_FORECAST('TS_DATA_TABLE', 'DS', 'Y', 40, 'M');
Um den Prognosealgorithmus auf Ihren eigenen Daten
Unter der Haube läuft der Prognosealgorithmus in Snowflake als gespeicherte Prozedur. Es nimmt die folgenden Parameter:
Um Ihren eigenen Prognosezeitraum zu konfigurieren, finden Sie in diesem API -Dokument eine vollständige Liste der Einheiten-Aliasnamen.
Überprüfen Sie das Ergebnis
Nachdem das Modelltraining abgeschlossen ist, sollte im Snowflake-Ergebnisfenster eine erfolgreiche Ausführung eine JSON-Zeichenfolge ähnlich der folgenden ausgeben:
{
"return_table": "RESULT_UNIVARIATE_TIME_SERIES_FORECAST",
"run_id": "3NvQXnHQqUdYG4Fu"
}
Überprüfen Sie die Vorhersagedatentabelle
Lassen Sie uns die Ergebnistabelle des Laufs überprüfen mit:
SELECT * FROM RESULT_UNIVARIATE_TIME_SERIES_FORECAST;
DS
(datetime
): DatumZeitY_FORECAST
,YHAT_LOWER
,YHAT_UPPER
(Float): mittlere, untere und obere Bindung des vorhergesagten Werts (sieheUncertainty Intervals
im Abschnitt Glossar für ihre Bedeutung).
Mit Modelstar wird automatisch ein Bericht generiert, der die Informationen über den Lauf mit den Artefakten des maschinellen Lernens aufzeichnet. Um den Bericht zu überprüfen, führen Sie einfach diesen Befehl auf Ihrem lokalen Computer aus:
$ modelstar check <run_id>
Wie bereits erwähnt, wird ein Bericht in Ihrem Browser angezeigt:
Was steht im Bericht
Der Bericht umfasst 3 Abschnitte:
- Metainformationen dieses Laufs
- Prognosediagramm: Zur Überprüfung der Modellqualität und der Prognoseergebnisse.
- Komponentenanalyse: Um Trend und Saisonalität zu veranschaulichen, hat Ihr Modell „gelernt“, einschließlich eines Gesamttrends sowie der jährlichen und wöchentlichen Saisonalität (zyklische Muster über 1 Jahr/Woche).
In-Sample- und Out-of-Sample-Prognose: Anhand der In-Sample-Prognose können Sie überprüfen, wie gut das Prognosemodell zu den tatsächlichen Daten passt. Die Out-of-Sample-Prognose zeigt die Vorhersage der Zukunft.
Unsicherheitsintervalle: das Band zwischen der oberen und unteren Grenze. Das bedeutet, dass der wahre Wert mit einer Wahrscheinlichkeit von 80 % in dieses Intervall fällt. Eine höhere Sicherheitsanforderung führt zu einem breiteren Band (siehe Artikel von Bartosz ). Die Unsicherheit wächst auch, wenn wir weiter in die Zukunft gehen, was zu einem breiteren Band als Funktion der Zeit führt.
Fazit
Forecasting ist rudimentär für die Unternehmensführung. Unser Ziel war es, eine Prognosefunktion an Snowflake zu senden, um ein Modell für maschinelles Lernen zu trainieren und damit Vorhersagen zu treffen. All dies haben wir mit nur 1 Zeile SQL erreicht. Gleichzeitig wird ein Laufbericht generiert, der die Details des Laufs zusammen mit der Prognoseanalyse enthält. Ermöglicht wurde dies durch Modelstar .
Schauen Sie sich das GitHub-Repository von Modelstar an : hier , markieren Sie es, um auf dem neuesten Stand zu bleiben. Wenden Sie sich bei Fehlern, Problemen oder Funktionsanfragen für Ihren Anwendungsfall an Github oder öffnen Sie ein Problem auf GitHub .
- GitHub-Repository:https://github.com/modelstar-labs/modelstar
- Dokumentation:https://modelstar.io/docs/quickstart/