ANOMALY_DETECTION

Nom complet : SNOWFLAKE.ML.ANOMALY_DETECTION

La détection des anomalies vous permet de détecter les valeurs aberrantes dans vos données de séries temporelles à l’aide d’un algorithme de machine learning. Vous utilisez CREATE SNOWFLAKE.ML.ANOMALY_DETECTION pour créer et entraîner le modèle de détection, puis vous utilisez la méthode <nom>!DETECT_ANOMALIES pour détecter les anomalies.

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.

CREATE SNOWFLAKE.ML.ANOMALY_DETECTION

Crée un objet que vous utilisez pour détecter les anomalies ou remplace l’objet de détection d’anomalies portant le même nom.

Syntaxe

CREATE [ OR REPLACE ] SNOWFLAKE.ML.ANOMALY_DETECTION <name>(
  INPUT_DATA => <reference_to_training_data>,
  [ SERIES_COLNAME => '<series_column_name>', ]
  TIMESTAMP_COLNAME => '<timestamp_column_name>',
  TARGET_COLNAME => '<target_column_name>',
  LABEL_COLNAME => '<label_column_name>',
  [ CONFIG_OBJECT => <config_object> ]
)
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ COMMENT = '<string_literal>' ]
Copy

Paramètres

name

Indique l’identificateur (nom) de l’objet de détection d’anomalies ; doit être unique pour le schéma dans lequel l’objet est créée.

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 => reference_to_training_data

Spécifie une référence à la table, à la vue ou à la requête qui renvoie les données d’entraînement pour le modèle.

Pour créer cette référence, appelez SYSTEM$REFERENCE ou SYSTEM$QUERY_REFERENCE.

TIMESTAMP_COLNAME => 'timestamp_column_name'

Spécifie le nom de la colonne contenant les horodatages (TIMESTAMP_NTZ) dans les données de séries temporelles.

TARGET_COLNAME => 'target_column_name'

Spécifie le nom de la colonne contenant les données (NUMERIC ou FLOAT) à analyser.

LABEL_COLNAME => 'label_column_name'

Spécifie le nom de la colonne contenant les balises des données. Les balises sont des valeurs booléennes (vrai/faux) indiquant si une ligne donnée est une anomalie connue. Si vous ne disposez pas de données balisées, indiquez une chaîne vide ('') pour cet argument.

Facultatif :

SERIES_COLNAME => 'series_column_name'

Nom de la colonne contenant l’identificateur de la série (pour plusieurs séries temporelles). Cette colonne doit être un VARIANT, car elle peut contenir n’importe quel type de valeur ou une combinaison de valeurs provenant de plusieurs colonnes d’un tableau.

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 gestion des erreurs pour l’entraînement. Cette fonction est particulièrement utile lors de l’entraînement de plusieurs séries. Valeurs prises en charge :

  • 'abort' : abandonner l’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 pour d’autres séries temporelles. Pour connaître les séries qui ont échoué lors de l’entraînement du modèle, appelez la méthode <nom>!SHOW_TRAINING_LOGS du modèle.

Notes sur l’utilisation

  • Si les noms de colonnes spécifiés par les arguments TIMESTAMP_COLNAME, TARGET_COLNAME ou LABEL_COLNAME n’existent pas dans la table, la vue ou la requête spécifiée par l’argument INPUT_DATA, une erreur se produit.

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

SHOW SNOWFLAKE.ML.ANOMALY_DETECTION

Répertorie tous les modèles de détection d’anomalies.

Syntaxe

SHOW SNOWFLAKE.ML.ANOMALY_DETECTION [ 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

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.ANOMALY_DETECTION

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.ANOMALY_DETECTION [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>!DETECT_ANOMALIES

Détecte et signale les anomalies dans les données d’entrée transmises à la méthode. Il s’agit d’une méthode de l’objet de détection d’anomalies que vous créez en exécutant la commande CREATE SNOWFLAKE.ML.ANOMALY_DETECTION.

La méthode renvoie un tableau dans lequel chaque ligne des données d’entrée est qualifiée d’anormale ou non.

Syntaxe

<name>!DETECT_ANOMALIES(
  INPUT_DATA => <reference_to_data_to_analyze>,
  TIMESTAMP_COLNAME => '<timestamp_column_name>',
  TARGET_COLNAME => '<target_column_name>',
  [ CONFIG_OBJECT => <configuration_object>, ]
  [ SERIES_COLNAME => '<series_column_name>' ]
)
Copy

Note

name est l’objet que vous créez en exécutant la commande CREATE SNOWFLAKE.ML.ANOMALY_DETECTION.

Arguments

Obligatoire :

INPUT_DATA => reference_to_data_to_analyze

Référence à la table, à la vue ou à la requête qui renvoie les données à analyser.

TIMESTAMP_COLNAME => 'timestamp_column_name'

Nom de la colonne contenant les horodatages (TIMESTAMP_NTZ) dans les données de séries temporelles.

TARGET_COLNAME => 'target_column_name'

Nom de la colonne contenant les données à analyser (type NUMERIC ou FLOAT).

Facultatif :

SERIES_COLNAME => 'series_column_name'

Nom de la colonne contenant l’identificateur de la série (pour plusieurs séries temporelles). Cette colonne doit être un VARIANT, car elle peut contenir n’importe quel type de valeur ou des valeurs provenant de plusieurs colonnes d’un tableau.

CONFIG_OBJECT => config_object

OBJECT contenant des paires clé-valeur utilisées pour configurer la tâche de détection d’anomalie.

Clé

Type

Par défaut

Description

prediction_interval

FLOAT

0,99

Valeur comprise entre 0 et 1 qui spécifie le pourcentage des observations qui doivent être marquées comme des anomalies :

  • Pour une détection moins stricte des anomalies (c’est-à-dire pour identifier moins d’observations marquées comme des anomalies), indiquez une valeur plus élevée.

  • Pour une détection plus stricte des anomalies (c’est-à-dire pour identifier davantage d’observations comme des anomalies), réduisez cette valeur.

on_error

STRING

'ABORT'

Chaîne (constante) qui spécifie le traitement des erreurs pour la tâche de détection des anomalies. Cette fonction est particulièrement utile pour détecter des anomalies dans plusieurs séries. Valeurs prises en charge :

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

  • 'skip' : ignorer toute série temporelle pour laquelle la détection d’anomalie a rencontré une erreur. Cela permet de détecter les anomalies avec succès pour d’autres séries temporelles. Les séries qui ont échoué sont absentes des résultats.

Sortie

La fonction renvoie les colonnes suivantes :

Nom de la colonne

Type de données

Description

TS

TIMESTAMP_NTZ

Horodatages des données

Y

FLOAT

Valeurs des séries temporelles

FORECAST

FLOAT

Valeur prédite au moment de l’horodatage.

LOWER_BOUND

FLOAT

Limite inférieure de la valeur dans l’intervalle de prédiction. Les valeurs inférieures à ce seuil sont signalées comme des anomalies.

UPPER_BOUND

FLOAT

Limite supérieure de la valeur dans l’intervalle de prédiction. Les valeurs supérieures à ce seuil sont signalées comme des anomalies.

IS_ANOMALY

BOOLEAN

Vrai si la valeur est une anomalie ; faux si elle ne l’est pas.

PERCENTILE

FLOAT

Centile correspondant de la valeur Y observée compte tenu de l’intervalle de prédiction.

Si le centile est en dehors de ((1 - alpha) / 2, 1 - (1 - alpha) / 2), la valeur est signalée comme une anomalie. Par exemple, si l’intervalle de prédiction est 0,95, un centile de 0,96 ne serait pas une anomalie, mais un centile de 0,98 le serait.

Si le champ prediction_interval n’est pas spécifié dans l’objet de configuration, la valeur par défaut est de 0,99.

DISTANCE

FLOAT

Multiple de l’écart type de la colonne FORECAST (z-score)

Notes sur l’utilisation

  • Les colonnes des données spécifiées dans la commande CREATE SNOWFLAKE.ML.ANOMALY_DETECTION (dans l’argument du constructeur INPUT_DATA) doivent correspondre aux colonnes des données spécifiées dans l’argument INPUT_DATA de cette méthode.

    Par exemple, si vous avez transmis l’argument SERIES_COLNAME à la commande CREATE SNOWFLAKE.ML.ANOMALY_DETECTION , vous devez également transmettre l’argument SERIES_COLNAME à cette méthode. Si vous avez omis l’argument SERIES_COLNAME dans la commande, vous devez omettre cet argument ici.

  • Si les noms de colonnes spécifiés par les arguments TIMESTAMP_COLNAME ou TARGET_COLNAME n’existent pas dans la table, la vue ou la requête spécifiée par l’argument INPUT_DATA, une erreur se produit.

<nom>!EXPLAIN_FEATURE_IMPORTANCE

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

Syntaxe

<name>!EXPLAIN_FEATURE_IMPORTANCE();
Copy

Sortie

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)

RANK

INTEGER

Le rang d’importance d’une fonction pour une série spécifique

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 votre 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

La source de la fonction, une parmi :

  • user_provided

  • derived_from_timestamp

  • derived_from_endogenous

<nom>!SHOW_TRAINING_LOGS

Renvoie les journaux de l’entraînement des modèles. La sortie est différente de NULL uniquement lorsque 'ON_ERROR' = 'SKIP' est défini dans l’entraînement CONFIG_OBJECT.

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. Présente uniquement si le modèle a été entraîné avec plusieurs séries temporelles.

LOGS

OBJECT

Un journal des erreurs rencontrées pendant l’entraînement. La valeur de la clé Errors est un tableau d’erreurs d’entraînement. Si aucune erreur n’a été rencontrée, la colonne LOGS est NULL.