Détermination automatique du seuil de détection des anomalies

9

Je travaille avec une série chronologique de scores d'anomalies (l'arrière-plan est la détection d'anomalies dans les réseaux informatiques). Chaque minute, j'obtiens un score d'anomalie qui me dit à quel point l'état actuel du réseau est "inattendu" ou anormal. Plus le score est élevé, plus l'état actuel est anormal. Des scores proches de 5 sont théoriquement possibles mais ne se produisent presque jamais.xt[0,5]

Maintenant, je veux proposer un algorithme ou une formule qui détermine automatiquement un seuil pour cette série chronologique d'anomalies. Dès qu'un score d'anomalie dépasse ce seuil, une alarme se déclenche.

La distribution de fréquence ci-dessous est un exemple de série chronologique d'anomalies sur 1 jour. Cependant, il n'est pas sûr de supposer que chaque série chronologique d'anomalies ressemblera à cela. Dans cet exemple spécial, un seuil d'anomalie tel que le quantile .99 aurait un sens puisque les quelques scores à droite peuvent être considérés comme des anomalies.

entrez la description de l'image ici

Et la même distribution de fréquence que les séries chronologiques (elle ne varie que de 0 à 1 car il n'y a pas de scores d'anomalies plus élevés dans la série chronologique):

des séries chronologiques

Malheureusement, la distribution de fréquence peut avoir des formes, où le quantile .99 n'est pas utile . Un exemple est ci-dessous. La queue droite est très basse, donc si le quantile .99 est utilisé comme seuil, cela pourrait entraîner de nombreux faux positifs. Cette distribution de fréquence ne semble pas contenir d'anomalies donc le seuil devrait se situer en dehors de la distribution vers 0,25 environ.

entrez la description de l'image ici

En résumé, la différence entre ces deux exemples est que le premier semble présenter des anomalies alors que le second ne le fait pas.

De mon point de vue naïf, l'algorithme devrait considérer ces deux cas:

  • Si la distribution de fréquence a une grande queue droite (c.-à-d. Quelques scores anormaux), alors le quantile .99 peut être un bon seuil.
  • Si la distribution de fréquence a une queue droite très courte (c.-à-d. Aucun score anormal), alors le seuil doit se situer en dehors de la distribution.

/ edit: Il n'y a pas non plus de vérité fondamentale, c'est-à-dire des ensembles de données étiquetés disponibles. L'algorithme est donc "aveugle" par rapport à la nature des scores d'anomalie.

Maintenant, je ne sais pas comment ces observations peuvent être exprimées en termes d'algorithme ou de formule. Quelqu'un at-il une suggestion sur la façon de résoudre ce problème? J'espère que mes explications sont suffisantes car mes connaissances statistiques sont très limitées.

Merci de votre aide!

cryptron
la source
Juste une note, le premier graphique ne ressemble à rien de normal pour moi.
mpiktas
1
@cryptron, la question clé est de savoir ce qu'est un seuil sonore . Par exemple, si chaque alarme déclenchée et alarme non déclenchée entraîne certains coûts, le seuil peut être choisi de manière à minimiser les coûts totaux. Pour cela, nous avons besoin de données sur les coûts. Sans la définition exacte du son, il est impossible de mesurer comment évaluer la méthode choisie pour choisir le seuil.
mpiktas
@mpiktas: Je dois admettre que le mot "son" était malheureux dans ce contexte car je n'ai aucun moyen d'évaluer rigoureusement le seuil (donc je l'ai édité). Fondamentalement, le seuil est censé minimiser les faux positifs car ils sont beaucoup plus coûteux que les faux négatifs dans la détection des anomalies du réseau.
cryptron
@cryptron, avez-vous des données sur ce qu'est un faux positif?
mpiktas
1
{xt}0<xt50<xt0.5

Réponses:

2

Vous pourriez trouver ce document d'intérêt. Voir également une présentation plus détaillée de modèles similaires dans West & Harrison . Il existe également d'autres exemples de ce type de surveillance, dont beaucoup sont plus récents, mais ce n'est pas exactement ma timonerie :). Il existe sans aucun doute des implémentations appropriées de ces modèles, mais je ne sais pas ce qu'ils pourraient être à la légère ...

L'idée de base est que vous avez un modèle de commutation dans lequel certaines observations / séquences d'observations sont attribuées à des états de réseau anormaux tandis que les autres sont considérés comme normaux. Un mélange comme celui-ci pourrait expliquer la longue queue droite dans votre première parcelle. Un modèle dynamique peut également vous alerter en cas de sauts anormaux comme à 8h00 et 4h00 en temps réel en attribuant une probabilité élevée à de nouvelles observations appartenant à un état problématique. Il pourrait également être facilement étendu pour inclure des éléments tels que les prédicteurs, les composants périodiques (peut-être que votre score augmente / diminue un peu avec l'activité) et ce genre de chose.

Edit: Je dois également ajouter que ce type de modèle est "non supervisé" dans le sens où les anomalies sont détectées soit en montrant un grand décalage moyen ou une augmentation de la variance. Lorsque vous collectez des données, vous pouvez améliorer le modèle avec des distributions antérieures plus informatives. Mais peut-être qu'une fois que vous aurez suffisamment de données (et d'exemples de formation durement gagnés en traitant des problèmes de réseau!), Vous pourriez concevoir des règles de surveillance simples (seuils, etc.)

JMS
la source
1

Avez-vous des exemples «étiquetés» de ce qui constitue une anomalie? c'est-à-dire des valeurs associées à une panne de réseau, ou quelque chose comme ça?

Une idée que vous pourriez envisager d'appliquer est une courbe ROC, qui est utile pour sélectionner des seuils qui répondent à des critères spécifiques, comme maximiser les vrais positifs ou minimiser les faux négatifs.

Bien sûr, pour utiliser une courbe ROC, vous devez étiqueter vos données d'une manière ou d'une autre.

Zach
la source
1
Malheureusement, je n'ai pas de jeux de données étiquetés. Il y a seulement l'hypothèse que de longues queues ou des valeurs aberrantes indiquent des anomalies dans l'ensemble de données.
cryptron
@cryptron je vois. Il vous faut donc un moyen d'identifier dynamiquement les valeurs aberrantes.
Zach
Cela résoudrait une partie du problème, oui.
cryptron
1

Le graphique de la "série originale" ne doit présenter aucune structure prédéfinie. Ce qui est essentiel, c'est que le graphique des «résidus d'une série de modèles appropriée» doit présenter soit une structure gaussienne. Cette "structure gaussienne" peut généralement être obtenue en incorporant une ou plusieurs des "transformations" suivantes: 1. un modèle arima 4. une éventuelle transformation de puissance (logs, etc.) pour faire face à une hétérogénéité de variance spécifique 5. la détection de points dans le temps où le modèle / les paramètres peuvent avoir changé.

La détection des interventions fournira une déclaration sur la signification statistique de l'événement le plus récent suggérant une normalité ou une anomalie

IrishStat
la source
0

Dans la réponse du PO à ma réponse précédente, il a publié ses données sur le Web. 60 lectures par heure pendant 24 heures pendant 6 jours . Étant donné qu'il s'agit de séries chronologiques, les outils comme DBSCAN ont une pertinence limitée car les données ont une dépendance temporelle. Avec des données comme celle-ci, on recherche normalement une structure intra-horaire et intra-journalière. En plus de ces types de structure, on peut poursuivre la détection d'anomalies qui peuvent être soit ponctuelles (impulsion) ou systématiques (changement de niveau) en utilisant des méthodes bien documentées (voir la littérature de Tsay, Tiao, Chen et. al.) Ces procédures ont produit les «anomalies» suivantes. À noter qu'un changement de niveau suggère essentiellement des «grappes» distinctes. principales anomalies identifiées

                                HOUR/MINUTE     TIME
IrishStat
la source
-1

Après qu'un de mes amis m'ait indiqué la direction des algorithmes de clustering , je suis tombé sur DBSCAN qui construit des clusters dans un espace à n dimensions selon deux paramètres prédéfinis. L'idée de base est le clustering basé sur la densité, c'est-à-dire que les régions denses forment des clusters. Les valeurs aberrantes sont renvoyées séparément par l'algorithme. Ainsi, lorsqu'il est appliqué à mon histogramme unidimensionnel, DBSCAN est en mesure de me dire si mes scores d'anomalie présentent des valeurs aberrantes. Remarque: Dans DBSCAN, une valeur aberrante n'est qu'un point qui n'appartient à aucun cluster. Pendant les opérations normales, je m'attends à ce que l'algorithme ne produise qu'un seul cluster (et pas de valeurs aberrantes).

ϵ0.1

Après avoir pu identifier les valeurs aberrantes, trouver le seuil se résume à des règles simples telles que:

  • Si l'ensemble présente des valeurs aberrantes, définissez le seuil entre le cluster «normal» et «aberrant» afin que la marge aux deux soit maximisée.
  • Si l'ensemble ne présente pas de valeurs aberrantes, définissez le seuil d'un écart-type loin du point le plus à droite.

Quoi qu'il en soit, merci pour toutes les réponses utiles!

cryptron
la source
@crypton Comment DBSCAN gère-t-il les séries autocorrélées? Par exemple, une série chronologique 1,9,1,9,1,9,5 aurait une valeur inlier / inhabituelle. Traite-t-il des changements de niveau dans la série ou d'un certain nombre de tendances possibles? Comment traite-t-il les données autorégressives saisonnières où, à part le mois de juin de chaque mois, la série est "régulière" alors que chaque juin la série est "grande". Les «grandes valeurs de juin» sont-elles détectées comme des valeurs aberrantes? Juste curieux !
IrishStat
2
@IrishStat Fondamentalement, les clusters DBSCAN pointent dans un espace à n dimensions. Son aptitude à l'analyse de séries chronologiques est donc très limitée. Cela fonctionne pour mon cas spécial car je n'attends qu'un seul cluster dans mon histogramme (unidimensionnel). Pour répondre à vos questions: Lors de l'utilisation des paramètres appropriés, la valeur 5 de votre exemple serait détectée comme aberrante. Je suppose que cela peut tenir compte des tendances, mais dans les séries temporelles '1, 2, 3, 4, 5, 6, 7, 2', la valeur 2 ne serait pas considérée comme aberrante! J'espère que cela donne une idée approximative des capacités et des limites de DBSCAN.
cryptron
1
@crypton Merci pour l'info. Il me semble que lorsque vous vous référez à 1 cluster, vous voulez dire 1 et seulement 1 moyenne. Même s'il n'y a pas de changement dans l'autocorrélation moyenne dans vos données, cela en fait une "série chronologique", ce qui suggère que DBSCAN peut ne pas être aussi utile que vous le pensez pour séparer le signal du bruit conduisant à une identification efficace des données anamoleuses.
IrishStat
1
@crypton Il me semble qu'un cluster implique 1 moyenne par rapport à une série chronologique qui avait dit 1,1,1,1,2,2,2,2 avec quelques petites déviations autour de ces valeurs.
IrishStat
2
@crpton Je pense que vous utilisez un outil transversal pour un problème de série chronologique. Affichez les données réelles et j'essaierai de vous démontrer la détection d'anomalies avec une analyse de séries chronologiques
IrishStat