FORECAST

Nom complet : SNOWFLAKE.ML.FORECAST

Un modèle de prévision produit une prévision pour une ou plusieurs séries temporelles. Vous utilisez CREATE SNOWFLAKE.ML.FORECAST pour créer et former le modèle de prévision, puis vous utilisez la méthode <nom>!FORECAST du modèle pour produire des prévisions. La méthode <nom>!EXPLAIN_FEATURE_IMPORTANCE fournit des informations sur l’influence de chaque fonction des données d’entraînement sur la prévision. La méthode <nom>!SHOW_TRAINING_LOGS fournit des messages d’erreur pour toutes les séries temporelles dont les modèles n’ont pas réussi à s’ajuster. La méthode Exemples fournit des mesures d’évaluation sur des données hors échantillon.

Important

Mention légale. Cette fonction Snowflake Cortex basée sur le ML est alimentée par une technologie de machine learning. La technologie de machine learning et les résultats fournis peuvent être inexacts, incorrects ou biaisés. Les décisions basées sur les résultats du machine learning, y compris celles qui sont intégrées dans des pipelines automatiques, devraient être soumises à une supervision humaine et à des processus d’examen pour s’assurer que le contenu généré par le modèle est exact. Les requêtes de fonctions Snowflake Cortex basées sur le ML seront traitées comme toute autre requête SQL et peuvent être considérées comme des métadonnées.

Métadonnées. Lorsque vous utilisez des fonctions Snowflake Cortex basées sur le ML, Snowflake enregistre les messages d’erreur génériques renvoyés par une fonction ML, en plus de ce qui est mentionné dans les champs de métadonnées. Ces journaux d’erreurs nous aident à résoudre les problèmes qui surviennent et à améliorer ces fonctions pour mieux répondre à vos demandes.

Pour plus d’informations, voir la FAQ relative à la confiance et à la sécurité concernant l’AI de Snowflake.

CREATE SNOWFLAKE.ML.FORECAST

Crée un nouveau modèle de prévision à partir des données d’entraînement que vous fournissez, ou remplace le modèle de prévision portant le même nom.

Syntaxe

CREATE [ OR REPLACE ] SNOWFLAKE.ML.FORECAST [ IF NOT EXISTS ] <name>(
  INPUT_DATA => <input_data>,
  [ SERIES_COLNAME => '<series_colname>', ]
  TIMESTAMP_COLNAME => '<timestamp_colname>',
  TARGET_COLNAME => '<target_colname>',
  [ CONFIG_OBJECT => <config_object> ]
)
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ COMMENT = '<string_literal>' ]
Copy

Note

L’utilisation d’arguments nommés rend l’ordre des arguments non pertinent et permet d’obtenir un code plus lisible. Cependant, vous pouvez également utiliser des arguments de position, comme dans l’exemple suivant :

CREATE SNOWFLAKE.ML.FORECAST <name>(
  '<input_data>', '<series_colname>', '<timestamp_colname>', '<target_colname>'
);
Copy

Paramètres

name

Spécifie l’identificateur du modèle ; il doit être unique pour le schéma dans lequel le modèle est créé.

Si l’identificateur du modèle n’est pas complet (sous la forme db_name.schema_name.name ou schema_name.name), la commande recherche le modèle dans le schéma actuel de la session.

De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (par exemple, "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus de détails, voir Exigences relatives à l’identificateur.

Arguments du constructeur

Obligatoire :

INPUT_DATA => input_data

Référence aux données d’entrée. L’utilisation d’une référence permet au processus d’entraînement, qui s’exécute avec des privilèges limités, d’utiliser vos privilèges pour accéder aux données. Vous pouvez utiliser une référence à une table ou à une vue si vos données sont déjà sous cette forme, ou vous pouvez utiliser une référence de requête pour fournir la requête à exécuter pour obtenir les données.

Les données référencées sont l’ensemble des données d’entraînement consommées par la modèle de prévisions. Si input_data contient des colonnes qui ne sont pas nommées timestamp_colname, target_colname, ou series_colname, elles sont considérées comme des variables exogènes (fonctions supplémentaires). L’ordre des colonnes dans les données d’entrée n’a pas d’importance.

Vos données d’entrée doivent comporter des colonnes dont le type est adapté à votre cas. Consultez Exemples pour plus de détails sur chaque cas.

Cas d’utilisation

Colonnes et types

Série temporelle unique

Séries temporelles multiples

  • Colonne de la série : VARIANT contenant des valeurs numériques et du texte.

  • Colonne d’horodatage : TIMESTAMP_NTZ.

  • Colonne de valeur cible : FLOAT.

Série temporelle unique avec variables exogènes

Séries temporelles multiples avec variables exogènes

  • Colonne de la série : VARIANT contenant des valeurs numériques et du texte.

  • Colonne d’horodatage : TIMESTAMP_NTZ.

  • Colonne de valeur cible : FLOAT.

  • Colonnes de fonctions exogènes : numérique ou texte.

TIMESTAMP_COLNAME => 'timestamp_colname'

Nom de la colonne contenant les horodatages dans input_data.

TARGET_COLNAME => 'target_colname'

Nom de la colonne contenant la cible (valeur dépendante) dans input_data.

Facultatif :

SERIES_COLNAME => 'series_colname'

Pour les modèles de séries temporelles multiples, le nom de la colonne définissant les séries temporelles multiples dans input_data. Cette colonne peut être une valeur de n’importe quel type ou un tableau de valeurs provenant d’une ou plusieurs autres colonnes, comme présenté dans Prévision sur des séries multiples.

Si vous fournissez des arguments en tenant compte de la position, il doit s’agir du deuxième argument.

CONFIG_OBJECT => config_object

OBJECT contenant des paires clé-valeur utilisées pour configurer la tâche d’entraînement des modèles.

Clé

Type

Par défaut

Description

on_error

STRING

'ABORT'

Chaîne (constante) qui spécifie la méthode de traitement des erreurs pour la tâche d’entraînement des modèles. Cette fonction est particulièrement utile lors de l’entraînement de plusieurs séries. Valeurs prises en charge :

  • 'abort' : abandonner l’opération d’entraînement si une erreur est rencontrée dans une série temporelle.

  • 'skip' : ignorer toute série temporelle pour laquelle l’entraînement a rencontré une erreur. Cela permet de réussir l’entraînement des modèles pour d’autres séries temporelles. Pour savoir quelle série a échoué, utilisez la méthode <nom>!SHOW_TRAINING_LOGS du modèle.

evaluate

BOOLEAN

TRUE

Si des mesures d’évaluation doivent être générées. Si TRUE, des modèles supplémentaires sont entraînés pour la validation croisée en utilisant les paramètres de evaluation_config.

evaluation_config

OBJECT

Voir Configuration de l’évaluation ci-dessous.

Un objet de configuration facultatif pour spécifier comment les mesures d’évaluation hors échantillon doivent être générées.

Configuration de l’évaluation

L’objet evaluation_config contient des paires clé-valeur qui configurent la validation croisée. Ces paramètres proviennent de TimeSeriesSplit de scikit-learn.

Clé

Type

Par défaut

Description

n_splits

INTEGER

5

Nombre de fractionnements.

max_train_size

INTEGER ou NULL (pas de maximum).

NULL

Taille maximale d’un seul ensemble d’entraînement.

test_size

INTEGER ou NULL.

NULL

Utilisé pour limiter la taille de l’ensemble de tests.

gap

INTEGER

0

Nombre d’échantillons à exclure de la fin de chaque ensemble d’entraînement avant l’ensemble de test.

prediction_interval

FLOAT

0,95

L’intervalle de prédiction utilisé dans le calcul des métriques d’intervalle.

Notes sur l’utilisation

La réplication des instances de classe n’est actuellement pas prise en charge.

SHOW SNOWFLAKE.ML.FORECAST

Dresse la liste de tous les modèles de prévision.

Syntaxe

SHOW SNOWFLAKE.ML.FORECAST [ LIKE <pattern> ]
  [ IN
      {
        ACCOUNT                  |

        DATABASE                 |
        DATABASE <database_name> |

        SCHEMA                   |
        SCHEMA <schema_name>     |
        <schema_name>
      }
   ]
Copy

Paramètres

LIKE 'pattern'

(Facultatif) Filtre la sortie de commande par nom d’objet. Le filtre utilise une concordance de motif insensible à la casse avec prise en charge des caractères génériques SQL (% et _).

Par exemple, les motifs suivants donnent les mêmes résultats :

... LIKE '%testing%' ...
... LIKE '%TESTING%' ...

. Par défaut : aucune valeur (aucun filtrage n’est appliqué à la sortie).

[ IN ... ]

Spécifie de manière facultative la portée de la commande. Spécifie l’un des éléments suivants :

ACCOUNT

Renvoie les enregistrements pour l’ensemble du compte.

DATABASE, . DATABASE db_name

Renvoie les enregistrements pour la base de données en cours d’utilisation ou pour une base de données spécifiée (db_name).

Si vous spécifiez DATABASE sans db_name et qu’aucune base de données n’est utilisée, le mot-clé n’a aucun effet sur la sortie.

SCHEMA, . SCHEMA schema_name, . schema_name

Renvoie les enregistrements pour le schéma en cours d’utilisation ou un schéma spécifié (schema_name).

SCHEMA est facultatif si une base de données est utilisée ou si vous spécifiez le schema_name complet (par exemple, db.schema).

Si aucune base de données n’est utilisée, spécifier SCHEMA n’a aucun effet sur la sortie.

Par défaut : dépend si la session dispose actuellement d’une base de données en cours d’utilisation :

  • Base de données : DATABASE est la valeur par défaut (c’est-à-dire que la commande renvoie les objets que vous pouvez visualiser dans la base de données).

  • Aucune base de données : ACCOUNT est la valeur par défaut (c’est-à-dire que la commande renvoie les objets que vous pouvez visualiser dans votre compte).

Sortie

La sortie de commande fournit les propriétés des modèles et les métadonnées dans les colonnes suivantes :

Colonne

Description

created_on

Date et heure de création du modèle

name

Nom du modèle

database_name

Base de données dans laquelle le modèle est stocké

schema_name

Schéma dans lequel le modèle est stocké

current_version

Version de l’algorithme du modèle

commentaire

Commentaire pour le modèle

propriétaire

Rôle qui possède le modèle

DROP SNOWFLAKE.ML.FORECAST

Supprime le modèle spécifié du schéma actuel ou spécifié. Les modèles supprimés ne peuvent être récupérés ; ils doivent être recréés.

Syntaxe

DROP SNOWFLAKE.ML.FORECAST [ IF EXISTS ] <name>;
Copy

Paramètres

name

Indique l’identificateur du modèle à supprimer. Si l’identificateur contient des espaces, des caractères spéciaux ou des caractères majuscules et minuscules, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Si l’identificateur du modèle n’est pas complet (sous la forme db_name.schema_name.name ou schema_name.name), la commande recherche le modèle dans le schéma actuel de la session.

<nom>!FORECAST

Génère une prévision à partir du modèle précédemment entraîné name.

Syntaxe

Les arguments requis varient en fonction du cas d’utilisation pour lequel le modèle a été entraîné.

Pour les modèles à série unique sans variables exogènes :

<name>!FORECAST(
  FORECASTING_PERIODS => <forecasting_periods>,
  [ CONFIG_OBJECT => <config_object> ]
);
Copy

Pour les modèles à série unique avec des variables exogènes :

<name>!FORECAST(
  INPUT_DATA => <input_data>,
  TIMESTAMP_COLNAME => '<timestamp_colname>',
  [ CONFIG_OBJECT => <config_object> ]
);
Copy

Pour les modèles à séries multiples sans variables exogènes :

<name>!FORECAST(
  SERIES_VALUE => <series>,
  FORECASTING_PERIODS => <forecasting_periods>,
  [ CONFIG_OBJECT => <config_object> ]
);
Copy

Pour les modèles à séries multiples avec variables exogènes :

<name>!FORECAST(
  SERIES_VALUE => <series>,
  SERIES_COLNAME => <series_colname>,
  INPUT_DATA => <input_data>,
  TIMESTAMP_COLNAME => '<timestamp_colname>',
  [ CONFIG_OBJECT => <config_object> ]
);
Copy

Arguments

Obligatoire :

Tous les arguments suivants ne sont pas nécessaires pour tous les cas d’utilisation.

FORECASTING_PERIODS => forecasting_periods

Nécessaire pour les prévisions sans variables exogènes.

Nombre de pas en avant pour la prévision. L’intervalle entre les étapes est déduit par le modèle au cours de l’entraînement.

INPUT_DATA => input_data

Nécessaire pour les prévisions avec des variables exogènes.

Référence à une table, une vue ou une requête qui contient les horodatages futurs et les valeurs des variables exogènes (fonctions supplémentaires fournies par l’utilisateur) qui ont été transmises en tant que input_data lors de la formation du modèle. L’utilisation d’une référence permet au processus de prévision, qui s’exécute avec des privilèges limités, d’utiliser vos privilèges pour accéder aux données. Les colonnes sont mises en correspondance entre cet argument et les données d’entraînement exogènes d’origine par nom.

TIMESTAMP_COLNAME => 'timestamp_colname'

Nécessaire pour les prévisions avec des variables exogènes.

Nom de la colonne dans input_data contenant les horodatages.

SERIES_COLNAME => 'series_colname'

Nécessaire pour les prévisions multi-séries avec des variables exogènes.

Nom de la colonne dans input_data spécifiant la série.

SERIES_VALUE => series

Nécessaire pour les prévisions multi-séries.

Série temporelle à prévoir. Peut être une valeur unique (par exemple, 'Series A'::variant) ou un VARIANT, mais doit spécifier une série sur laquelle le modèle a été entraîné. Si elle n’est pas spécifiée, toutes les séries entraînées sont prévues.

Facultatif :

CONFIG_OBJECT => config_object

OBJECT contenant des paires de clés de valeurs utilisées pour configurer la tâche de prévision.

Clé

Type

Par défaut

Description

prediction_interval

FLOAT

0,95

Une valeur supérieure ou égale à 0,0 et inférieure à 1,0. La valeur par défaut est 0,95, ce qui signifie que 95 % des points futurs devraient se situer dans l’intervalle [lower_bound, upper_bound] du résultat de la prévision.

on_error

STRING

'ABORT'

Chaîne (constante) spécifiant la méthode de gestion des erreurs. Cette fonction est particulièrement utile pour la prévision de plusieurs séries. Valeurs prises en charge :

  • 'abort' : abandonner l’opération de prévision de modèle si une erreur est rencontrée dans une série temporelle.

  • l 'skip' : ignorer toute série temporelle pour laquelle la prévision a rencontré une erreur. Cela permet d’effectuer des prévisions pour d’autres séries temporelles. Les séries qui ont échoué sont absentes de la sortie du modèle.

Sortie

La colonne SERIES n’est présente que pour les prévisions multiséries. Les prévisions à série unique n’ont pas cette colonne.

Colonne

Type

Description

SERIES

VARIANT

Valeur de la série (si le modèle a été entraîné avec plusieurs séries temporelles)

TS

TIMESTAMP_NTZ

Horodatage.

FORECAST

FLOAT

Valeur cible de la prévision.

LOWER_BOUND

FLOAT

Limite inférieure de l’intervalle de prédiction.

UPPER_BOUND

FLOAT

Limite supérieure de l’intervalle de prédiction.

<nom>!EXPLAIN_FEATURE_IMPORTANCE

Renvoie l’importance relative de chaque fonction utilisée par le modèle.

Syntaxe

<name>!EXPLAIN_FEATURE_IMPORTANCE();
Copy

Sortie

La colonne SERIES n’est présente que pour les prévisions multiséries. Les prévisions à série unique n’ont pas cette colonne.

Colonne

Type

Description

SERIES

VARIANT

Valeur de la série (si le modèle a été entraîné avec plusieurs séries temporelles)

RANK

INTEGER

Le rang d’importance d’une fonction pour une série donnée.

FEATURE_NAME

VARCHAR

Le nom de la fonction utilisée pour entraîner le modèle. aggregated_endogenous_features Représente toutes les fonctions dérivées en tant que transformations de la variable cible.

IMPORTANCE_SCORE

FLOAT

Le score d’importance de la fonction : une valeur dans [0, 1], 0 étant l’importance la plus faible possible, et 1 la plus élevée possible.

FEATURE_TYPE

VARCHAR

Source de la fonction. Une des options :

  • user_provided : données sur les fonctions, fournies par l’utilisateur.

  • derived_from_timestamp : fonction périodique (par exemple, jour, semaine ou mois) dérivée des données d’horodatage.

  • derived_from_endogenous : fonctions dérivées d’une transformation de la variable cible.

<nom>!SHOW_EVALUATION_METRICS

Renvoie les mesures d’évaluation hors échantillon générées à l’aide de la validation croisée des séries temporelles. Les métriques ne sont disponibles que si evaluate=TRUE dans le CONFIG_OBJECT lors de la construction du modèle (c’est la valeur par défaut).

Syntaxe

<name>!SHOW_EVALUATION_METRICS();
Copy

Sortie

La colonne SERIES n’est présente que pour les prévisions multiséries. Les prévisions à série unique n’ont pas cette colonne.

Colonne

Type

Description

SERIES

VARIANT

Valeur de la série (présente uniquement si le modèle a été entraîné avec plusieurs séries temporelles)

ERROR_METRIC

VARCHAR

Le nom de la métrique d’erreur utilisée. La méthode renvoie les données suivantes :

Métriques ponctuelles :

Mesures d’intervalle : ces mesures utilisent l’argument prediction_interval à partir de Configuration de l’évaluation.

  • COVERAGE_INTERVAL : la proportion des valeurs réelles qui se situent dans l’intervalle de prédiction.

  • WINKLER_ALPHA : score de Winkler.

LOGS

VARIANT

Contient des messages d’erreur ou d’avertissement.

<nom>!SHOW_TRAINING_LOGS

Renvoie les journaux de l’entraînement des modèles. La sortie n’est pas NULL uniquement lorsque 'ON_ERROR' = 'SKIP' est défini dans l’entraînement CONFIG_OBJECT, sinon le modèle entier ne parvient pas à s’entraîner.

Syntaxe

<name>!SHOW_TRAINING_LOGS();
Copy

Sortie

La colonne SERIES n’est présente que pour les modèles multiséries. Les modèles à série unique n’ont pas cette colonne.

Colonne

Type

Description

SERIES

VARIANT

Valeur de la série (si le modèle a été entraîné avec plusieurs séries temporelles)

LOGS

OBJECT

Objet contenant les erreurs rencontrées pendant l’entraînement. Actuellement, la seule clé est Errors, un tableau d’erreurs. Si aucune erreur n’a été rencontrée, l’objet journaux est NULL.

Exemples

Voir Exemples.