Cómo entrenar el modelo para predecir eventos 30 minutos antes, a partir de series de tiempo multidimensionales


9

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í?)

ingrese la descripción de la imagen aquí

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


¿Son estas ondas cerebrales?
JahKnows

Respuestas:


9

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?

#instances>100#features ?

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.


Gran tutorial, gracias por tu nivel de detalle. Las series de tiempo que se muestran aquí ya son una selección de las características originales, y se hacen 'visualizables' para el ojo humano usando la media móvil, por ejemplo. El feed de datos "en bruto" consta de alrededor de 50 características y un millón de instancias. ¡Supongo que eso me lleva a técnicas de aprendizaje profundo! Me estoy sumergiendo en la extracción de características, y definitivamente publicaré los resultados de mi viaje aquí :)
William D

Sí, eso sería genial, mantennos informados. Si tiene 50 funciones y 1 millón de instancias. Primero busque la red neuronal, es la forma más fácil de codificar ya que existen tantos paquetes (por ejemplo: Keras en python). Pruebe también PCA y LDA para transformar su espacio de características en uno más representativo.
JahKnows

0

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

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.