Estoy trabajando con una serie temporal de puntajes de anomalías (el fondo es la detección de anomalías en redes de computadoras). Cada minuto, obtengo un puntaje de anomalía que me dice cuán "inesperado" o anormal es el estado actual de la red. Cuanto más alto sea el puntaje, más anormal será el estado actual. Los puntajes cercanos a 5 son teóricamente posibles pero ocurren casi nunca.
Ahora quiero proponer un algoritmo o una fórmula que determine automáticamente un umbral para esta serie temporal de anomalías. Tan pronto como un puntaje de anomalía excede este umbral, se activa una alarma.
La distribución de frecuencias a continuación es un ejemplo para una serie temporal de anomalías durante 1 día. Sin embargo, es no seguro asumir que cada serie de tiempo anomalía se va a ver así. En este ejemplo especial, un umbral de anomalía como el cuantil .99 tendría sentido ya que los pocos puntajes de la derecha pueden considerarse anomalías.
Y la misma distribución de frecuencia que las series de tiempo (solo varía de 0 a 1 ya que no hay puntajes de anomalías más altos en la serie de tiempo):
Desafortunadamente, la distribución de frecuencia puede tener formas, donde el cuantil .99 no es útil . Un ejemplo está abajo. La cola derecha es muy baja, por lo que si se utiliza el cuantil .99 como umbral, esto podría dar lugar a muchos falsos positivos. Esta distribución de frecuencia no parece contener anomalías, por lo que el umbral debería estar fuera de la distribución en alrededor de 0.25.
En resumen, la diferencia entre estos dos ejemplos es que el primero parece exhibir anomalías mientras que el segundo no.
Desde mi punto de vista ingenuo, el algoritmo debería considerar estos dos casos:
- Si la distribución de frecuencia tiene una cola derecha grande (es decir, un par de puntajes anormales), el cuantil .99 puede ser un buen umbral.
- Si la distribución de frecuencia tiene una cola derecha muy corta (es decir, sin puntajes anormales), entonces el umbral debe estar fuera de la distribución.
/ edit: tampoco existe una verdad básica, es decir, conjuntos de datos etiquetados disponibles. Por lo tanto, el algoritmo es "ciego" frente a la naturaleza de los puntajes de anomalías.
Ahora no estoy seguro de cómo se pueden expresar estas observaciones en términos de un algoritmo o una fórmula. ¿Alguien tiene alguna sugerencia de cómo se podría resolver este problema? Espero que mis explicaciones sean suficientes ya que mi experiencia estadística es muy limitada.
¡Gracias por tu ayuda!