Partager via


Détection des anomalies de série chronologique

Important

Le support de Machine Learning Studio (classique) prend fin le 31 août 2024. Nous vous recommandons de passer à Azure Machine Learning avant cette date.

À partir du 1er décembre 2021, vous ne pourrez plus créer de nouvelles ressources Machine Learning Studio (classique). Jusqu’au 31 août 2024, vous pouvez continuer à utiliser les ressources Machine Learning Studio (classique) existantes.

La documentation ML Studio (classique) est en cours de retrait et ne sera probablement plus mise à jour.

Détecte les anomalies dans les données de série chronologique d’entrée.

Catégorie : Série chronologique

Notes

S’applique à : Machine Learning Studio (classique) uniquement

Des modules par glisser-déposer similaires sont disponibles dans Concepteur Azure Machine Learning.

Vue d’ensemble du module

Cet article explique comment utiliser le module Détection des anomalies time Series dans Machine Learning Studio (classique) pour détecter les anomalies dans les données de série chronologique. Le module apprend les caractéristiques d’exploitation normales d’une série chronologique que vous fournissez en tant qu’entrée et utilise ces informations pour détecter les écarts du modèle normal. Le module peut détecter les changements dans la tendance globale et les changements dans l’ampleur ou la plage de valeurs.

La détection des modifications dans les données de série chronologique a des applications étendues. Par exemple, vous pouvez l’utiliser pour la surveillance quasi en temps réel des capteurs, des réseaux ou de l’utilisation des ressources. En suivant les erreurs de service, l’utilisation du service et d’autres indicateurs de performance clés, vous pouvez répondre rapidement aux anomalies critiques. D’autres applications incluent les soins de santé et les finances.

Méthodes de détection d’anomalies

La détection des anomalies est le problème de recherche de modèles dans les données qui ne sont pas conformes à un modèle de comportement « normal ». Les approches classiques de détection de ces modifications utilisent des seuils calculés humains simples, ou un écart moyen et standard pour déterminer quand les données s’écartent considérablement de la moyenne.

Toutefois, ces approches simples ne sont pas facilement adaptées aux données de série chronologique :

  • Un grand nombre de fausses anomalies sont générés

  • Les méthodes ne s’appliquent pas à la modification des valeurs de données

  • Impossible de mettre facilement à l’échelle vers de grandes séries chronologiques

Ce module fournit deux méthodes supplémentaires pour évaluer la variance d’une tendance de série chronologique :

  • Mesure de l’ampleur des changements vers le haut et vers le bas

    Par exemple, le nombre de requêtes sur un service web peut être préférable pendant un certain temps, puis augmenter considérablement.

  • Mesure de la direction et de la durée des tendances : changements positifs et négatifs

    Par exemple, une tendance à la hausse persistante de la longueur d’une file d’attente de service peut indiquer un problème sous-jacent. Même si la tendance globale augmente constamment et peut donc être considérée comme stable, un changement de pente peut être marqué comme une anomalie. À l’inverse, si vous surveillez l’utilisation de la mémoire d’un serveur, une diminution constante de la taille de mémoire libre peut indiquer un problème.

Exemples de modèles anormaux dans les séries chronologiques

Changements de niveau vers le haut et vers le bas

Par exemple, supposons que vous surveillez le nombre de demandes par jour vers un service web sur une période donnée et que le nombre de requêtes semble rester dans une certaine plage. Toutefois, après une mise à jour du service web, le nombre de demandes apportées à ce service web change. La nouvelle tendance peut être supérieure ou inférieure à la tendance d’origine; Les pics vers le haut et vers le bas peuvent être détectés.

upward and downward level changes

Changements de tendances positives ou négatives

Par exemple, supposons que vous surveillez la longueur d’une file d’attente sur un site de support du service. Une tendance à la hausse persistante peut indiquer un problème de service sous-jacent.

Dans d’autres cas, une tendance négative persistante peut être l’anomalie. Par exemple, si vous surveillez l’utilisation de la mémoire sur un serveur, lorsque la taille de mémoire libre diminue, cela peut indiquer une fuite de mémoire potentielle.

positive or negative trend change

Ressources

Pour plus d’informations sur la recherche sous-jacente à cette approche, consultez les articles suivants :

Guide pratique pour configurer la détection des anomalies de série chronologique

  1. Ajoutez le module Détection des anomalies time Series à votre expérience et connectez le jeu de données qui contient la série chronologique.

    Le jeu de données utilisé comme entrée doit contenir au moins une colonne contenant des valeurs datetime au format de chaîne et une autre colonne qui contient les valeurs de tendance, dans un format numérique. Les autres colonnes sont ignorées.

    Étant donné que chaque ligne correspond à un point de données dans la série chronologique représentant la valeur à ce moment-là, les valeurs chronologiques doivent être uniques.

  2. Colonne de données : sélectionnez une seule colonne dans votre jeu de données qui contient des valeurs de données numériques. Ces valeurs sont les points de données de la tendance que vous souhaitez modéliser, telles que les totaux de population au fil du temps, les coûts par mois ou les températures sur une période donnée.

  3. Colonne de temps : sélectionnez une colonne unique dans votre jeu de données qui contient la valeur de série chronologique associée.

    La colonne doit contenir des valeurs datetime valides, ce qui signifie que toutes les dates doivent se trouver dans la plage de dates prises en charge par .NET Framework.

    La colonne Heure doit utiliser le type de données DateTime. Si vos dates sont au format chaîne, vous pouvez les caster à l’aide du module Appliquer SQL Transformation ou les convertir à l’aide du module Exécuter un script R. Si vos dates sont représentées sous forme d’entiers, vous devez également utiliser une fonction de conversion datetime appropriée pour représenter les valeurs à l’aide d’un format datetime valide.

    Par exemple, l’instruction SQL suivante modifie une valeur de date série Excel au format datetime :

     SELECT CAST([SerialDate]  AS SmallDateTime) as [NewValidDate] from t1;  
    

    Une fois les valeurs de date au format correct, utilisez le module Modifier les métadonnées pour définir le type de colonne sur DateTime.

  4. Type Martingale : Sélectionnez la fonction martingale à utiliser.

    • PowerAvg. Cette option est une implémentation marginale du pouvoir martingale.

      La valeur par défaut est PowerAvg sans paramètres supplémentaires. Cette option offre un détecteur d’anomalies plus stable et doit être adaptée à la plupart des besoins.

    • Pouvoir. Mise en œuvre non marginale du pouvoir martingale.

      L’option Power permet aux utilisateurs de fournir une valeur comprise entre 0 et 1 pour le paramètre Epsilon pour contrôler la sensibilité du détecteur. En règle générale, une valeur epsilon plus élevée signifie une sensibilité plus élevée aux anomalies, mais moins de certitude.

    Pour obtenir une définition de martingales et les méthodes utilisées dans ce module, consultez : Détection des anomalies à l’aide du Machine Learning pour détecter des anomalies dans les données de série chronologique

  5. Type de fonction étrange : cette option est utilisée pour définir différents types d’anomalies. Trois options sont prises en charge, ce qui ne nécessite aucun paramètre supplémentaire :

    • RangePercentile.

      Il s’agit de la valeur par défaut et est principalement utilisé pour détecter les modifications de niveau.

    • SlowPosTrend. Choisissez cette option pour détecter les changements de tendance positifs.

    • SlowNegTrend. Choisissez cette option pour détecter les changements de tendance négatifs.

  6. Longueur de Martingale et Valeurs étranges : spécifiez la taille de la fenêtre d’historique, qui est utilisée pour calculer les valeurs martingale sur l’historique de recherche.

    La valeur par défaut est 500, mais vous pouvez spécifier n’importe quel entier compris entre 0 et 5000. Pour les séries chronologiques volumineuses, la valeur par défaut doit fonctionner correctement. Pour les séries chronologiques plus petites, vous pouvez essayer d’estimer la valeur de la longueur attendue du comportement anormal.

    Nous vous recommandons généralement de définir ces deux paramètres sur la même valeur.

  7. Longueur des valeurs d’étrangeté : spécifiez la longueur de la fenêtre d’historique utilisée pour calculer l’étrangeté à chaque point de données.

    La valeur par défaut est 500, mais vous pouvez spécifier n’importe quel entier compris entre 0 et 5000.

    Ce paramètre a les mêmes restrictions que Length of Martingale. Autrement dit, vous devez définir la valeur sur le nombre estimé de points de données nécessaires pour apprendre le comportement « normal ».

    La valeur par défaut de 500 fonctionne bien pour la plupart des cas, mais si l’échelle sur laquelle la « normalcy » est mesurée varie, il peut être utile de rendre Length of Strangeness Values une valeur supérieure à Length of Martingale.

    Par exemple, si vous surveillez les erreurs et supposons que les points de données sont capturés à intervalles de 15 minutes, le temps nécessaire pour apprendre la tendance normale peut varier considérablement de mois à mois.

    En général, l’utilisation d’une taille de fenêtre plus grande entraîne des performances plus lentes, car le module doit apprendre sur un jeu de données plus grand.

    Nous vous recommandons généralement de définir ces deux paramètres sur la même valeur.

  8. Seuil d’alerte : spécifiez une valeur au-dessus de laquelle le score d’anomalie génère une alerte.

    La valeur par défaut est 3,25, ce qui signifie qu’une alerte est générée pour chaque ligne contenant un score de 3,25 ou plus. O

    Vous pouvez spécifier n’importe quel nombre à virgule flottante compris entre 0 et 100. Toutefois, il existe un compromis entre sensibilité et confiance dans le choix du seuil :

    • Un seuil inférieur rend le détecteur plus sensible aux anomalies et génère davantage d’alertes.

    • Un seuil inférieur peut entraîner des modifications normales mal classifiées en tant qu’anomalies.

  9. Exécutez l’expérience.

    Notez que vous n’avez pas besoin d’entraîner ce modèle séparément ; l’algorithme apprend le modèle des données que vous fournissez en tant qu’entrée dans ce module.

Résultats

Lorsque l’entraînement est terminé, le module génère une série chronologique identique à celle de la série chronologique d’entrée; toutefois, deux colonnes sont ajoutées pour indiquer les valeurs potentiellement anormales.

  • Score d’anomalie : la première colonne contient un score qui représente la probabilité que la valeur de série chronologique soit anormale.

  • Alerte : cette colonne contient un indicateur dont la valeur est 0 ou 1, où 1 signifie qu’une anomalie a été détectée. Vous pouvez définir le seuil pour générer l’alerte en fonction de la colonne de score, mais définir le paramètre Seuil d’alerte .

Exemples

Les exemples suivants montrent comment définir la fonction martingale pour détecter les anomalies et comment interpréter les résultats.

Détecter les modifications au niveau

Pour illustrer l’impact des différents paramètres, l’exemple de jeu de données utilisé dans cet exemple se compose de 8870 points de données, avec trois modifications de niveau. En fonction de ces données, nous avons créé deux modèles à l’aide des paramètres suivants.

  • Martingale Type: PowerAvg

  • Type de fonction Étrangeté : RangePercentile

  • Longueur de Martingale = 50

  • Longueur des valeurs d’étrangeté = 50

Le modèle a été entraîné sur les données entrantes, mais une valeur différente a été appliquée pour le seuil d’alerte. Les résultats de la prédiction sont tracés dans les images suivantes pour Model 1 et Model 2. Dans ces graphiques, les lignes bleues représentent les valeurs de données et les lignes rouges représentent les alertes déclenchées pour une anomalie.

Seuil d’alerte de 0,9

level change with alert of 0.9

Dans ce modèle, la valeur de seuil est inférieure, et par conséquent, les alertes sont déclenchées (anomalies détectées) même lorsque les modifications sont momentanées.

Selon le type de série chronologique que vous surveillez, certaines de ces alertes peuvent être considérées comme des fausses alertes. Toutefois, un seuil inférieur peut être préférable si vous ne pouvez pas vous permettre d’ignorer n’importe quelle anomalie.

Seuil d’alerte de 3,25

level change with alert of 3.25

Dans ce modèle, le seuil d’alerte était beaucoup plus élevé et, par conséquent, le modèle détecte uniquement ces modifications qui persistent plus longtemps. Un seuil plus élevé pour les alertes peut être plus souhaitable dans un scénario où vous ne souhaitez intercepter que des modifications plus durables.

Détecter les changements de pente positifs

Pour illustrer cette option pour la détection d’anomalies, nous avons utilisé un exemple de jeu de données contenant 300 points de données. Tous les points ont formé une tendance positive dans l’ensemble, avec deux anomalies.

Là encore, nous avons créé deux modèles à l’aide de paramètres identiques, à l’exception de la valeur de seuil d’alerte.

  • Martingale Type: PowerAvg

  • Type de fonction Étrangeté : SlowPosTrend

  • Longueur de Martingale = 50

  • Longueur des valeurs d’étrangeté = 50

Dans ces graphiques, les lignes bleues représentent des valeurs de données et les lignes rouges représentent des alertes déclenchées pour une anomalie.

Seuil d’alerte de 4,25

positive trend with alert of 4.25

Seuil d’alerte de 6.0

positive trend with alert threshold of 6.0

Nous vous recommandons d’expérimenter différentes valeurs de seuil d’alerte pour trouver le niveau de sensibilité approprié pour votre scénario de détection d’anomalie.

Entrées attendues

Nom Type Description
Données d’entrée contenant des horodatages et des valeurs Table de données Données d’entrée contenant des horodatages et des valeurs de date-heure.

Paramètres du module

Nom Type Plage Facultatif Default Description
Colonne valeur ColumnSelection Obligatoire Choisissez la colonne qui contient la série chronologique à suivre
Taille de la fenêtre Integer Obligatoire Spécifier une valeur qui contrôle la taille de la fenêtre d’analyse
Seuil Float Facultatif Spécifiez une valeur qui détermine le seuil du score pour identifier une anomalie

Sorties

Nom Type Description
Série chronologique annotée avec des scores d’anomalie Table de données Jeu de données avec intervalles d’anomalies.

Voir aussi

Détection d’anomalie
Machine à vecteurs de support à une classe
Détection des anomalies basée sur l'analyse en composantes principales (ACP)