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?
Respuestas:
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.
fuente
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í
fuente