Determinación automática del umbral para la detección de anomalías.

9

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.xt[0,5]

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.

ingrese la descripción de la imagen aquí

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):

series 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.

ingrese la descripción de la imagen aquí

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!

cryptron
fuente
Solo una nota, el primer gráfico no parece nada normal para mí.
mpiktas
1
@cryptron, la pregunta clave es qué es un umbral de sonido . Por ejemplo, si cada alarma aumentada y la alarma no aumentada incurre en ciertos costos, el umbral se puede elegir de manera que minimice los costos totales. Para eso necesitamos datos de costos. Sin la definición exacta del sonido , es imposible medir cómo evaluar el método elegido para elegir el umbral.
mpiktas
@mpiktas: Tengo que admitir que la palabra "sonido" fue desafortunada en este contexto porque no tengo forma de evaluar rigurosamente el umbral (por lo tanto, lo eliminé). Básicamente, se supone que el umbral minimiza los falsos positivos porque son mucho más costosos que los falsos negativos en la detección de anomalías en la red.
cryptron
@cryptron, ¿tiene algún dato sobre qué es un falso positivo?
mpiktas
1
Estoy confundido por tus tramas. Esta es una serie de tiempo univariada tomando valores en ? ¿O debería ser ? (de mirar el eje x en su primer gráfico). Un traceplot sería más útil también. Por ejemplo, ¿obtiene puntajes altos por un período de tiempo sostenido o en ráfagas cortas (o ambas)? Si ambos, ¿es uno más preocupante que el otro? Si puede establecer un modelo razonable para los datos, puede usar cuantiles teóricos de la distribución ajustada, lo que resolvería el problema que ha identificado con los cuantiles de muestra. 0 < x t5 0 < x t0.5{xt}0<xt50<xt0.5
JMS

Respuestas:

2

Puede encontrar este documento de interés. Vea también una presentación más detallada de modelos similares en West & Harrison . También hay otros ejemplos de este tipo de monitoreo, muchos de los cuales son más recientes, pero este no es exactamente mi timonera :). Indudablemente, hay implementaciones adecuadas de estos modelos, pero no sé cuáles podrían ser de improviso ...

La idea básica es que tiene un modelo de conmutación donde algunas observaciones / secuencia de observaciones se atribuyen a estados anormales de la red, mientras que el resto se considera normal. Una mezcla como esta podría explicar la larga cola derecha en su primer diagrama. Un modelo dinámico también podría alertarlo sobre saltos anormales como a las 8:00 y 4:00 en tiempo real al asignar alta probabilidad a nuevas observaciones que pertenecen a un estado problemático. También podría extenderse fácilmente para incluir cosas como predictores, componentes periódicos (quizás su puntaje aumenta / disminuye un poco con la actividad) y ese tipo de cosas.

Editar: También debería agregar, este tipo de modelo está "sin supervisión" en el sentido de que las anomalías se detectan al mostrar un gran cambio medio o un aumento en la varianza. A medida que reúne datos, puede mejorar el modelo con distribuciones previas más informativas. Pero tal vez, una vez que tenga suficientes datos (¡y ejemplos de entrenamiento ganados con esfuerzo al lidiar con problemas de red!), Podría idear algunas reglas simples de monitoreo (umbrales, etc.)

JMS
fuente
1

¿Tiene algún ejemplo 'etiquetado' de lo que constituye una anomalía? es decir, valores asociados con una falla de la red, o algo así?

Una idea que podría considerar aplicar es una curva ROC, que es útil para elegir umbrales que cumplan un criterio específico, como maximizar los verdaderos positivos o minimizar los falsos negativos.

Por supuesto, para usar una curva ROC, debe etiquetar sus datos de alguna manera.

Zach
fuente
1
Desafortunadamente, no tengo conjuntos de datos etiquetados. Solo se supone que las colas largas o valores atípicos indican anomalías en el conjunto de datos.
cryptron
@cryptron ya veo. Entonces, lo que necesita es una forma de identificar dinámicamente los valores atípicos.
Zach
Eso resolvería una parte del problema, sí.
cryptron
1

El gráfico de la "serie original" no tiene que exhibir ninguna estructura predefinida. Lo que es crítico es que el gráfico de los "residuos de una serie de modelos adecuados" necesita exhibir una estructura gaussiana. Esta "estructura gaussiana" generalmente se puede obtener mediante la incorporación de una o más de las siguientes "transformaciones" 1. un MODELO arima 2. Ajustes para cambios de nivel local o tendencias de tiempo local o pulsos estacionales o pulsos ordinarios 3. un análisis ponderado que explota la heterogeneidad de varianza probada 4. una posible transformación de potencia (registros, etc.) para tratar una heterogeneidad de varianza específica 5. la detección de puntos en el tiempo en los que el modelo / parámetros pueden haber cambiado.

La detección de intervención arrojará una declaración sobre la importancia estadística del evento más reciente que sugiere normalidad o una anomalía

IrishStat
fuente
0

En la respuesta del OP a mi respuesta anterior, ha publicado sus datos en la web. 60 lecturas por hora durante 24 horas durante 6 días . Como se trata de herramientas transversales de series temporales como DBSCAN, tienen una relevancia limitada ya que los datos tienen una dependencia temporal. Con datos como este, normalmente se busca la estructura dentro de la hora y dentro del día. Además de este tipo de estructura, se puede buscar la detección de anomalías que pueden ser de una sola vez (pulso) o de naturaleza sistemática (cambio de nivel) utilizando métodos que están bien documentados (consulte la literatura de Tsay, Tiao, Chen et. al.) Estos procedimientos arrojaron las siguientes "anomalías". Tenga en cuenta que un cambio de nivel es esencialmente sugestivo de "grupos" separados. principales anomalías identificadas

                                HOUR/MINUTE     TIME
IrishStat
fuente
-1

Después de que un amigo mío me indicó la dirección de los algoritmos de agrupamiento , me topé con DBSCAN que construye grupos en el espacio n-dimensional de acuerdo con dos parámetros predefinidos. La idea básica es la agrupación basada en la densidad, es decir, las regiones densas forman agrupaciones. Los valores atípicos se devuelven por separado mediante el algoritmo. Entonces, cuando se aplica a mi histograma unidimensional, DBSCAN puede decirme si mis puntajes de anomalía presentan valores atípicos. Nota: en DBSCAN, un valor atípico es solo un punto que no pertenece a ningún clúster. Durante las operaciones normales, espero que el algoritmo produzca solo un clúster (y no valores atípicos).

Después de experimentar un poco, descubrí que los parámetros funcionan bien. Esto significa que los puntos tienen que exhibir una distancia de al menos 0.1 al grupo "normal" para ser vistos como atípicos.ϵ0.1

Después de poder identificar valores atípicos, encontrar el umbral se reduce a reglas simples como:

  • Si el conjunto presenta valores atípicos, establezca el umbral entre el clúster "normal" y "atípico" para que se maximice el margen para ambos.
  • Si el conjunto no presenta valores atípicos, establezca el umbral a una desviación estándar del punto más alejado.

De todos modos, ¡gracias por todas las respuestas útiles!

cryptron
fuente
@crypton ¿Cómo trata DBSCAN con series autocorrelacionadas? Por ejemplo, una serie de tiempo 1,9,1,9,1,9,5 tendría un valor inlier / inusual. ¿Se trata de cambios de nivel en la serie o una serie de posibles tendencias? ¿Cómo se maneja con los datos autorregresivos estacionales donde, aparte de decir junio de cada mes, la serie es "regular", mientras que cada junio es "grande"? ¿Los "grandes valores de junio" se detectan como valores atípicos? Sólo curioso !
IrishStat
2
@IrishStat Básicamente, DBSCAN agrupa los puntos en el espacio n-dimensional. Por lo tanto, su idoneidad para el análisis de series temporales es muy limitada. Funciona para mi caso especial ya que espero solo un solo grupo en mi histograma (unidimensional). Para responder a sus preguntas: Al usar los parámetros apropiados, el valor 5 de su ejemplo se detectaría como atípico. Supongo que puede tratar las tendencias, pero en las series de tiempo '1, 2, 3, 4, 5, 6, 7, 2', ¡el valor 2 no se consideraría atípico! Espero que eso dé una idea aproximada sobre las capacidades y limitaciones de DBSCAN.
cryptron
1
@crypton Gracias por la información. Me parece que cuando te refieres a 1 grupo, te refieres a 1 y solo 1 promedio. A pesar de que no hay un cambio en la autocorrelación promedio en sus datos, se convierte en "serie de tiempo", lo que sugiere que DBSCAN puede no ser tan útil como cree separar la señal del ruido, lo que lleva a una identificación eficiente de datos anamólicos.
IrishStat
1
@crypton Me parece que un grupo implica 1 promedio en comparación con una serie de tiempo que tenía 1,1,1,1,2,2,2,2 con algunas pequeñas desviaciones en torno a estos valores.
IrishStat
2
@crpton Creo que está utilizando una herramienta de sección transversal para un problema de serie temporal. Publicar los datos reales y voy a tratar de demostrar la detección de anomalías a usted con análisis de series temporales
IrishStat