Predictive Maintenance am Beispiel einer Flugzeugturbine
Nachfolgend ein einfaches Beispiel für einen Entwicklungsprozess mit einem Algorithmen-Baukasten. Als Datengrundlage dient der Datensatz "Turbofan Engine Degradation Simulation Data Set" aus dem Nasa Prognostics Data Repository. In diesem Datensatz wird der Betrieb von Flugzeugturbinen simuliert, deren - ebenfalls simulierte - Sensormesswerte für viele Flüge verfügbar sind. Das Szenario: Der Turbinenzustand verschlechtert sich nach und nach. Ziel ist die Vorhersage, wann die Turbine voraussichtlich nicht mehr funktionsfähig sein wird.
Voraussetzung hierfür sind Service- und Reparaturdaten, mit denen sich die korrekte Antwort für die aufgezeichneten Daten berechnen lässt. Diese Antwort gilt es herauszufiltern und zu verifizieren.
Als Technologien dienen die Programmiersprache Python - einfach lesbar für den einigermaßen versierten ITler, selbst wenn er kein Python kann - und scikit-learn zur Nutzung der "intelligenten" Algorithmen. Zum selbst ausprobieren: Code downloaden oder unter Windows Anaconda installieren und mit Jupyter Notebook arbeiten. Nach der Installation von Anaconda kann aus dem Anaconda Navigator direkt ein Notebook aufgerufen werden.
Es gibt unterschiedliche Möglichkeiten, die Problemstellung zu definieren, die zur Prognose führt:
Regression, also der Versuch, die verbleibende Lebenszeit der Turbine in Tagen vorherzusagen. Hier ist die Vorhersage ein Zahlenwert.
Klassifikation. Sie arbeitet mit klar definierten Annahmen, wobei die sogenannte Binärklassifikation nur einen Wert zugrunde legt. Zum Beispiel: Das Remaining Useful Life (RUL) der Turbine beträgt zehn Tage. Hier ist die Antwort eine Bestätigung der Annahme (ja) oder deren Verneinung (nein). Möglich ist auch eine Multiklassifikation, also die Annahme eines RUL von 10, 15, 20, 30, … Tagen. Die Antwort ist jeweils ja oder nein.
ML-Algorithmen: Mathematischer Zusammenhang
Betrachten wir der Einfachheit halber die Binärklassifikation. Zunächst gilt es einen mathematischen Zusammenhang (Funktion) zwischen den Sensormesswerten und dem Vorhersageziel (RUL) zu finden. Die Art der Zusammenhänge - zum Beispiel linear, nicht-linear - bedingt den Algorithmus, mit dem sich der beste mathematische Zusammenhang finden lässt. Wir wählen hier die logistische Regression, sie ist ein für Binärklassifikation sehr einfacher Algorithmus.
Zur Erinnerung: Die Daten in unserem Idealbeispiel enthalten Sensormesswerte zu bestimmten Zeitpunkten und die vorberechnete, korrekte Antwort aus den Servicedaten. Für unser Beispiel teilen wir die Daten vereinfachend in zwei Teile auf: Die Trainingsdaten, um die Funktion anzupassen und die Testdaten, um ihre Qualität zu bewerten.
Dazu "füttern" wir das Modell mit den Sensormesswerten aus den Trainingsdaten und vergleichen die Ausgabe unseres Modells (defekt - ja/nein) mit dem korrekten Wert, der in der Realität aus der Servicehistorie hervorgeht. Aus der realen Servicehistorie ist beispielsweise bekannt, wann genau die Turbine nicht mehr funktionstüchtig war. Werden diese Daten über die aufgezeichneten Messdaten gelegt, lässt sich die korrekte Antwort im Voraus berechnen.
Jetzt nimmt man einen Teil aus der Historie und die dazugehörigen korrekten Antworten, um das Modell zu erzeugen. Der andere Teil, die Testdaten, wird genutzt, um zu prüfen, wie gut das Modell jetzt ist: Die Sensorwerte dienen als Input, die Ergebnisse der Modellvorhersage werden wieder mit dem korrekten Wert verglichen.
Qualität des Machine-Learning-Modells prüfen
Anhand der Trainingsdaten wird die Funktion gesucht, die den Zusammenhang zwischen Sensormesswerten und RUL so gut wie möglich nachbildet. Um die Qualität des so trainierten Modells zu bewerten, geben wir die Testdaten nach demselben Muster ein. (Anmerkung: In der Realität ist die korrekte Aufteilung des Datensatzes etwas komplizierter.)
Der Datensatz in unserer Turbinen-Simulation ist schon gut aufbereitet. Deshalb ist hier je nach eingesetzter Machine-Learning-Methode etwas "Feature Engineering" notwendig, wie etwa das Erzeugen neuer Spalten. Dies macht es dem Algorithmus leichter, eine gute Lösung zu finden. Für unser Testbeispiel lassen wir diesen Schritt der Einfachheit halber aus.
Für die Anpassung unseres Modells verwenden wir scikit-learn, eine einfache Schnittstelle, um viele Algorithmen zu nutzen. Sie bietet "Schablonen" an, die lediglich mit Testdaten befüllt werden müssen. Das Prinzip: Schablone initialisieren, Daten einladen, Optimierungsparameter wählen, Optimierung starten und Ergebnis auslesen.
Ein Blick auf die Konfusionsmatrix zeigt zum Beispiel in der ersten Zeile, dass wir mit 63 korrekterweise eine Turbine als "wird in den nächsten 30 Zyklen nicht kaputt gehen" klassifiziert haben, aber zwölf mal fälschlicherweise als "wird in den nächsten 30 Zyklen kaputt gehen".
Vorhersagequalität ist immer relativ, da sie abhängig ist vom konkreten Einsatzszenario. Wichtig ist dabei vor allem: Welche Folgen eines falschen Ergebnisses sind akzeptabel und welche nicht? Beispiel: Das Modell initiiert die Wartung der Maschine, obwohl sie noch gar nicht erforderlich wäre (falsch-positives Ergebnis). Oder die Wartung erfolgt zu spät und die Maschine fällt aus (falsch-negatives Ergebnis). Bei einer Flugzeugturbine ist letzteres sicherlich nicht akzeptabel.
Fazit: Keine Angst vor Künstlicher Intelligenz
Unternehmen, die ihre Wertschöpfung mit vorausschauender Wartung steigern wollen, kommen nicht daran vorbei, sich mit Künstlicher Intelligenz auseinanderzusetzen. Denn ohne Machine Learning ist wirksame Predictive Maintenance nicht möglich. Der Einstieg in die Entwicklung von Machine-Learning-Algorithmen ist aber nicht so schwierig, wie es auf den ersten Blick erscheint.
Natürlich ist das Erreichen der Produktionsreife komplizierter, abhängig vom Anwendungsfall und vom Risiko im praktischen Einsatz. In aller Regel ist es daher sinnvoll, einen Spezialisten einzubinden, der über das erforderliche Knowhow verfügt und alle involvierten Parteien unter einen Hut bringt. (mb)