Vorausschauendes Wartungsmodell zur Identifizierung von Anzeichen eines Fehlers, bevor dieser auftritt

7

Situation

Ich arbeite an einem Problem, bei dem ich Sensordaten verwende, um einen Maschinenausfall vorherzusagen, bevor der Fehler auftritt, und ich benötige einige Ratschläge zu den zu untersuchenden Methoden.

Insbesondere möchte ich Hinweise auf einen bevorstehenden Fehler identifizieren, bevor der Fehler tatsächlich auftritt. Im Idealfall ist dies mit einer ausreichenden Vorlaufzeit möglich, damit wir alles beheben können, was passiert ist, bevor es zu einem Ausfall kommt.

Problem

Die konzeptionelle Hürde, an der ich mich befinde, besteht darin, dass ich weiß, dass ich verschiedene Klassifizierungsmodelle (logistische Regression, Entscheidungsbaum, nächster Nachbar usw.) an die Daten anpassen kann, um die Ausfallwahrscheinlichkeit bei bestimmten Parametern zu diesem Zeitpunkt zu ermitteln. Ich kann jedoch nicht herausfinden, wie ich den Hinweis auf einen bevorstehenden Fehler mit genügend Zeit identifizieren kann, um tatsächlich etwas dagegen zu unternehmen.

Mögliche Ansätze

Ich bin mit der Überlebensanalyse vertraut, aber da ich keine Daten von mehreren Maschinen habe und es nicht so ist, als ob die Maschine nach einer Reparatur wieder zu 100% ist, denke ich nicht, dass dies unbedingt gut passt.

Ich habe auch darüber nachgedacht, mir die Zeit zu nehmen, in der ein Fehler auftritt, ihn um eine Stunde zurückzuschieben und zu sehen, wie genau ich diesen Punkt vorhersagen kann. Wenn ich in der Lage bin, verschieben Sie das Ziel um eine weitere Stunde zurück und sehen Sie, wie viel Vorlaufzeit ich sicher vorhersagen kann. Aber ich bin mir nicht sicher, ob es angebracht ist, dies zu tun.

Verfügbare Daten

Die Daten, die ich habe, werden über einen Zeitraum von 1 Jahr von einem Computer aufgezeichnet. Es gibt ungefähr 60 Sensoren, die alle zwei Minuten aufgezeichnet werden. Diese Sensoren messen Variablen wie die Temperaturen verschiedener Komponenten, aus denen die Maschine besteht (einschließlich Thermostateinstellung im Verhältnis zur tatsächlichen Temperatur), die Geschwindigkeit, mit der die Maschine läuft, den Dampfdruck in der gesamten Maschine, die Lüfterdrehzahl, unabhängig davon, ob die Maschine läuft oder nicht , usw.

Zusätzlich zu den Sensorwerten habe ich den Datensatz um den Grund erweitert, warum die Maschine nicht läuft (z. B. Schichtwechsel, vorbeugende Wartung, Ausfall). Ich habe am Ende dieses Beitrags ein komprimiertes Beispiel hinzugefügt, wie die Daten aussehen. Ich habe das Beispiel geändert, um einen Teil der im gesamten Datensatz erfassten Vielfalt zu erfassen. In der Realität ist die Maschine, wenn sie nicht mehr läuft, je nach Grund zwischen 2 Minuten und 2 Tagen außer Betrieb. Außerdem ändern sich die Variablen nicht unbedingt so schnell wie im folgenden Beispiel, aber ich wollte etwas Abwechslung bieten.

+-----------------+----------+-------------+------------+------------+-------+-------+-----+--------------------------+------------+
|    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
quelle
1
Mit welcher Art von Maschine / Branche haben Sie es zu tun?
Fernando

Antworten:

5

Das ist eine schön gestellte und interessante Frage.

Ich habe ein paar Fragen :

  • Haben Sie bereits Einblicke in die Machbarkeit Ihres Ziels? (einige Fehler antizipieren) Haben Sie eine Variable identifiziert, die auf einen Fehler hindeutet?
  • Was ist die typische Zeit vor dem Ausfall?

Ich denke, der natürliche Weg, ein solches Problem zu untersuchen, wäre die Verwendung einer Überlebensanalyse. Und damit vertraut zu sein, wird ein Plus sein!

Was ich tun würde (obwohl mir nicht alle Besonderheiten Ihres Problems bekannt sind):

  • Berechnen Sie Ihre interessierende Zeitvariable ( ) und das Auftreten der Ereignisvariablen ( ): In diesem Schritt können Sie:ydelta

    • Betrachten Sie die Ausfallzeit als Ereignis
    • Betrachten Sie die vorbeugende Wartungszeit als Zensurvariable
    • Überspringen Sie die Schichtzeit für die Berechnung der Ausfallzeit und die Zensur
  • Passen Sie ein Cox-Modell an diese Daten an:

    • Anmerkung: Sie haben zeitlich veränderte Kovariaten (an dieser Adresse befindet sich eine Vignette zum Umgang mit zeitabhängigen Kovariaten im Cox-Modell: https://cran.r-project.org/web/packages/survival/vignettes/timedep.pdf )
    • Dieser Schritt ist möglicherweise nicht einfach (ich weiß nicht, dass ich kein Spezialist für zeitabhängige Kovariaten bin). Ich denke zum Beispiel, dass Sie möglicherweise in Schwierigkeiten sind, weil Sie möglicherweise zu viele Änderungspunkte in Ihren Daten haben (Zeitpunkt, zu dem sich eine der Kovariaten ändert).
  • Um Ihr Modell zu verwenden (und zu prüfen, ob Sie vorhersagen können, dass in Zukunft ein Fehler auftreten wird (genügend Zeit vorher)), sollten Sie Ihr Cox-Modell verwenden:

    • Das Cox-Modell gibt Ihnen eine Schätzung der Gefährdungsrate. Das Einfachste, was Sie tun können, um Ihr Modell zu verwenden, ist, eine Online-Vorhersage zu berechnen, während Ihre Maschine läuft, und zu entscheiden, die Maschine anzuhalten, wenn die Gefährdungsrate einen Schwellenwert überschreitet.

Obwohl die natürliche Methode zur Untersuchung Ihres Problems die Überlebensanalyse ist, können Sie Klassifizierungsmethoden verwenden, insbesondere wenn die Zeit vor dem Ausfall kurz ist (auf diese Weise analysieren Sie frühere Daten und werden nicht durch Zensur gestört). In diesem Fall denke ich, dass der Gesamtansatz ziemlich ähnlich wäre.

Geben Sie uns Feedback zu Ihrem Problem!

Ooona
quelle
1
nette Antwort (+1), aber Fragen zum OP sollten nicht in eine Antwort aufgenommen werden. Es ist besser, sie in Kommentaren zum OP zu fragen.
DeltaIV
2

Ich arbeite an ähnlichen Problemen.

Ich schlage vor, dies als Klassifizierungsaufgabe zu modellieren: Beschriften Sie die Daten als ... Systeme / Zeiten, wenn das System vor einem Fehler geschlossen ist ... Systeme / Zeiten, wenn das System fehlerfrei ist

Dann müssen Sie ein Modell anpassen, um diese Klassifizierung durchzuführen. Wahrscheinlich müssen Sie die Daten zuerst in Intervallen aggregieren.

Tobi
quelle
Danke für die Antwort. Mir ist klar, dass diese Frage ein Klassifizierungsmodell erfordert, aber was nicht so klar ist, ist, was als Zielvariable definiert werden soll, um Anzeichen eines Fehlers zu identifizieren, bevor es passiert. Ich möchte jemandem sagen können, wann es so aussieht, als würde seine Maschine mit genügend Vorlaufzeit ausfallen, um tatsächlich etwas dagegen tun zu können. Das Senden einer Warnung 2 Minuten bevor etwas passiert, ist nicht sehr hilfreich.
CurtLH
Ok, dann schlage ich vor: Daten täglich aggregieren. Beschriften Sie die 3 Tage vor einem Fehler als 1, löschen Sie die 3 Tage davor (weil sie möglicherweise zu ähnlich sind) und die Tage davor werden als 0 gekennzeichnet. Dann führen Sie die Klassifizierung durch. Wenn Ihr Modell eine 1 vorhersagt, wissen Sie, dass innerhalb der nächsten 3 Tage ein Fehler auftreten wird. Dies ist nur ein einfaches Beispiel. Natürlich können Sie die Tage auch anders kennzeichnen, damit es für Ihren Business Case funktioniert.
Tobi