Antecedentes
Trabajo en el Centro de Operaciones de Red, donde supervisamos los sistemas informáticos y su rendimiento. Una de las métricas clave a supervisar es el número de visitantes \customers actualmente conectado a nuestros servidores. Para hacerlo visible, nosotros (el equipo de operaciones) recopilamos métricas como datos de series temporales y dibujamos gráficos. Grafito nos permite hacerlo, tiene una API bastante rica que utilizo para construir un sistema de alertas para notificar a nuestro equipo si se producen caídas repentinas (en su mayoría) y otros cambios. Por ahora he establecido un umbral estático basado en el valor medio, pero no funciona muy bien (hay muchos falsos positivos) debido a la diferente carga durante el día y la semana (factor de estacionalidad).
Se parece a esto:
Los datos reales (un ejemplo para una métrica, rango de tiempo de 15 minutos; el primer número es un número de usuarios, el segundo - sello de tiempo ):
[{"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]]}]
Lo que intento conseguir
He creado un script en Python que recibe puntos de datos recientes, los compara con la media histórica y alerta si hay un cambio o una caída repentina. Debido a la estacionalidad, el umbral "estático" no funciona bien y el script genera alertas falsas. Quiero mejorar un algoritmo de alerta para que sea más preciso y que funcione sin necesidad de ajustar constantemente el umbral de alerta.
Qué consejos necesito y qué cosas he descubierto
Buscando en Google me di cuenta de que estoy buscando algoritmos de aprendizaje automático para la detección de anomalías (no supervisados). Investigando un poco más, me di cuenta de que hay montones de ellos y es muy difícil entender cuál es el aplicable en mi caso. Debido a mis limitados conocimientos de matemáticas no puedo leer sofisticados artículos académicos y estoy buscando algo sencillo para un principiante en el campo.
Me gusta Python y estoy un poco familiarizado con R, así que estaré encantado de ver ejemplos para estos lenguajes. Por favor, recomiende un buen libro o artículo que me ayude a resolver mi problema. Gracias por su tiempo y discúlpenme por una descripción tan larga
Enlaces útiles
Preguntas similares:
- Series temporales y detección de anomalías
- Detección de anomalías en series temporales con Python
- Anomalías de las series temporales
- Algoritmos para la detección de anomalías en las series temporales
- Aplicación de wavelets a algoritmos de detección de anomalías basados en series temporales
- ¿Qué algoritmo debo utilizar?
Recursos externos: