Gestion des données du monde réel dans la prévision des séries temporelles¶
Les données de séries temporelles du monde réel sont souvent imparfaites, avec des pas de temps manquants, dupliqués ou non alignés. Les fonctions ML de prévision et la détection des anomalies incluent ces fonctionnalités de prétraitement pour vous aider à utiliser vos données du monde réel pour former un modèle qui fait des prédictions utiles :
Vous pouvez spécifier une fréquence d’événement pour remplacer la fréquence que le modèle déduit automatiquement.
Le modèle peut déduire des données à des pas de temps manquants et agréger plusieurs valeurs au sein d’un pas de temps. Vous pouvez spécifier comment l’agrégation doit être effectuée pour chaque fonctionnalité ou type de fonctionnalité, ou laisser la fonction ML le faire pour vous automatiquement.
Ces fonctionnalités vous permettent de former un modèle utile même lorsque vos données d’entraînement présentent des problèmes de cohérence courants. En règle générale, plus vos données sont cohérentes, plus votre modèle de prévision sera précis, mais un nombre relativement faible de ces ajustements n’affecte pas sensiblement la précision du modèle.
Spécification de la fréquence des événements¶
L’entraînement du modèle déduit la fréquence des pas de temps dans vos données d’entraînement à l’aide d’heuristiques qui, dans de rares cas, choisissent la mauvaise fréquence. Pour éviter ce risque, ou corriger une inférence erronée, vous pouvez éventuellement spécifier la fréquence souhaitée lors du lancement de l’entraînement à l’aide du paramètre CONFIG_OBJECT frequency
. Ce paramètre spécifie une période de temps sous une forme similaire à '1 day'
ou '2 weeks'
.
La spécification de l’intervalle doit être entourée de guillemets simples, car il s’agit d’une chaîne.
Les intervalles pris en charge sont les secondes, les minutes, les heures, les jours, les semaines, les mois, les trimestres et les années.
Utilisez les noms d’intervalles complets. Les pluriels sont acceptables. (« Seconde » ou « secondes », pas « sec »).
L’exemple suivant montre comment former un modèle de prévision en utilisant une fréquence d’un jour.
CREATE SNOWFLAKE.ML.FORECAST model1(
INPUT_DATA => TABLE(v1),
TIMESTAMP_COLNAME => 'date',
TARGET_COLNAME => 'sales',
CONFIG_OBJECT => {'frequency': '1 day'}
);
Si vous ne spécifiez pas de fréquence d’événement, le processus d’entraînement déduit la fréquence d’événement correspondante la plus proche.
Compléter les valeurs pour les pas de temps manquants¶
Un horodatage qui n’a pas de valeur cible utilise :
Zéro si le comportement d’agrégation de la valeur cible est SUM (consultez Gestion de plusieurs valeurs dans un pas de temps)
Interpolation linéaire à partir de valeurs proches dans tous les autres cas
Les valeurs de fonctionnalités manquantes ne sont pas remplies, mais plutôt remplacées par des valeurs NULL. L’entraînement du modèle les ignore.
Gestion de plusieurs valeurs dans un pas de temps¶
Lorsqu’il y a plusieurs événements dans un pas de temps, le prétraitement peut agréger leurs valeurs de différentes manières. Par exemple, si la fréquence des événements est horaire, les valeurs qui se produisent en dehors de la cadence horaire peuvent être moyennées pour produire une valeur pour l’horodatage horaire canonique le plus proche.
La table suivante résume les comportements d’agrégation disponibles.
Type de valeur |
Comportements disponibles |
Comportement par défaut |
---|---|---|
Numérique |
|
MEAN |
Catégorique (chaîne ou booléen) |
|
MODE |
Astuce
Utilisez la méthode SUM de comptage de données, telles que le nombre d’articles vendus. MEAN convient à la plupart des autres valeurs numériques.
Tous les comportements ignorent les valeurs NULL et s’appliquent sur la période de temps interpolée ou agrégée. Par exemple, la SUM des valeurs sur une cadence horaire est la somme des valeurs dans l’heure centrée sur l’horodatage canonique.
Vous pouvez remplacer le comportement par défaut d’une colonne de deux manières :
Par type de valeur (cible, numérique ou catégorielle)
Par le nom exact de la colonne
Si vous remplacez les comportements dans les deux sens, le remplacement du nom de colonne est prioritaire.
Remplacement par type de valeur¶
Définissez les options suivantes dans le paramètre de la fonction CONFIG_OBJECT permettant de remplacer des types spécifiques de valeurs : catégorielles, numériques et cibles. Les comportements sont tels que précédemment définis.
Option |
Valeurs possibles |
---|---|
|
MODE, FIRST, LAST |
|
MEAN, MEDIAN, MODE, MIN, MAX, SUM, FIRST, LAST |
|
MEAN, MEDIAN, MODE, MIN, MAX, SUM, FIRST, LAST |
Note
Si aggregation_target
n’est pas spécifié, l’agrégation cible utilise le comportement, le cas échéant, spécifié par aggregate_numeric
. Sinon, la valeur par défaut, MEAN, est utilisée.
L’exemple suivant montre comment définir des comportements d’agrégation pour les fonctionnalités catégorielles et numériques.
CREATE SNOWFLAKE.ML.FORECAST model1(
INPUT_DATA => TABLE(v1),
TIMESTAMP_COLNAME => 'date',
TARGET_COLNAME => 'sales',
CONFIG_OBJECT => {
'frequency': '1 day',
'aggregation_categorical': 'MODE',
'aggregation_numeric': 'MEDIAN'}
);
Astuce
Pensez à spécifier toutes ces valeurs même si vous utilisez les valeurs par défaut. De cette façon, vous n’avez pas besoin de savoir quel est le comportement par défaut pour comprendre ce que fait l’instruction, et si vous souhaitez modifier le comportement ultérieurement, vous n’aurez pas besoin de rechercher le nom du paramètre.
Remplacement par nom de colonne¶
L’option aggregation_column
dans CONFIG_OBJECT est un objet qui mappe les comportements aux noms de colonnes. Ces comportements remplacent tous les comportements spécifiés à l’aide des paramètres décrits ci-dessus.
Note
Le comportement d’agrégation pour la valeur cible ne peut pas être spécifié par le nom de la colonne. Utilisez plutôt l’option aggregation_target
.
Modification suggérée Par exemple, l’instruction SQL suivante spécifie les comportements d’agrégation pour deux colonnes différentes à l’aide de l’option aggregation_column
.
CREATE SNOWFLAKE.ML.FORECAST model1(
INPUT_DATA => TABLE(v1),
TIMESTAMP_COLNAME => 'date',
TARGET_COLNAME => 'sales',
CONFIG_OBJECT => {
'frequency': '1 day',
'aggregation_target': 'MEDIAN',
'aggregation_column': {
'temperature': 'MEDIAN',
'employee_id': 'FIRST'
}
}
);