8 votos

Aprendizaje automático para el reconocimiento de patrones en datos de sensores en tiempo real

Estoy trabajando en un proyecto en el que necesitamos detectar patrones en la salida de un sensor para saber si se ha producido un determinado evento. Dada mi limitada experiencia con el aprendizaje automático, me preguntaba si alguien podría orientarme en la dirección correcta.

A continuación se muestra una imagen de cómo se ven los datos durante 11 días y queremos detectar los eventos positivos en tiempo real (antes de que termine el evento). Inicialmente teníamos una detección basada en el cambio de pendiente pero necesitamos algo más robusto (el comportamiento general del sensor es ligeramente diferente para cada sensor pero el perfil del evento es el mismo)

Datos de los sensores a largo plazo: Long term sensor data

Mira de cerca el evento: Close look at event

Entiendo que es una pregunta bastante amplia, pero sería genial si alguien pudiera indicarme los conceptos de aprendizaje automático adecuados para detectar los eventos.

¡Merci beaucoup!

3voto

Paul Stephenson Puntos 56

Hace unas semanas trabajé en un problema similar para detectar los picos adecuados en un sensor ruidoso. La tarea más importante aquí es seleccionar las características adecuadas. La pendiente parece una buena idea, tal vez no utilizando puntos vecinos, sino puntos de datos separados por una distancia fija (digamos 10 o 100, dependiendo de su tasa de muestreo). Si es crucial para ti utilizar herramientas de aprendizaje automático, te sugeriría que construyeras un conjunto de entrenamiento que puedas utilizar para entrenar modelos supervisados como Perceptrones Multicapa (red neuronal), SVM y demás. Los datos de entrenamiento deben ser etiquetados para poder entrenar modelos supervisados. Esto es lo que hice: Construir el conjunto de datos Encontré la posición inicial aproximada de la señal que quería detectar (en tu caso los primeros puntos de datos dentro del pico). Digamos que están en x_10, x_30 y x_53. A continuación, construiría un conjunto de datos en el que seleccionaría algunos de los puntos vecinos, lo que daría lugar a que el conjunto de datos tuviera este aspecto:

x_{8}, x_{9}, x_{10}, x_{11}, x_{12} x_{28}, x_{29}, x_{30}, x_{31}, x_{32} x_{51}, x_{52}, x_{53}, x_{54}, x_{55}

Además, seleccionaría unos cuantos puntos aleatorios en los datos en los que sé que no hay señal deseada y añadiría esos datos al conjunto de datos, digamos que esas observaciones están en x_14 y x_41. El conjunto de datos final se vería así:

x_{8}, x_{9}, x_{10}, x_{11}, x_{12} x_{28}, x_{29}, x_{30}, x_{31}, x_{32} x_{51}, x_{52}, x_{53}, x_{54}, x_{55} x_{12}, x_{13}, x_{14}, x_{15}, x_{16} x_{39}, x_{40}, x_{41}, x_{42}, x_{43}

El vector de etiquetas correspondiente, que indica al modelo la categoría de mis datos, tendría el siguiente aspecto:

[ 1, 1, 1, 0, 0 ]

lo que significa que las 3 primeras filas pertenecen a la clase 1 (deseada) y las dos últimas a la clase 0 (no deseada). Luego puse mis datos en un Perceptrón Multicapa con 3 capas (1 de entrada, 1 oculta, 1 de salida) (con funciones sigmoides para la no linealidad). Eso funcionó sorprendentemente bien para mí.

Abandonar el aprendizaje automático Aunque el MLP funcionó bien, acabé resolviendo mi problema con unas cuantas reglas if-else utilizando características más potentes como la varianza local, el valor absoluto de la señal y algunas más. Los umbrales se ajustaron manualmente (porque era más fácil que construir un gran conjunto de datos de entrenamiento). Por lo tanto, sugiero que se prueben reglas sencillas y que se prueben diferentes características. A partir de los gráficos que has publicado, parece que la señal es muy clara y, por lo tanto, el ajuste de los umbrales no es crucial si tienes buenas características. Algunas ideas: - Pendiente (por ejemplo, x_{i} - x_{i-T} donde T > 0) - Gran desviación de la media local (prueba para x_{i} > Promedio(x_{i-T},...,x_{i-1}) + a*Desviación estándar(x_{i-T},...,x_{i-1}), donde a podría ser 3 o más, dependiendo de lo claros/extremos que sean los picos) - Valor de x_{i} (si el valor de los picos es el mismo en todos los picos. No parece ser el caso en su ejemplo)

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