Détection d'anomalies sur séries chronologiques

8

Je suis un débutant utilisant l'apprentissage automatique (j'ai terminé le cours de Ng), j'utilise scikit-learn en python. Je veux trouver le meilleur moyen de détecter les anomalies dans notre système.

Nous avons des événements en cours qui se produisent à un horaire (toutes les quelques minutes / heures), et je veux détecter quand quelque chose d'anormal se produit. Exemples de données:

ID | epoch-time | duration (Sec) | status | is_manual

0400 | 1488801454  | 500 | completed | 1

0401 | 1488805055  | 500 | completed | 1

0402 |  1488812254  | 40000 | failed | 1

6831 | 1488805050  | 200 | failed | 0

.

... (Millions of examples)

.

0014 |  1488805055 | 1200 | completed | 0

ainsi, par exemple, l'ID d'événement 0400 se produit toutes les heures. Je veux dire quand il ne fonctionne pas.

Ce que je prévois de faire est d'alimenter l'algorithme de tous les événements des 10 dernières minutes.

Questions principales: Comment traiter la colonne ID? Quelle est la meilleure approche à adopter?

XOmri
la source
Une anomalie est-elle la même qu'une valeur aberrante? En statistique, nous utilisons le terme de valeur aberrante, tandis qu'en science spatiale, ils appellent cela une anomalie.
Michael R. Chernick
Différence entre l'outliner et l'anomalie: stats.stackexchange.com/questions/189664/…
XOmri
Pouvez-vous nous en dire un peu plus sur ce qu'est un événement dans ce cas? Combien d'événements uniques se trouvent approximativement dans vos données? Vous avez également donné un exemple dans lequel le comportement «anormal» était l'échec de l'événement. Y a-t-il d'autres cas que vous considéreriez comme anormaux?
deemel
@Rickyfox Par événement, je veux dire une ligne ou une entrée. Il était faux d'utiliser le même identifiant pour différents événements, et je l'ai corrigé dans la question. Anormal serait le cas où un événement n'est pas cohérent avec les événements précédents qui sont corrélés en fonction du temps. Par exemple: si toutes les 30 secondes, un événement se produisant avec les mêmes paramètres (durée: 500, terminé, 1), alors s'il n'y a pas eu d'événement après 30 secondes, c'est anormal. Ou si elle échoue et n'est pas terminée: c'est aussi une anomalie.
XOmri
Je ne vois pas comment vous avez besoin de ML ici. Il semble qu'une simple requête conditionnelle devrait fonctionner
correctement

Réponses:

1

J'ai trouvé cet article très utile dans mon cas:

https://mapr.com/blog/deep-learning-tensorflow/

En utilisant cette structure RNN de base, j'ai pu prédire le résultat du prochain pas de temps. En centrant tous les événements sur la minute la plus proche, le réseau a pu reconnaître le modèle qui correspond à la chronologie.

XOmri
la source
-5

Vous pouvez résoudre ce problème de plusieurs manières. Avant de vous lancer dans la conception de modèles, standardisez vos données. Vos données ne semblent pas étiquetées, donc au départ, vous pouvez effectuer une visualisation t-SNE qui vous donnera beaucoup d'informations sur vos données. Sur la base de son résultat, vous pouvez développer des modèles plus sensibles qui peuvent regrouper les échantillons en échantillons normaux et anomalies. Plus d'informations sur t-SNE ici

S. P
la source
2
Bienvenue sur stats.SE! Le centre d'aide contient de bonnes informations sur la manière de poser / répondre aux questions. Les réponses détaillées sont généralement les meilleures. Pouvez-vous élaborer un peu plus? Par exemple, comment le t-SNE serait-il utilisé avec des données de séries chronologiques et des entrées «id» discrètes, et comment serait-il utilisé pour aider à concevoir un système de détection d'anomalies?
user20160
Je cherche à visualiser les données avec t-SNE selon votre suggestion, mais je ne sais pas jusqu'où vais-je aller avec. Nous avons plusieurs autres fonctionnalités à ajouter que je n'ai pas mentionnées, je vais les modifier et les ajouter au message. Je ne sais toujours pas quoi faire une fois que la visualisation fonctionne
XOmri
De plus, le t-SNE dépend fortement des hyperparamètres et ne préserve pas les distances, alors comment trouveriez-vous exactement les valeurs aberrantes en fonction de celui-ci ..? Oui, cela vous permettrait de trouver des points étranges, mais ce serait la cueillette des cerises.
Tim