Contexte
Je travaille dans le centre d'opérations réseau, nous surveillons les systèmes informatiques et leurs performances. L'un des indicateurs clés à surveiller est le nombre de visiteurs \ clients actuellement connectés à nos serveurs. Pour le rendre visible, nous (l'équipe d'opérations) collectons des métriques telles que des données de séries chronologiques et des graphiques. Le graphite nous permet de le faire, il a une API assez riche que j'utilise pour construire un système d'alerte afin d'avertir notre équipe en cas de chutes soudaines (principalement) et d'autres changements. Pour l'instant, j'ai défini un seuil statique basé sur la valeur moyenne, mais cela ne fonctionne pas très bien (il y a beaucoup de faux positifs) en raison d'une charge différente pendant la journée et la semaine (facteur de saisonnalité).
Cela ressemble à quelque chose comme ça:
Les données réelles (un exemple pour une métrique, intervalle de temps de 15 minutes; le premier nombre est un nombre d'utilisateurs, le deuxième horodatage):
[{"target": "metric_name", "datapoints": [[175562.0, 1431803460], [176125.0, 1431803520], [176125.0, 1431803580], [175710.0, 1431803640], [175710.0, 1431803700], [175733.0, 1431803760], [175733.0, 1431803820], [175839.0, 1431803880], [175839.0, 1431803940], [175245.0, 1431804000], [175217.0, 1431804060], [175629.0, 1431804120], [175104.0, 1431804180], [175104.0, 1431804240], [175505.0, 1431804300]]}]
Ce que j'essaie d'accomplir
J'ai créé un script Python qui reçoit les points de données récents, les compare à la moyenne historique et avertit en cas de changement soudain ou de chute. En raison de la saisonnalité, le seuil "statique" ne fonctionne pas correctement et le script génère des alertes de faux positifs. Je souhaite améliorer un algorithme d'alerte pour le rendre plus précis et le faire fonctionner sans réglage constant du seuil d'alerte.
De quel conseil ai-je besoin et des choses que j'ai découvertes
En cherchant sur Google, je me suis dit que je cherchais des algorithmes d'apprentissage automatique pour la détection des anomalies (non supervisés). Une enquête plus approfondie a montré qu'il y en avait des tonnes et il est très difficile de comprendre laquelle est applicable dans mon cas. En raison de mes connaissances limitées en mathématiques, je ne peux pas lire de documents académiques sophistiqués et je cherche quelque chose de simple pour un débutant dans le domaine.
J'aime Python et je connais un peu R, donc je serai heureux de voir des exemples pour ces langages. Veuillez recommander un bon livre ou un article qui m'aidera à résoudre mon problème. Merci pour votre temps et excusez-moi pour une si longue description
Liens utiles
Questions similaires:
- Détection de séries chronologiques et d'anomalies
- Détection d'anomalies de séries temporelles avec Python
- Anomalies de séries chronologiques
- Algorithmes pour la détection d'anomalies de séries chronologiques
- Application des ondelettes aux algorithmes de détection d'anomalies basés sur des séries chronologiques
- Quel algorithme devrais-je utiliser?
Ressources externes:
auto.arima
fonction de l'excellent forecast
package de R (voir jstatsoft.org/v27/i03/paper ). Vous pouvez régler les niveaux de confiance en ajustant le level
paramètre, par exemple data.model <- auto.arima(data.zoo, ic = c("bic")); data.prediction.warningLimits <- forecast(data.model, h=1, level=0.99)
.