Los expertos en mi campo son capaces de predecir la probabilidad de un evento (pico binario en amarillo) 30 minutos antes de que ocurra . La frecuencia aquí es de 1 segundo, esta vista representa unas pocas horas de datos, he marcado en un círculo en negro donde debería estar el patrón "malicioso" . Las interacciones entre las dimensiones existen, por lo tanto, las dimensiones no pueden estudiarse individualmente (¿o sí?)
Estoy tratando de construir un modelo de ML supervisado usando Scikit Learn que aprende un ritmo normal y detecta cuándo los síntomas pueden conducir a un pico . Estoy perdido por qué dirección tomar. He intentado la detección de anomalías, pero solo funciona para la detección in situ, no antes.
¿Cómo podría detectar patrones "maliciosos" antes de esos eventos (tomándolos como variables objetivo)?
Agradezco cualquier consejo sobre qué algoritmos o canalización de procesamiento de datos podría ayudar, gracias :)
Respuestas:
Este es un problema divertido. Esta es una serie de tiempo y de esta serie de tiempo desea identificar el desencadenante de un determinado evento. Por lo tanto, es un problema de clasificación binaria. Según la información de la ventana especificada, ¿se producirá un pico? Si o no.
El primer paso es configurar su base de datos. Lo que tendrá es un conjunto de instancias (que pueden tener cierta superposición, pero para evitar sesgos, lo mejor es que se dibujen de forma independiente) y luego, para cada instancia, un humano necesita etiquetar si hubo un pico o si no hubo un espiga.
Luego, debe identificar la ventana de tiempo que desea utilizar para su análisis de series de tiempo. Has hecho esto y has decidido que 30 minutos es un buen comienzo.
Ahora, tiene 6 formas de onda en una ventana de 30 minutos desde la cual puede extraer datos para obtener información sobre su clasificación. Puede usar las muestras de datos sin procesar como sus características, pero esto es DEMASIADO muchas características y dará resultados pobres. Por lo tanto, necesita alguna extracción de características , reducción de dimensionalidad , técnicas.
Hay un millón de formas en que puede extraer datos de estas formas de onda. Primero, pregúntese, como humano, cuáles son los signos reveladores que deberían tener estas otras formas de onda, lo que significaría que surgiría un pico. Por ejemplo, en datos sísmicos, si ve agitación en una forma de onda de una ciudad vecina, entonces debería esperar ver agitación en su ciudad pronto.
En general, me gusta extraer todas las estadísticas básicas de mis formas de onda. Obtenga la media, la desviación estándar, el índice de fluctuación, etc. Obtenga lo que cree que podría ayudar. Comprueba cómo estas estadísticas se correlacionan con tus etiquetas. Cuanta más correlación, mejores podrían ser. Luego, hay algunas técnicas muy buenas para extraer información de tiempo y frecuencia de su serie temporal. Examine la descomposición en modo envolvente y la descomposición en modo empírico . He utilizado la descomposición en modo empírico con éxito en algunos datos de series de tiempo y obtuve resultados mucho mejores de lo que esperaba.
¡Ahora, a pesar de que tiene un espacio de funciones reducido, puede hacerlo mejor! Puede aplicar algunas técnicas de reducción de dimensionalidad como PCA o LDA para obtener un espacio dimensional más bajo que pueda representar mejor sus datos. Esto podría ayudar, no hay garantías.
Ahora tiene un pequeño conjunto de datos con instancias que son una mezcla de Frankenstein que representa sus 6 formas de onda en la ventana de 30 minutos. Ahora ya está todo listo para seleccionar su clasificador. Querrás un algoritmo de clasificación binaria, afortunadamente es el más común. Hay muchos para elegir. ¿Como escoger?
¿Cuántas instancias tienes?
Entonces usted está listo para utilizar una técnica de aprendizaje profundo, como redes neuronales , 1D redes neuronales convolucionales , autoencodders apilados , etc ...
¡¡¡¡Menos que eso!!!! Debes seguir con métodos poco profundos. Echa un vistazo a las máquinas de vectores de soporte de kernel , bosques aleatorios , k-vecinos más cercanos, etc.
Concepto erróneo común: un método superficial PUEDE y SERÁ mejor que una técnica de aprendizaje profundo si ha seleccionado correctamente sus funciones. La extracción de características es el aspecto más importante de una arquitectura de aprendizaje automático.
¡Quiero usar la detección de anomalías!
Esto también funcionaría y hay algunas buenas técnicas que lo harían. Sin embargo, la naturaleza de la detección de anomalías es aprender la distribución del caso nominal. Por lo tanto, debe alimentar su algoritmo con todas las instancias en su conjunto de datos que no resultaron en un pico. Entonces, a partir de esto, su algoritmo podría identificar cuándo una instancia nueva es significativamente diferente de esta distribución nominal y la marcará como una anomalía. Esto significaría que se producirá un pico en su contexto.
Revisa:
Conjuntos de volumen mínimo de aprendizaje http://www.stat.rice.edu/~cscott/pubs/minvol06jmlr.pdf
Detección de anomalías con funciones de puntuación basadas en gráficos de vecinos más cercanos https://arxiv.org/abs/0910.5461
Nueva estadística en la estimación del valor P para la detección de anomalías http://ieeexplore.ieee.org/document/6319713/
También puede utilizar técnicas de detección de anomalías más rudimentarias, como una prueba de razón de probabilidad generalizada. Pero, esto es algo de la vieja escuela.
fuente
Debe realizar la extracción de características o la ingeniería de características para crear variables en sus datos de entrenamiento que "atrapen" esos patrones en los que se encuadró y luego tenga una variable objetivo que diga "malicia encontrada" o "malicia encontrada no encontrada"
Tome un ejemplo realmente simple: predecir si va a llover. Podría llegar a un predictor razonablemente bueno de lluvia en los próximos 30 minutos que verificará cada 30 minutos si 1. de repente se nubló y 2. la presión barométrica cayó.
fuente