Zeitreihenprognose in Snowflake mit SQL

Nov 25 2022
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.

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.

Übersicht über die Blog-Ausgabe. Bild vom Autor.

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_forecastSQL-Syntax: der SQL-Einzeiler zur Erstellung einer Prognose
  • Prognosebericht: Prognoseergebnisse, die von Geschäftsteams verwendet werden können
Ourput-Bericht. Bild vom Autor.

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_projectOrdner, der in Ihrem Arbeitsverzeichnis erstellt wurde.

Schritt #3: Konfigurieren Sie die Snowflake- Sitzung

Suchen Sie im forecast_projectOrdner nach einer Datei modelstar.config.yamlund ö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:

Konsolenausgabe. Bild vom Autor.

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

Konsolenausgabe. Bild vom Autor.

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');

Schneeflocke Snowsight. Bild vom Autor.

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): DatumZeit
  • Y_FORECAST, YHAT_LOWER, YHAT_UPPER(Float): mittlere, untere und obere Bindung des vorhergesagten Werts (siehe Uncertainty Intervalsim Abschnitt Glossar für ihre Bedeutung).
  • Schneeflocke Snowsight. Bild vom Autor.

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:

Modelstar-Bericht. Bild vom Autor.

Was steht im Bericht

Der Bericht umfasst 3 Abschnitte:

  • Metainformationen dieses Laufs
  • Prognosediagramm: Zur Überprüfung der Modellqualität und der Prognoseergebnisse.
  • Modelstar-Bericht. Bild vom Autor.
  • 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).
  • Modelstar-Bericht. Bild vom Autor.

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/