diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..b1a9e265185ca99cf597628b81e4623453f60f5e Binary files /dev/null and b/.DS_Store differ diff --git a/Maintenance/.DS_Store b/Maintenance/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..23207c8472fe716692acf9b9b402838fa73f8509 Binary files /dev/null and b/Maintenance/.DS_Store differ diff --git a/Maintenance/Prediction of IOT system failures based on sensor data/notebook.ipynb b/Maintenance/Prediction of IOT system failures based on sensor data/notebook.ipynb index 5c33c0b5f3cef00b76578ed3cda84a57a6d3eb51..8455e80b40889fda89bf83a07575616c440a9bdd 100644 --- a/Maintenance/Prediction of IOT system failures based on sensor data/notebook.ipynb +++ b/Maintenance/Prediction of IOT system failures based on sensor data/notebook.ipynb @@ -1,29 +1,81 @@ { "cells": [ { - "attachments": {}, + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "## 1. Business Understanding " + ] + }, + { "cell_type": "markdown", "metadata": { "editable": true, "include": true, - "paragraph": "BusinessUnderstanding", + "paragraph": "business", + "slideshow": { + "slide_type": "" + }, + "tags": [ + "business" + ] + }, + "source": [ + "Ein wichtiger Punkt bei Brandschutzssystemen ist, dass sie zu jeder Zeit funktionieren. Da es zu Ausfällen von ganzen Anlagen kommen könnte, die durch kleine Mängel entstehen können. Für die Wartung solcher Anlagen wäre es also hilfreich das dies rund um die Uhr passiert und es Hervorsagen gäbe wann Bauteile ausfallen werden. Mit Sensoren ausgestattete Anlagen können manuell überwacht und gesteuert werden. Auf diesen Sensoren läuft eine Software, die alle Sensordaten aus den Brandschutzsystemen bündelt und visualisiert. Mithilfe dieser Daten würde das Gefahrenmanagement massiv verbessert werden, da früh und gezielt auf Fehler hingewiesen und die Ausfallzeitpunkte der Bauteile vorhergesagt werden kann." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "source": [ - "# Vorhersage von Ausfällen von Brandschutzsystemen basierend auf Sensordaten\n", - "\n", - "## Business Understanding\n", - "\n", - "Mit Hilfe des Inveron-Gefahrenmanagementsystems können bereits mit Sensoren ausgestattete Anlagen überwacht und kontrolliert werden, zum Beispiel von einer Kontrollstation aus. Inveron ist eine Software, die alle Sensordaten aus den Brandschutzsystemen bündelt und visualisiert. Darüber hinaus können mit Hilfe von Inveron Testalarme ausgelöst oder Alarme zurückgesetzt werden. Das Inveron-Gefahrenmanagementsystem verarbeitet bereits eine Vielzahl von Sensordaten, die in der lokalen Systemumgebung, zum Beispiel im Sicherheitszentrum eines Industrieunternehmens, verwendet werden können. Spezifische Wartungsintervalle geben Minimax-Servicetechnikern an, wann ein System gewartet werden sollte. Neben der Überwachung der eigenen Sensordaten kann Inveron auch Daten von Drittanbietern überwachen. Zum Beispiel können angeschlossene Videokameras zur Branddetektion verwendet werden. Auch Einbruchmeldeanlagen, Systeme zur Zaunüberwachung oder Torsteuerungssysteme können genutzt werden. Offene Schnittstellen (OPC, Modbus, Profibus, BAC-net) ermöglichen eine langfristige Nutzbarkeit bei Austausch einzelner Komponenten." + "## 2. Data Understanding" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "include": true, + "paragraph": "daten", + "slideshow": { + "slide_type": "" + }, + "tags": [ + "daten" + ] + }, + "source": [ + "Für diese Vorhersage wurde ein Datensatz der NASA zu Turbo-Fan-Engines genommen, da es nur eine geringe Anzahl von Echtdaten im Bereich Industrial Internet of Things gibt. \n", + "Drei Dateien bilden den Datensatz für die Vorhersage von Fehlern in Systemen des Internet of Things: PM_train, PM_test und PM_truth. PM_train und PM_test enthalten folgende Attribute:\n", + "id: Die Nummer der installierten Komponente/Bauteil (int)\n", + "zyklus: Zeit in Zyklen (zyklus: 1 Zyklus = 1 Tag) (int)\n", + "setting1, … , setting3: 3 operationale Einstellungen (float) \n", + "s1, … , s21: 21 Sensor Daten (float)\n", + "Die Datei PM_truth enthält die Anzahl der Zyklen, nach denen ein Bauteil ausfällt, geordnet nach der Bauteil-ID. Ziel ist es, mittels Sensordaten den Ausfallzeitpunkt der Bauteile vorherzusagen.\n" ] }, { "attachments": {}, "cell_type": "markdown", - "metadata": {}, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, "source": [ "## 2.1. Import von relevanten Modulen " ] @@ -151,7 +203,13 @@ { "attachments": {}, "cell_type": "markdown", - "metadata": {}, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, "source": [ "## 2.4. Deskriptive Analyse " ] @@ -235,6 +293,7 @@ "base_uri": "https://localhost:8080/", "height": 222 }, + "editable": true, "executionInfo": { "elapsed": 14, "status": "ok", @@ -247,7 +306,11 @@ "user_tz": -120 }, "id": "glAMhyfOSNmU", - "outputId": "ec9a919c-a862-4270-ce6f-3a84366b3934" + "outputId": "ec9a919c-a862-4270-ce6f-3a84366b3934", + "slideshow": { + "slide_type": "" + }, + "tags": [] }, "outputs": [ { @@ -457,12 +520,45 @@ }, { "attachments": {}, + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "## 3. Datenaufbereitung\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "include": true, + "paragraph": "datenvorbereitung", + "slideshow": { + "slide_type": "" + }, + "tags": [ + "datenvorbereitung" + ] + }, + "source": [ + "Zunächst wird überprüft, ob im Datensatz Nullwerte vorhanden sind. (Keine Nullwerte gefunden, daher gibt es keine fehlenden Daten.)\n", + "Danach werden die Daten geladen und dem Trainingsdatensatz (PM_train) eine Spalte hinzugefügt, die die verbleibenden Tage bis zum Austausch des Bauteils angibt. Für den Testdatensatz (PM_test) wird eine binäre Klassifikationsspalte erstellt, um festzustellen, ob ein Feuermelder (id) innerhalb von w1-Zyklen (1 Tag) ausfällt.\n", + "Die \"cycle\"-Spalte wurde mittels Min-Max-Normalisierung skaliert. Diese Normalisierung wurde sowohl auf den Trainings- (PM_train) als auch auf den Testdatensatz (PM_test) angewendet.\n", + "Die Wahrheitsdaten (PM_truth) werden genutzt, um die Labels für die Testdaten (PM_test) zu generieren. Anschließend wird die Datenstruktur überprüft und festgestellt, dass alle Daten entweder den Datentyp float oder int haben und keine kategorialen Variablen enthalten.\n", + "Abschließend werden Histogramme der Variablen erstellt, um zu bestimmen ob alle Variablen sinnvoll für das Modell sind.\n" + ] + }, + { "cell_type": "markdown", "metadata": {}, "source": [ - "# 3. Datenaufbereitung\n", - "\n", - "## 3.1 Auf Nullwerte prüfen" + "### 3.1 Auf Nullwerte prüfen" ] }, { @@ -609,7 +705,7 @@ "id": "pNqxaXBnSNmb" }, "source": [ - "## 2.1 Berechnung der verbleibenden Tage bis zum Ausfall\n", + "### 3.2 Berechnung der verbleibenden Tage bis zum Ausfall\n", "Im ersten Schritt haben wir nun die Daten geladen und werden dem Trainingsdatensatz eine weitere Spalte hinzufügen, die die verbleibenden Tage bis zum Austausch des Feuermelders oder Bauteils angibt. Im Testdatensatz wird eine weitere Spalte für die binäre Unterscheidung oder Klassifikation erstellt. Es soll festgestellt werden, ob ein bestimmter Feuermelder (ID) innerhalb von w1-Zyklen ausfällt, weshalb hier ein fiktiver Wert von 1 für w1 gewählt wird (1 Tag)." ] }, @@ -2749,6 +2845,7 @@ "cell_type": "code", "execution_count": 19, "metadata": { + "editable": true, "executionInfo": { "elapsed": 14, "status": "ok", @@ -2760,7 +2857,11 @@ }, "user_tz": -120 }, - "id": "P3mnyyIHSNmq" + "id": "P3mnyyIHSNmq", + "slideshow": { + "slide_type": "" + }, + "tags": [] }, "outputs": [], "source": [ @@ -2772,13 +2873,33 @@ ] }, { - "attachments": {}, "cell_type": "markdown", "metadata": { - "id": "lyYcIBzMSNmr" + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] }, "source": [ - "# 4. Modellierung und Evaluation " + "## 4. Datenmodell" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "include": true, + "paragraph": "datenmodell", + "slideshow": { + "slide_type": "" + }, + "tags": [ + "datenmodell" + ] + }, + "source": [ + "Als Datenmodell wird das Long Short-Term Memory (LSTM)-Modell verwendet, welches eine Unterart der Recurrent Neural Network (LSTM NN) ist. Dies ist gut für das Erkennen von Mustern in Datenreihen, die beispielsweise in Sensordaten auftreten, geeignet. " ] }, { @@ -3143,11 +3264,34 @@ ] }, { - "attachments": {}, "cell_type": "markdown", - "metadata": {}, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, "source": [ - "## 4.2. Evaluation" + "## 5. Evaluation" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "include": true, + "paragraph": "evaluation", + "slideshow": { + "slide_type": "" + }, + "tags": [ + "evaluation" + ] + }, + "source": [ + "Für die Bewertung der Qualität einer Klassifikation werden Metriken wie Accuracy (= allgemeine Genauigkeit der Klassifikation), Precision (= Präzision der Vorhersage der Kundenabwanderung) und Recall (= Menge der abwanderungswilligen Kunden die korrekt klassifiziert wurden) genutzt. In einer ersten Modellstufe wird eine Accuracy von 86% und ein Recall von 98% erreicht.\n", + "In einer zweiten Modellstufe werden alle Testdaten verglichen. Hierbei handelt es sich um die letzte Sequenz von jedem Feuermelder in den Testdaten. Durch diese Veränderung wird eine Accuracy von 94%, ein Recall von 87,5% und eine Precision von 77,7778% erreicht. Es werden also fast alle Ausfallzeitpunkte der Bauteile durch das Modell erkannt.\n" ] }, { @@ -3626,23 +3770,57 @@ "results_df\n" ] }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "## 6. Umsetzung" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "editable": true, + "include": true, + "paragraph": "umsetzung", + "slideshow": { + "slide_type": "" + }, + "tags": [ + "umsetzung" + ] + }, + "source": [ + "Auf Basis der Sensordaten kann automatisiert eine Vorhersage über den Ausfallzeitpunkt von Bauteilen erstellt werden. Auf diese Weise kann die Wartung der Brandschutzssysteme und Ausfallzeiten minimiert werden." + ] + }, { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, "outputs": [], "source": [] } ], "metadata": { + "branche": "Dienstleistung", "category": "Maintenance", - "colab": { - "name": "Minimax.ipynb", - "provenance": [] - }, - "interpreter": { - "hash": "aab7ff84f4433dd8b68de441cd3c658d57659112bcb62d3bd6aa325045009f13" - }, + "dataSource1": "https://storage.googleapis.com/ml-service-repository-datastorage/Prediction_of_IOT_system_failures_based_on_sensor_data_PM_train.txt", + "dataSource2": "https://storage.googleapis.com/ml-service-repository-datastorage/Prediction_of_IOT_system_failures_based_on_sensor_data_PM_test.txt", + "dataSource3": "https://storage.googleapis.com/ml-service-repository-datastorage/Prediction_of_IOT_system_failures_based_on_sensor_data_PM_truth.txt", + "funktion": "Operations", "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", @@ -3658,10 +3836,12 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.3" + "version": "3.10.4" }, - "skipNotebookInDeployment": true, - "title": "Prediction of IOT system failures based on sensor data" + "repoLink": "https://gitlab.reutlingen-university.de/ki_lab/machine-learning-services/-/tree/main/Maintenance?ref_type=heads", + "skipNotebookInDeployment": false, + "teaser": "Ein wichtiger Punkt bei Brandschutzssystemen ist, dass sie zu jeder Zeit funtionieren. Dafür wird hier in diesem Use Case geschaut, ob Sensordaten für eine KI-basierte Vorhersage von Ausfällen einer solchen Anlage/Systems verwendet werden können. Dies würde helfen, um reaktive und präventive Wartungsintervalle einzuführen. Für diese Vorhersage wurde ein Datensatz der NASA zu Turbo-Fan-Engines genommen, da es nur eine geringe Anzahl von Echtdaten im Bereich Industrial Internet of Things gibt. Dieser besteht aus folgenden Dateien: PM_train, PM_test und PM_truth. Ziel ist es, mittels Sensordaten den Ausfallzeitpunkt der Bauteile vorherzusagen. Verschiedene Schritte zur Datenvorbereitung werden umgesetzt. Als Datenmodell wird das Long Short-Term Memory (LSTM)-Modell verwendet. Das Finale Datenmodell erreicht eine Genauigkeit von 94% und einen Recall von 87,5%. Es werden also fast alle Ausfallzeitpunkte der Bauteile durch das Modell erkannt.", + "title": "Vorhersage von Ausfällen von Brandschutzsystemen basierend auf Sensordaten" }, "nbformat": 4, "nbformat_minor": 4