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 |
+-----------------+----------+-------------+------------+------------+-------+-------+-----+--------------------------+------------+
Antworten:
Das ist eine schön gestellte und interessante Frage.
Ich habe ein paar Fragen :
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:y delta
Passen Sie ein Cox-Modell an diese Daten an:
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:
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!
quelle
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.
quelle