Modelo de manutenção preditiva para identificar indicação de falha antes que ela aconteça

7

Situação

Estou trabalhando em um problema em que estou usando os dados do sensor para prever a falha da máquina antes que ela ocorra e preciso de alguns conselhos sobre quais métodos explorar.

Especificamente, quero identificar indicações de falhas iminentes antes que elas realmente ocorram. Idealmente, isso seria com prazo de entrega suficiente para que pudéssemos consertar o que acontecesse antes que causasse falha.

Problema

O obstáculo conceitual em que estou é que sei que poderia ajustar vários modelos de classificação (regressão logística, árvore de decisão, vizinho mais próximo etc.) aos dados para identificar a probabilidade de falha, dados parâmetros específicos naquele momento. No entanto, não consigo descobrir como identificar a indicação de uma falha futura com tempo suficiente para realmente fazer algo a respeito.

Possíveis abordagens

Eu estou familiarizado com a Análise de Sobrevivência, mas, como não tenho dados de várias máquinas, e não é como se, após um reparo, a máquina estivesse de volta a 100%, não acho que isso se encaixe necessariamente.

Também pensei em dedicar o tempo em que uma falha ocorre, alterando-a de volta 1 hora e ver quão preciso eu posso prever esse ponto. Se eu puder, mova o alvo de volta mais uma hora e veja quanto tempo de lead posso prever com confiança. Mas não tenho certeza se é apropriado fazer isso.

Dado disponível

Os dados que tenho são registrados de uma máquina durante um período de 1 ano. Existem aproximadamente 60 sensores que são gravados a cada dois minutos. Esses sensores medem variáveis ​​como as temperaturas dos diferentes componentes que compõem a máquina (incluindo a configuração do termostato versus a temperatura real), a velocidade em que a máquina está funcionando, pressões de vapor em toda a máquina, velocidades do ventilador, se a máquina está ou não funcionando , etc.

Além das leituras do sensor, aprimorei o conjunto de dados para incluir também o motivo pelo qual a máquina não está funcionando (por exemplo: mudança de turno, manutenção preventiva, falha). Incluí um exemplo resumido de como são os dados na parte inferior deste post. Alterei o exemplo para capturar parte da variedade capturada em todo o conjunto de dados. Na realidade, quando a máquina para de funcionar, ela fica inativa por 2 minutos a 2 dias, dependendo do motivo. Além disso, as variáveis ​​não mudam necessariamente tão rapidamente quanto no exemplo abaixo, mas eu queria fornecer alguma variedade.

+-----------------+----------+-------------+------------+------------+-------+-------+-----+--------------------------+------------+
|    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       |
+-----------------+----------+-------------+------------+------------+-------+-------+-----+--------------------------+------------+
CurtLH
fonte
11
Com que tipo de máquina / indústria você está lidando?
Fernando

Respostas:

5

Essa é uma pergunta bem feita e interessante.

Eu tenho algumas questões :

  • Você já tem idéias sobre a viabilidade de seu objetivo? (antecipar algumas falhas) Você identificou uma variável que indica uma falha?
  • Qual é o tempo típico antes da falha?

Eu acho que a maneira natural de estudar esse problema seria usar a análise de sobrevivência. E estar familiarizado com isso será mais!

O que eu faria (apesar de não estar ciente de todas as especificidades do seu problema):

  • Calcule sua variável de tempo de interesse (y) e ocorrência da variável de evento (delta): nesta etapa, você pode:

    • considere o tempo de falha como evento
    • considere o tempo de manutenção preventiva como variável de censura
    • pule o tempo de turno para o cálculo do tempo de falha e censura
  • Ajuste um modelo Cox nesses dados:

    • Observação: você tem alteração de covariáveis ​​no momento (há neste endereço uma vinheta sobre como lidar com covariáveis ​​dependentes do tempo no modelo Cox: https://cran.r-project.org/web/packages/survival/vignettes/timedep.pdf )
    • Este passo pode não ser fácil (não sei se não sou especialista em covariáveis ​​dependentes do tempo). Por exemplo, acho que você pode estar com problemas porque pode ter muitos pontos de alteração nos dados (horário em que uma das variáveis ​​covariáveis)
  • Então, para usar seu modelo (e veja se você pode prever que uma falha ocorrerá no futuro (tempo suficiente antes)), você deve usar seu modelo Cox:

    • O modelo Cox fornecerá uma estimativa da taxa de risco. Portanto, a coisa mais simples que você pode fazer para usar seu modelo é calcular uma previsão on-line enquanto sua máquina está funcionando e decidir parar a máquina quando a taxa de risco exceder um limite)

Embora a maneira natural de estudar o seu problema seja usar a análise de sobrevivência, você pode usar métodos de classificação, especialmente se o tempo antes da falha for curto (dessa forma, você está analisando dados passados ​​e não será perturbado pela censura). Nesse caso, acho que a abordagem geral seria bastante semelhante.

Dê-nos um feedback sobre o seu problema!

Ooona
fonte
11
resposta legal (+1), mas perguntas sobre o OP não devem ser incluídas em uma resposta. É melhor perguntar a eles nos comentários ao OP.
DeltaIV 22/02
2

Eu trabalho em problemas semelhantes.

Sugiro modelar isso como uma tarefa de classificação: Rotule os dados como ... sistemas / horários em que o sistema está fechado antes de uma falha ... sistemas / horários em que o sistema está íntegro

Então você precisa ajustar um modelo para fazer essa classificação. Provavelmente você precisa agregar os dados primeiro em intervalos.

Tobi
fonte
Obrigado pela resposta. Sei que essa pergunta requer um modelo de classificação, mas o que não está claro é o que definir como variável de destino, a fim de identificar indicações de falha antes que ela aconteça. Quero poder contar a alguém quando parece que a máquina falhará com tempo de entrega suficiente para poder realmente fazer algo a respeito. Enviar um alerta 2 minutos antes que algo aconteça não é muito útil.
CurtLH
Ok, então sugiro: agregue dados diariamente. Rotule os 3 dias antes da falha como 1, exclua os 3 dias anteriores (porque podem ser muito semelhantes) e os dias anteriores serão rotulados como 0. Em seguida, faça a classificação. Se o seu modelo predizer um 1, você sabe que uma falha ocorrerá nos próximos 3 dias. Este é apenas um exemplo simples. É claro que você pode rotular os dias de maneira diferente, para que funcione no seu caso de negócios.
22417 Tobi