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

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 :

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 : moyenne des valeurs

  • MEDIAN : valeur médiane

  • MODE : valeur la plus fréquente

  • MIN : valeur la plus basse

  • MAX : valeur la plus élevée

  • SUM : total des valeurs

  • FIRST : valeur la plus ancienne

  • LAST : dernière valeur

MEAN

Catégorique (chaîne ou booléen)

  • MODE : valeur la plus fréquente

  • FIRST : valeur la plus ancienne

  • LAST : dernière valeur

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

aggregation_categorical

MODE, FIRST, LAST

aggregation_numeric

MEAN, MEDIAN, MODE, MIN, MAX, SUM, FIRST, LAST

aggregation_target

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

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