11 votos

Modelo de mantenimiento predictivo para detectar fallos antes de que se produzcan.

Situación

Estoy trabajando en un problema en el que estoy utilizando datos de sensores para predecir el fallo de la máquina antes de que se produzca el fallo y necesito algunos consejos sobre qué métodos explorar.

En concreto, quiero identificar indicios de un fallo inminente antes de que éste se produzca realmente. En el mejor de los casos, esto sería con suficiente antelación para que pudiéramos arreglar lo sucedido antes de que provoque el fallo.

Problema

El bloqueo conceptual en el que me encuentro es que sé que podría ajustar varios modelos de clasificación (regresión logística, árbol de decisión, vecino más próximo, etc.) a los datos para identificar la probabilidad de fallo dados unos parámetros específicos en ese momento. Sin embargo, no sé cómo identificar el indicio de un fallo inminente con tiempo suficiente para hacer algo al respecto.

Posibles enfoques

Estoy familiarizado con el Análisis de Supervivencia, pero dado que no tengo datos de múltiples máquinas, y no es como si después de una reparación la máquina volviera a estar al 100%, no creo que sea un buen ajuste necesariamente.

También he pensado en tomar el momento en que se produce un fallo, retrasarlo 1 hora y ver con qué precisión puedo predecir ese punto. Si soy capaz, retroceder el objetivo otra hora y ver cuánto tiempo de adelanto puedo predecir con seguridad. Pero no estoy seguro de si es apropiado hacer esto.

Datos disponibles

Los datos de que dispongo proceden de una sola máquina durante un periodo de un año. Hay aproximadamente 60 sensores que se registran cada dos minutos. Estos sensores miden variables como las temperaturas de los diferentes componentes que componen la máquina (incluido el ajuste del termostato frente a la temperatura real), la velocidad a la que funciona la máquina, las presiones de vapor en toda la máquina, las velocidades del ventilador, si la máquina está funcionando o no, etc.

Además de las lecturas de los sensores, he enriquecido el conjunto de datos para incluir también el motivo por el que la máquina no está funcionando (por ejemplo: cambio de turno, mantenimiento preventivo, avería). He incluido un ejemplo condensado del aspecto de los datos al final de esta entrada. He modificado el ejemplo para captar parte de la variedad que presenta el conjunto de datos. En realidad, cuando la máquina deja de funcionar, está parada entre 2 minutos y 2 días, dependiendo del motivo. Además, las variables no cambian necesariamente tan rápido como se ve en el ejemplo de abajo, pero quería proporcionar un poco de variedad.

+-----------------+----------+-------------+------------+------------+-------+-------+-----+--------------------------+------------+
|    Datetime     | CircFan  | CircFanAct  | EntrySpeed | ExhaustFan | Speed | Temp1 | Run |          Reason          | TimeBtwRun |
+-----------------+----------+-------------+------------+------------+-------+-------+-----+--------------------------+------------+
| 2009-10-19 0:00 |      100 |         600 |        461 |         40 |    45 |  1126 |   1 |                          | NA         |
| 2009-10-19 0:02 |      100 |         600 |          0 |         39 |    45 |  1120 |   0 | shift change             | 0:00       |
| 2009-10-19 0:04 |      100 |         600 |          0 |         39 |    45 |  1118 |   0 | shift change             | 0:02       |
| 2009-10-19 0:06 |       95 |         600 |        461 |         39 |    45 |  1119 |   1 |                          | 0:00       |
| 2009-10-19 0:08 |       95 |         599 |        461 |         40 |    45 |  1120 |   1 |                          | 0:02       |
| 2009-10-19 0:10 |       95 |         598 |        461 |         40 |    45 |  1120 |   1 |                          | 0:04       |
| 2009-10-19 0:12 |       95 |         597 |        461 |         40 |    45 |  1130 |   1 |                          | 0:06       |
| 2009-10-19 0:14 |      100 |         597 |          0 |         40 |    45 |   699 |   0 | failure                  | 0:00       |
| 2009-10-19 0:16 |      100 |         597 |          0 |         40 |    45 |   659 |   0 | failure                  | 0:02       |
| 2009-10-19 0:18 |      100 |         597 |          0 |         40 |    45 |   640 |   0 | failure                  | 0:04       |
| 2009-10-19 0:20 |      100 |         600 |        461 |         40 |    45 |  1145 |   1 |                          | 0:00       |
| 2009-10-19 0:22 |      100 |         600 |        461 |         40 |    45 |  1144 |   1 |                          | 0:02       |
| 2009-10-19 0:24 |       80 |         600 |        461 |         40 |    45 |  1138 |   1 |                          | 0:04       |
| 2009-10-19 0:26 |       80 |         600 |        461 |         41 |    45 |  1133 |   1 |                          | 0:06       |
| 2009-10-19 0:28 |       80 |         600 |        461 |         41 |    45 |  1134 |   1 |                          | 0:08       |
| 2009-10-19 0:30 |      100 |         600 |        461 |         41 |    45 |  1134 |   1 |                          | 0:10       |
| 2009-10-19 0:31 |      100 |         600 |        461 |         41 |    45 |  1133 |   1 |                          | 0:11       |
| 2009-10-19 0:34 |      100 |         600 |        461 |         40 |    45 |  1140 |   1 |                          | 0:13       |
| 2009-10-19 0:36 |      100 |         600 |        100 |         40 |    45 |   788 |   0 | preventative maintenance | 0:00       |
| 2009-10-19 0:38 |      100 |         600 |        100 |         40 |    45 |   769 |   0 | preventative maintenance | 0:02       |
+-----------------+----------+-------------+------------+------------+-------+-------+-----+--------------------------+------------+

1 votos

¿Con qué tipo de máquina/industria trabaja?

5voto

Jerome Puntos 106

Es una pregunta interesante y bien planteada.

Tengo algunas preguntas:

  • ¿Tiene ya alguna idea sobre la viabilidad de su objetivo? (prevea algunos fracasos) ¿Ha identificado alguna variable que augure un fracaso?
  • ¿Cuál es el tiempo típico que transcurre antes de que se produzca un fallo?

Creo que la forma natural de estudiar un problema así sería utilizar el análisis de supervivencia. Y estar familiarizado con él será una ventaja.

Lo que yo haría (a pesar de que no soy consciente de toda la especificidad de su problema) :

  • Calcule su variable de tiempo de interés ( $y$ ) y aparición de la variable de suceso ( $delta$ ) : en este paso puede :

    • considerar el tiempo de fallo como suceso
    • considerar el tiempo de mantenimiento preventivo como variable de censura
    • omitir el tiempo de desplazamiento para el cálculo del tiempo de fallo y censura
  • Ajuste un modelo de Cox a estos datos :

    • Observación : tiene covariables que cambian con el tiempo (hay en esta dirección una viñeta sobre cómo manejar covariables dependientes del tiempo en el modelo de Cox : https://cran.r-project.org/web/packages/survival/vignettes/timedep.pdf )
    • Puede que este paso no sea fácil (no sé, no soy especialista en covariables dependientes del tiempo). Por ejemplo, creo que puede tener problemas porque puede tener demasiados puntos de cambio en sus datos (el momento en que cambia una de las covariables).
  • A continuación, para utilizar su modelo (y ver si puede predecir que se producirá un fallo en el futuro (con suficiente antelación)), debe utilizar su modelo de Cox :

    • El modelo de Cox le proporcionará una estimación de la tasa de riesgo. Así que lo más sencillo que puede hacer para utilizar su modelo es calcular una predicción en línea mientras su máquina está funcionando, y decidir detener la máquina cuando la tasa de peligro supere un umbral)

Aunque la forma natural de estudiar su problema sería utilizar el análisis de supervivencia, puede utilizar métodos de clasificación, especialmente si el tiempo antes del fracaso es corto (de esta forma estará analizando datos pasados y no le molestará la censura). En este caso, creo que el enfoque general sería bastante similar.

Denos su opinión sobre su problema.

1 votos

Buena respuesta (+1) pero las preguntas sobre el OP no deberían incluirse en una respuesta. Es mejor hacerlas en los comentarios al PO.

2voto

David Winter Puntos 37

Trabajo en problemas similares.

Sugiero modelar esto como una tarea de clasificación: Etiquetar los datos como ... sistemas/tiempos en los que el sistema está cerca antes de un fallo ... sistemas/tiempos en los que el sistema está sano

Entonces hay que ajustar un modelo para hacer esta clasificación. Es probable que primero tengas que agregar los datos en intervalos.

0 votos

Gracias por la respuesta. Me doy cuenta de que esta pregunta requiere un modelo de clasificación, pero lo que no está tan claro es qué definir como variable objetivo para identificar indicios de fallo antes de que se produzca. Quiero ser capaz de decirle a alguien cuando parece que su máquina va a fallar con suficiente tiempo de antelación para poder hacer algo al respecto. Enviar una alerta 2 minutos antes de que ocurra algo no es muy útil.

0 votos

Ok, entonces sugiero: agregar los datos diariamente. Etiquete los 3 días anteriores a un fallo como 1, elimine los 3 días anteriores (porque podrían ser demasiado similares) y los días anteriores se etiquetan como 0. A continuación, realice la clasificación. Si tu modelo predice un 1, sabrás que se producirá un fallo en los 3 días siguientes. Este es un ejemplo sencillo. Por supuesto, puedes etiquetar los días de forma diferente, de modo que funcione para tu caso de negocio.

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