Prévision de séries chronologiques dans Snowflake à l'aide de SQL

Nov 25 2022
La prévision de la demande, la gestion de la chaîne d'approvisionnement et des stocks, la planification financière sont importantes pour les opérations commerciales. Modelstar vous permet de le faire dans Snowflake, avec seulement 1 ligne de SQL.

La prévision de la demande, la gestion de la chaîne d'approvisionnement et des stocks, la planification financière sont importantes pour les opérations commerciales. Modelstar vous permet de le faire dans Snowflake, avec seulement 1 ligne de SQL.

Aperçu de la sortie du blog. Image de l'auteur.

Qu'est-ce que la prévision de séries chronologiques et ses cas d'utilisation ?

La prévision de séries chronologiques est une technique permettant de prédire des valeurs basées sur des données historiques échantillonnées dans le temps.

La prévision est rudimentaire pour la gestion

Les prévisions peuvent aider les entreprises à prendre des décisions commerciales appropriées sur la gestion de la chaîne d'approvisionnement, la gestion des stocks (quantité et quand réapprovisionner), la planification financière, la feuille de route des produits et la stratégie d'embauche, etc. Avec des résultats de prévision précis et opportuns, la gestion d'entreprise peut avoir une meilleure compréhension de la façon d'allouer les ressources ou de tirer parti des vents favorables.

Défis techniques pour la prévision

La prévision est une application de l'analyse des séries chronologiques. Il y a plusieurs composants à considérer :

  • Saisonnalité : changements périodiques dans le temps. Exemple : les vacances d'été et d'hiver sont annuelles, ou une consommation de café plus élevée le matin est quotidienne.
  • Tendance : changements continus non périodiques. Exemple : Croissance des ventes de l'entreprise au cours des 5 dernières années.
  • Événements perturbateurs : changements soudains. Il peut être motivé à la fois par des facteurs prévisibles, tels que les vacances ou la maintenance du service, et par des problèmes imprévisibles, tels que des erreurs aléatoires ou des bogues.

Les défis techniques de la mise en œuvre

Python dispose d'un riche écosystème pour implémenter des algorithmes d'apprentissage automatique et de prévision. La nouvelle fonctionnalité Snowpark de Snowflake qui apporte Python à votre entrepôt de données, en utilisant des UDF pour exécuter Python dans SQL, change la donne sur les transformations que vous pouvez effectuer sur vos données. Cependant, cela peut être intimidant et prendre du temps si vous souhaitez mettre en œuvre une solution de bout en bout pour effectuer des prévisions. Modelstar résout ce problème en fournissant une solution rationalisée pour apporter les super pouvoirs de Python à SQL.

Modelstar est un projet open source et s'appuie sur les fonctionnalités récemment lancées de Snowflake, telles que Snowpark. Il gère automatiquement les dépendances, les artefacts de modèle et les E/S de fichiers dans le calcul Snowflake.

Le SQL 1-liner pour la prévision

Modelstar vous permet d'expédier et de gérer des modèles de prévision et de visualiser les résultats de la modélisation avec 1 ligne de SQL dans Snowflake. Sous le capot, Modelstar fournit des algorithmes de prévision prédéfinis et les expose sous forme de procédure stockée SQL dans votre base de données. Dans cet exemple, nous utiliserons univariate_time_series_forecast( API doc ). Cette API est basée sur une bibliothèque open source Prophet , qui est l'un des algorithmes de prévision les plus utilisés dans l'industrie.

Ce didacticiel décrit les étapes de création d'un modèle de prévision de série chronologique et d'un rapport. Cela couvre:

  • Concept de base : à propos des cas d'utilisation et de la technologie de prévision des ventes.
  • Outil Modelstar CLI : Guide d'installation de Modelstar
  • univariate_time_series_forecastSyntaxe SQL : le SQL 1-liner pour faire des prévisions
  • Rapport prévisionnel : résultats prévisionnels prêts à être consommés par les équipes métiers
Notre rapport de sortie. Image de l'auteur.

Préparation au parcours

Il s'agit d'un guide de démarrage rapide pour configurer Modelstar si vous utilisez Modelstar pour la première fois.

Étape 1 : Installez Modelstar

$ pip install modelstar

Vérifiez l'installation avec une vérification de version rapide :

$ modelstar --version

Étape 2 : Initialiser un projet

$ modelstar init forecast_project

Vous verrez maintenant un forecast_projectdossier créé dans votre répertoire de travail.

Étape 3 : Configurer la session

Dans forecast_projectle dossier, recherchez le fichier modelstar.config.yamlet ouvrez-le avec votre éditeur préféré. Ajoutez-y les informations et les informations d'identification de votre compte Snowflake. N'hésitez pas à nommer la session avec n'importe quel nom. Dans cet exemple, nous utilisons snowflake-test. Les informations d'identification de ce fichier sont utilisées pour se connecter à votre entrepôt de données Snowflake. (Remarque : ne validez pas le fichier modelstar.config.yaml dans votre CI/CD, contrôle de version.)

# ./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

Étape 4 : Ping Snowflake

Nous pouvons maintenant démarrer une session Modelstar depuis votre terminal. Dans le répertoire du projet Modelstar nouvellement généré (dans notre exemple, il s'agit de ./forecast_project/), exécutez ceci :

$ modelstar use snowflake-test

Un ping réussi devrait conduire à quelque chose comme ceci :

Sortie console. Image de l'auteur.

Étape 5 : Enregistrez l'algorithme de prévision dans Snowflake

Modelstar fournit l'algorithme de prévision prêt à l'emploi et gère les dépendances de cet algorithme, pour que vous n'ayez pas à le faire. Pour le rendre disponible dans votre entrepôt Snowflake, exécutez la commande suivante :

$ modelstar register forecast:univariate_time_series_forecast

Sortie console. Image de l'auteur.

Étape 6 : Téléchargez des exemples de données de vente sur Snowflake (facultatif, si vous utilisez votre propre ensemble de données )

Si vous souhaitez essayer l'algorithme de prévision sur un exemple d'ensemble de données de ventes, exécutez cette commande pour créer une table de données dans votre entrepôt de données. Vous pouvez ignorer cette étape si vous souhaitez utiliser vos propres données.

$ modelstar create table sample_data/time_series_data.csv:TS_DATA_TABLE

Construire un modèle de prévision à l'aide d'un SQL 1- linéaire

Exécutez ce script dans une feuille

Utilisez la commande suivante dans Snowflake pour créer le modèle de prédiction (l'exemple ci-dessous utilise les exemples de données téléchargés à l'étape 6) :

CALL UNIVARIATE_TIME_SERIES_FORECAST('TS_DATA_TABLE', 'DS', 'Y', 40, 'M');

Snowsight flocon de neige. Image de l'auteur.

Pour exécuter l'algorithme de prévision sur vos propres données

Sous le capot, l'algorithme de prévision s'exécute dans Snowflake en tant que procédure stockée. Il prend les paramètres suivants :

Pour configurer votre propre période de prévision, consultez ce document API pour une liste complète des alias d'unité.

Vérifiez le résultat

Une fois la formation du modèle terminée, dans la fenêtre Snowflake Results, une exécution réussie doit générer une chaîne json similaire à celle-ci :

{
    "return_table": "RESULT_UNIVARIATE_TIME_SERIES_FORECAST",
    "run_id": "3NvQXnHQqUdYG4Fu"
}

Consultez le tableau

Vérifions le tableau des résultats de l'exécution en utilisant :

SELECT * FROM RESULT_UNIVARIATE_TIME_SERIES_FORECAST;

  • DS( datetime) : date-heure
  • Y_FORECAST, YHAT_LOWER, YHAT_UPPER(flottant) : liaisons moyenne, inférieure et supérieure de la valeur prédite (voir Uncertainty Intervalsdans la section Glossaire pour leur signification).
  • Snowsight flocon de neige. Image de l'auteur.

Un rapport qui enregistre les informations sur l'exécution, avec les artefacts d'apprentissage automatique, est généré automatiquement avec Modelstar. Pour vérifier le rapport, exécutez simplement cette commande sur votre ordinateur local :

$ modelstar check <run_id>

Comme il le mentionne, un rapport apparaîtra dans votre navigateur :

Rapport Modelstar. Image de l'auteur.

Qu'y a-t-il dans le rapport

Le rapport comprend 3 sections :

  • Méta-informations de cette course
  • Tableau de prévision : pour vérifier la qualité de la modélisation et prévoir les résultats.
  • Rapport Modelstar. Image de l'auteur.
  • Analyse en composantes : pour illustrer la tendance et la saisonnalité, votre modèle a « appris », y compris une tendance globale, et une saisonnalité annuelle et hebdomadaire (modèles cycliques sur 1 an/semaine).
  • Rapport Modelstar. Image de l'auteur.

Prévision dans l'échantillon et hors échantillon : à partir de la prévision dans l'échantillon, vous pouvez vérifier dans quelle mesure le modèle de prévision correspond aux données réelles. La prévision hors échantillon montre la prédiction de l'avenir.

Intervalles d'incertitude : la bande entre les limites supérieure et inférieure. Cela signifie qu'il y a une probabilité de 80 % que la vraie valeur tombe dans cet intervalle. Une exigence de certitude plus élevée conduit à une bande plus large (voir l'article de Bartosz ). L'incertitude croît également à mesure que nous avançons dans le futur, ce qui conduit à un élargissement de la bande en fonction du temps.

Conclusion

La prévision est rudimentaire pour la gestion d'entreprise. Notre objectif était d'expédier une fonction de prévision à Snowflake pour former un modèle d'apprentissage automatique et faire des prédictions à l'aide de celui-ci. Nous avons réalisé tout cela avec seulement 1 ligne de SQL. Parallèlement à cela, un rapport d'exécution contenant les détails de l'exécution ainsi que l'analyse des prévisions est généré. Cela a été rendu possible par Modelstar .

Consultez le référentiel GitHub de Modelstar : ici , lancez-le pour être mis à jour sur les dernières nouveautés. En cas de bogues, de problèmes ou de demandes de fonctionnalités pour votre cas d'utilisation, contactez Github ou ouvrez un problème sur GitHub .

  • Référentiel GitHub :https://github.com/modelstar-labs/modelstar
  • Documentation:https://modelstar.io/docs/quickstart/