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.
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.
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):
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.
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!
la source
Réponses:
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.)
la source
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.
la source
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
la source
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.
la source
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).
Après avoir pu identifier les valeurs aberrantes, trouver le seuil se résume à des règles simples telles que:
Quoi qu'il en soit, merci pour toutes les réponses utiles!
la source