5 votos

¿Cómo se detectan las anomalías en los datos en tiempo real?

Estoy tratando de encontrar algunos buenos algoritmos que puedan resolver el problema de encontrar anomalías en mis datos. Uno de los principales problemas es que necesito encontrarlas en los datos en tiempo real.

Así que se me ocurrió la idea de calcular la media a medida que llegan mis nuevos datos y también calcular la desviación estándar. Después de hacer eso, añado la desviación estándar a mi media para obtener el upper limit . Y también quitar la desviación estándar de la media para obtener bottom limit . Y finalmente comprobar si ese valor está fuera del rango.

Es un boceto rápido:

             /\                  /\/\
            /  \                /    \           ** IF VALUE IS ABOVE THEN ALERT
 ----/\----/----\/\----/\------/------\/\----- > upper limit
 ---/--\--/--------\--/--\----/----------\--/- > average
 --/----\/----------\/----\--/------------\/-- > bottom limit
  /                        \/                    ** IF VALUE IS BELOW THEN ALERT

He utilizado el enfoque de aquí .

Los problemas a los que me enfrento son:

  • Así que si tengo un gran pico, digamos, cada fin de semana, no me gustaría tenerlos como anomalías, porque ocurren cada fin de semana.
    Pero si consigo algo impar, aunque no sea tan grande como los picos del fin de semana, me gustaría conseguir anomalía

  • También me gustaría tener algún otro algoritmo que mirara el volumen del lunes de esta semana y el volumen del lunes de la semana anterior y comparara esos valores

  • Entrando un poco más en detalles con lo anterior también estoy tratando de averiguar lo grande que se supone que es el bloque de tiempo:

    • digamos que compruebo el volumen diariamente, podría obtener un volumen de 46 el primer día y 50 el siguiente, lo que no sería impar. pero si miro la segunda hora del primer día el recuento será de 3 y la segunda hora del segundo día de 25 esto es una anomalía que me gustaría conocer
    • ¿cómo determinar la frecuencia adecuada de medición de los eventos en función del volumen y la varianza de los datos?

Estos son los problemas que me gustaría resolver, no pido la respuesta exacta, sino señalar los algoritmos que serán los mejores para resolver cada una de estas cuestiones

3voto

user90997 Puntos 1

Hay varias técnicas que pueden aplicarse para detectar anomalías en las series temporales. El enfoque de la "varianza corrida" ilustrado en el enlace del PO no es un método válido, ya que el uso de la media $\pm$ k SD es muy simplista, no tiene en cuenta los comportamientos irregulares normales, implica una gran pérdida de información, no considera el ruido, etc.

Los métodos utilizados en este contexto pueden clasificarse en tres grupos principales: 1) no supervisados, en los que no es necesario generar ningún conjunto de datos de referencia y las series temporales $x_i$ se analiza directamente (bajo el supuesto de que la mayoría de los datos son normales) buscando las instancias que menos se "ajustan" a las demás instancias del conjunto de datos; 2) supervisada, que requiere un conjunto de datos de entrenamiento que contenga instancias normales y anormales etiquetadas; 3) semisupervisada, en la que un conjunto de datos de referencia $y_i$ construida con una serie temporal de entrenamiento normal se toma como modelo de comportamiento normal, y se utiliza para asignar una puntuación de anomalía a los casos del conjunto de datos observados $x_i$ . Este último grupo incluye una serie de subgrupos diferentes, como métodos basados en el kernel, en la ventana, en la predicción y en la caja (también llamados basados en la segmentación). En todas las técnicas, las instancias pueden ser puntos de datos individuales, secuencias, subsecuencias, etc.

Basándose en la información dada en el PO, en este caso un enfoque no supervisado puede ser probablemente el mejor equilibrio entre rendimiento y simplicidad. Una técnica ampliamente utilizada que entra en este grupo es el llamado algoritmo del vecino más cercano, un método basado en la distancia que parte del supuesto de que las instancias normales ocurren en vecindarios "densos", mientras que las instancias anómalas ocurren lejos de sus vecinos más cercanos. En resumen, cada instancia recibe una puntuación de anomalía, definida como la distancia entre esa instancia y el $k^{th}$ vecino más cercano en el conjunto de datos (con $k$ normalmente un pequeño número entero, a menudo fijado en $1$ ). A continuación, se utiliza un umbral para identificar si la instancia es anómala o no. Se pueden utilizar varios tipos de distancias, pero para las variables continuas la distancia euclidiana (en 2D, $d=|x_i^2-x_j^2|$ ) es la más adoptada.

Por último, hay que tener en cuenta que existen numerosas variantes de este método propuestas por diferentes autores. Por ejemplo, es posible definir como anomalías simplemente las mayores $m$ distancias observadas en el conjunto de datos, por lo que no es necesario definir un umbral. Por otra parte, la puntuación de anomalía de una instancia dada puede calcularse alternativamente sumando las distancias de su $k$ vecinos más cercanos, o contando el número $j$ de vecinos más cercanos que no sean más de $d$ distancia de esa instancia. Esta última variante, que calcula sustancialmente la densidad de datos en una n-esfera de radio $d$ alrededor de cada instancia, se utiliza comúnmente debido a su simplicidad: en una dimensión, la densidad es $j/d$ en 2D (como probablemente sería la situación del OP) es $j/(\pi d^2)$ y así sucesivamente. La puntuación de la anomalía resultante viene dada por la inversa de la densidad. Como simplificación adicional, algunos autores han sugerido anteriormente utilizar, como puntuación de la anomalía, la relación $1/j$ una vez $d$ está predefinido, o $d$ (alternativamente la relación $1/d$ ) una vez $j$ está predefinido.

El enfoque no supervisado del vecino más cercano puede probablemente resolver la mayoría de los problemas mencionados en el PO. Si se elige una representación temporal adecuada (yo sugeriría trazar los datos con una representación cíclica, utilizando inicialmente un rango del eje x de una semana), los picos grandes "normales" (por ejemplo, en el fin de semana) se reconocen bien y no se identifican como anomalías, mientras que los picos anormales más pequeños se identifican rápidamente. El método también permite identificar fácilmente las anomalías con respecto a ese día concreto de la semana, por ejemplo, un pico que se produce el lunes y que es anormal con respecto al lunes "normal", o comparar dos días entre semanas diferentes. Por último, la elección de la frecuencia de medición adecuada depende de la definición temporal que queramos alcanzar en nuestro análisis. Aunque algunos análisis cuantitativos podrían explorar también esta cuestión, en la mayoría de los casos la frecuencia de medición se elige empíricamente en función de la definición temporal deseada y tras una inspección visual de los datos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X