Detección de anomalías en series temporales


8

Soy un principiante que usa el aprendizaje automático (terminé el curso de Ng), estoy usando scikit-learn en python. Quiero encontrar la mejor manera de detectar anomalías en nuestro sistema.

Tenemos eventos en curso que ocurren en un horario (cada pocos minutos / horas), y quiero detectar cuándo sucede algo anormal. Datos de ejemplo:

ID | epoch-time | duration (Sec) | status | is_manual

0400 | 1488801454  | 500 | completed | 1

0401 | 1488805055  | 500 | completed | 1

0402 |  1488812254  | 40000 | failed | 1

6831 | 1488805050  | 200 | failed | 0

.

... (Millions of examples)

.

0014 |  1488805055 | 1200 | completed | 0

así, por ejemplo, el evento ID 0400 ocurre una vez cada hora. Quiero decir cuándo no se ejecuta.

Lo que planeo hacer es alimentar el algoritmo con todos los eventos de los últimos 10 minutos.

Preguntas principales: ¿Cómo tratar la columna ID? ¿Cuál es el mejor enfoque que debo tomar?


¿Es la anomalía lo mismo que un valor atípico? En estadística usamos el término "outlier", mientras que en ciencia espacial lo llaman anomalía.
Michael R. Chernick

Diferencia entre outliner y anomalía: stats.stackexchange.com/questions/189664/…
XOmri

¿Puedes explicar un poco más sobre qué es un evento en este caso? ¿Cuántos eventos únicos hay aproximadamente en sus datos? Además, dio un ejemplo en el que el comportamiento "anormal" era el evento que fallaba. ¿Hay otros casos que verías como anormales?
deemel

@Rickyfox Por evento me refiero a una fila o entrada. Estaba mal usar la misma ID para diferentes eventos, y lo arreglé en la pregunta. Anormal sería el caso donde un evento no es consistente con los eventos anteriores que se correlaciona en función del tiempo. Por ejemplo: si cada 30 segundos ocurre un evento con los mismos parámetros (duración: 500, completado, 1), entonces si no hubo un evento después de 30 segundos, eso es anormal. O si falla y no se completa: también es una anomalía.
XOmri

No veo cómo necesitas ML aquí. Parece que una simple consulta condicional debería funcionar bien
Aksakal

Respuestas:


1

Encontré este artículo muy útil en mi caso:

https://mapr.com/blog/deep-learning-tensorflow/

Usando esta estructura básica de RNN, pude predecir el resultado del siguiente paso de tiempo. Al centrar todos los eventos al minuto más cercano, la red pudo reconocer el patrón que se correlaciona dentro de la línea de tiempo.


-5

Hay varias formas con las que puede abordar esto. Antes de comenzar a diseñar cualquier modelo, estandarice sus datos. Sus datos parecen no estar etiquetados, por lo que inicialmente, lo que puede hacer es realizar una visualización de t-SNE que le proporcionará una gran cantidad de información sobre sus datos. Según su resultado, puede desarrollar modelos más sensibles que pueden agrupar las muestras en anomalías y normales. Más sobre t-SNE aquí


2
Bienvenido a stats.SE! El centro de ayuda tiene buena información sobre cómo hacer / responder preguntas. Las respuestas detalladas tienden a ser las mejores. ¿Puedes elaborar un poco más? Por ejemplo, ¿cómo se usaría t-SNE con datos de series temporales y entradas discretas de 'id', y cómo se usaría para ayudar a diseñar un sistema de detección de anomalías?
user20160

Estoy buscando visualizar los datos con t-SNE según su sugerencia, pero no estoy seguro de qué tan lejos llegaré con ellos. Tenemos varias características más para agregar que no mencioné, editaré y agregaré a la publicación. Todavía no puedo entender qué hacer una vez que la visualización funciona
XOmri

Además, el t-SNE depende en gran medida de los hiperparámetros y no conserva las distancias, entonces, ¿cómo exactamente encontraría valores atípicos basados ​​en él? Sí, te permitiría encontrar puntos extraños, pero esto sería elegir.
Tim
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.