"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"
"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": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## 3. Datenvorbereitung\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": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## 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. "
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## 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"
]
},
{
"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."
]
},
{
{
"attachments": {},
"attachments": {},
"cell_type": "markdown",
"cell_type": "markdown",
...
@@ -518,42 +645,6 @@
...
@@ -518,42 +645,6 @@
"train_df.head()\n"
"train_df.head()\n"
]
]
},
},
{
"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",
"cell_type": "markdown",
"metadata": {},
"metadata": {},
...
@@ -689,7 +780,7 @@
...
@@ -689,7 +780,7 @@
},
},
"source": [
"source": [
"There are no Null values \n",
"There are no Null values \n",
"there is no missing data"
"there is no missing data."
]
]
},
},
{
{
...
@@ -2872,36 +2963,6 @@
...
@@ -2872,36 +2963,6 @@
"\n"
"\n"
]
]
},
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## 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. "
"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"
]
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": 29,
"execution_count": 29,
...
@@ -3770,36 +3800,6 @@
...
@@ -3770,36 +3800,6 @@
"results_df\n"
"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",
"cell_type": "code",
"execution_count": null,
"execution_count": null,
...
...
...
...
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## 1. Business Understanding
## 1. Business Understanding
%% Cell type:markdown id: tags:business
%% Cell type:markdown id: tags:business
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.
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 id: tags:
%% Cell type:markdown id: tags:
## 2. Data Understanding
## 2. Data Understanding
%% Cell type:markdown id: tags:daten
%% Cell type:markdown id: tags:daten
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.
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.
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:
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:
id: Die Nummer der installierten Komponente/Bauteil (int)
id: Die Nummer der installierten Komponente/Bauteil (int)
zyklus: Zeit in Zyklen (zyklus: 1 Zyklus = 1 Tag) (int)
zyklus: Zeit in Zyklen (zyklus: 1 Zyklus = 1 Tag) (int)
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.
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.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## 3. Datenvorbereitung
%% Cell type:markdown id: tags:datenvorbereitung
Zunächst wird überprüft, ob im Datensatz Nullwerte vorhanden sind. (Keine Nullwerte gefunden, daher gibt es keine fehlenden Daten.)
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.
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.
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.
Abschließend werden Histogramme der Variablen erstellt, um zu bestimmen ob alle Variablen sinnvoll für das Modell sind.
%% Cell type:markdown id: tags:
## 4. Datenmodell
%% Cell type:markdown id: tags:datenmodell
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.
%% Cell type:markdown id: tags:
## 5. Evaluation
%% Cell type:markdown id: tags:evaluation
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.
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.
%% Cell type:markdown id: tags:
## 6. Umsetzung
%% Cell type:markdown id: tags:umsetzung
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.
Zunächst wird überprüft, ob im Datensatz Nullwerte vorhanden sind. (Keine Nullwerte gefunden, daher gibt es keine fehlenden Daten.)
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.
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.
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.
Abschließend werden Histogramme der Variablen erstellt, um zu bestimmen ob alle Variablen sinnvoll für das Modell sind.
%% Cell type:markdown id: tags:
### 3.1 Auf Nullwerte prüfen
### 3.1 Auf Nullwerte prüfen
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
print(train_df.isna().sum())
print(train_df.isna().sum())
```
```
%% Output
%% Output
id 0
id 0
zyklus 0
zyklus 0
setting1 0
setting1 0
setting2 0
setting2 0
setting3 0
setting3 0
s1 0
s1 0
s2 0
s2 0
s3 0
s3 0
s4 0
s4 0
s5 0
s5 0
s6 0
s6 0
s7 0
s7 0
s8 0
s8 0
s9 0
s9 0
s10 0
s10 0
s11 0
s11 0
s12 0
s12 0
s13 0
s13 0
s14 0
s14 0
s15 0
s15 0
s16 0
s16 0
s17 0
s17 0
s18 0
s18 0
s19 0
s19 0
s20 0
s20 0
s21 0
s21 0
dtype: int64
dtype: int64
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
print(test_df.isna().sum())
print(test_df.isna().sum())
```
```
%% Output
%% Output
id 0
id 0
zyklus 0
zyklus 0
setting1 0
setting1 0
setting2 0
setting2 0
setting3 0
setting3 0
s1 0
s1 0
s2 0
s2 0
s3 0
s3 0
s4 0
s4 0
s5 0
s5 0
s6 0
s6 0
s7 0
s7 0
s8 0
s8 0
s9 0
s9 0
s10 0
s10 0
s11 0
s11 0
s12 0
s12 0
s13 0
s13 0
s14 0
s14 0
s15 0
s15 0
s16 0
s16 0
s17 0
s17 0
s18 0
s18 0
s19 0
s19 0
s20 0
s20 0
s21 0
s21 0
dtype: int64
dtype: int64
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
There are no Null values
There are no Null values
there is no missing data
there is no missing data.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
### 3.2 Berechnung der verbleibenden Tage bis zum Ausfall
### 3.2 Berechnung der verbleibenden Tage bis zum Ausfall
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).
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).
Es ist zu sehen, dass alle Daten entweder den Datentyp float oder int haben, es gibt keine kategorialen Variablen im Datensatz. Nun zeigen wir die einzelnen Variablen in einem Histogramm an, um festzustellen, ob alle Variablen sinnvoll für das Modell verwendet werden können. Die gerade erstellten Spalten sowie "id" werden nicht berücksichtigt, da diese für die Auswertung verwendet werden und es keinen Sinn macht, sie hier zu überprüfen.
Es ist zu sehen, dass alle Daten entweder den Datentyp float oder int haben, es gibt keine kategorialen Variablen im Datensatz. Nun zeigen wir die einzelnen Variablen in einem Histogramm an, um festzustellen, ob alle Variablen sinnvoll für das Modell verwendet werden können. Die gerade erstellten Spalten sowie "id" werden nicht berücksichtigt, da diese für die Auswertung verwendet werden und es keinen Sinn macht, sie hier zu überprüfen.
Wir sehen, dass einige Variablen einfach konstante Werte haben. Diese können gelöscht werden, da sie keine nützlichen Informationen über den Zustand der Anlage enthalten. Die folgenden Spalten werden gelöscht: 'setting3', 's1', 's5', 's10', 's16', 's18', 's19'.
Wir sehen, dass einige Variablen einfach konstante Werte haben. Diese können gelöscht werden, da sie keine nützlichen Informationen über den Zustand der Anlage enthalten. Die folgenden Spalten werden gelöscht: 'setting3', 's1', 's5', 's10', 's16', 's18', 's19'.
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.
%% Cell type:markdown id: tags:
Nachdem die Daten vorbereitet wurden, kann die Modellierung beginnen. Wir werden ein Long Short-Term Memory (LSTM) Layer Recurrent Neural Network (RNN) mit der Keras-Bibliothek aufbauen. Keras erfordert ein dreidimensionales numpy-Array (Eingaben: Ein 3D-Tensor mit der Form [Batch, Zeitpunkte, Merkmale]), siehe auch: https://keras.io/api/layers/recurrent_layers/lstm/ ). Daher werden in einem nächsten Schritt unsere Merkmale oder Variablen in diese dreidimensionale Form gebracht.
Nachdem die Daten vorbereitet wurden, kann die Modellierung beginnen. Wir werden ein Long Short-Term Memory (LSTM) Layer Recurrent Neural Network (RNN) mit der Keras-Bibliothek aufbauen. Keras erfordert ein dreidimensionales numpy-Array (Eingaben: Ein 3D-Tensor mit der Form [Batch, Zeitpunkte, Merkmale]), siehe auch: https://keras.io/api/layers/recurrent_layers/lstm/ ). Daher werden in einem nächsten Schritt unsere Merkmale oder Variablen in diese dreidimensionale Form gebracht.
Gleichzeitig wird die Fenstergröße definiert, da LSTMs den Vorteil haben, Dinge aus langen Sequenzen ohne direkte Abstraktion zu merken.
Gleichzeitig wird die Fenstergröße definiert, da LSTMs den Vorteil haben, Dinge aus langen Sequenzen ohne direkte Abstraktion zu merken.
Im nächsten Schritt wird ein LSTM-Netzwerk erstellt, da die Daten jetzt in dreidimensionaler Form vorliegen. Dafür wird das Netzwerk mit 100 Einheiten im ersten Schritt und einem zweiten mit 50 Einheiten erstellt. Dropout wird verwendet, um Overfitting zu vermeiden. Schließlich wird eine einzelne Schicht, unsere Ausgabeschicht mit einer einzigen Einheit und der Sigma-Aktivierung, generiert, da hier ein binäres Klassifikationsproblem vorliegt.
Im nächsten Schritt wird ein LSTM-Netzwerk erstellt, da die Daten jetzt in dreidimensionaler Form vorliegen. Dafür wird das Netzwerk mit 100 Einheiten im ersten Schritt und einem zweiten mit 50 Einheiten erstellt. Dropout wird verwendet, um Overfitting zu vermeiden. Schließlich wird eine einzelne Schicht, unsere Ausgabeschicht mit einer einzigen Einheit und der Sigma-Aktivierung, generiert, da hier ein binäres Klassifikationsproblem vorliegt.
<tensorflow.python.keras.callbacks.History at 0x24033da29d0>
<tensorflow.python.keras.callbacks.History at 0x24033da29d0>
%% Cell type:markdown id: tags:
## 5. Evaluation
%% Cell type:markdown id: tags:evaluation
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.
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.
Im nächsten Schritt werden wir die Testdaten vergleichen. Dafür haben wir den letzten funktionierenden Zustand des Zyklus für jeden Feuermelder in den Testdaten gespeichert. Um die Ergebnisse vergleichen zu können, verwenden wir die letzte Sequenz für jeden Feuermelder in den Testdaten.
Im nächsten Schritt werden wir die Testdaten vergleichen. Dafür haben wir den letzten funktionierenden Zustand des Zyklus für jeden Feuermelder in den Testdaten gespeichert. Um die Ergebnisse vergleichen zu können, verwenden wir die letzte Sequenz für jeden Feuermelder in den Testdaten.
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.