› Demo 5 Teil 2: Datenanalyse mit MATLAB
Teil 2 der Demo 5 veranschaulicht die Datenanalyse, ein Schritt des Predictive Maintenance-Prozesses, am Beispiel des Automobildatensatzes, den wir auch für die vorigen Demos verwendet haben. Das interaktive Live Script wurde mit Hilfe der MATLAB Statistics and Machine Learning Toolbox und des LiveScript Editors erstellt. Die Funktionalität und die einzelnen Schritte sind in dem Lernvideo Demo5 - Predictive Maintenance mit MATLAB auf unserem YouTube-Kanal veröffentlicht.
Die Datenanalyse mit MATLAB
Die Datenanalyse wird mit Hilfe der Funktionen "readtable" (Daten aus Datei einlesen), "fitctree" (Klassifikationsmodell erstellen) und "predict" (Modell anwenden) zusammengebaut. Der vereinfachte MATLAB-Code der Datenanalyse ist in den Tabs Analyse-Code und Vorhersage-Code zu sehen und beinhaltet verschiedene Schritte: Einlesen und Speichern der Daten (Detailerklärungen in Tab "Daten"), Bearbeitung der Daten (Details in Tab "Daten"), die Analyse der Trainingsdaten (Details in Tab "Analyse") und die Vorhersage mit Hilfe des erstellten Entscheidungsbaum-Modells (Details in Tab "Vorhersage").
Bevor das Live Script verwendet werden kann, muss die Statistics and Machine Learning-Toolbox in MATLAB installiert sein und der Arbeitspfad auf den Ordner gesetzt werden, der alle unter dem Download vorhandenen Dateien und die demo5.mlx-Datei enthält.
% Einlesen der Daten
data = readtable('demo2_training2.xlsx',...
'ReadVariableNames',true);
% Ausfall-Variable auslesen und speichern
ausfall = data(1:end,2);
% Merkmale erstellen
merkmale = data(1:end,[3:23 25]);
% Auswahl der Merkmale für die Anzeige
bsp_merkmale = [1 14 22];
% Auswahl der Bsp.Ausgabe/Merkmale
% editierbar
% die maximale Merkmal-Nr. ist 22
disp('Ein Ausschnitt der ersten 5 Trainingsdaten')
disp('sieht wie folgt aus:')
% Bsp.Ausgabe der Daten erstellen
out = [ausfall(1:5,1), merkmale(1:5,bsp_merkmale)]
% Parameterwahl und Erstellung des Modells
n=20; m=10;
tree = fitctree(merkmale, ausfall, ...
'SplitCriterion', 'deviance',...
'MinParentSize', n, 'MaxNumSplits', m);
view(tree) % Textausgabe des Baumes
view(tree,'mode','graph') % Grafikausgabe
% Testdaten einlesen
data_test = readtable('demo2_test.xlsx', 'ReadVariableNames',true);
merkmale_neu = data_test(1:end,[3:23 25]);
% Testdaten anzeigen
bsp_merkmale = [1 4 22];
disp('Ein Ausschnitt der neuen Merkmalskombinationen')
disp('sieht wie folgt aus:')
out2 = merkmale_neu(1:4,bsp_merkmale)
% Vorhersage mittels des Baums
disp('Die Vorhersage für die neuen Merkmalskombinationen')
disp('bzgl. eines Ausfalls lautet:')
vorhersage = predict(tree, merkmale_neu)
In den Zeilen 2-3 des Daten-Codes wird die Excel-Datei "demo2_training2.xlsx" mit der "readtable"-Funktion
eingelesen und mit der Zuweisung ("="-Zeichen) unter dem Namen "data" gespeichert. Die Trainingsdaten werden verwendet
um den Vektor, der die Ausfall-Variable enthält, und den Vektor mit ausgewählten Merkmalen zu erstellen und zu speichern
(Zeilen 6-7).
Die Anzeige der Merkmale der ersten 5 Beobachtungen erfolgt interaktiv durch den Anwender mit Änderung des Vektors in Zeile 11.
In den Zeilen 16 und 17 wird die "disp"-Funktion zur Erzeugung einer Text-Ausgabe in der Ausgabe-Spalte des Live Scriptes verwendet.
In Zeile 20 wird die Anzeige-Auswahl erstellt und in der Ausgabe-Spalte direkt ausgegeben.
Hier wird die fitctree-Funktion zur Erstellung eines Klassifikationsmodells verwendet.
- Zeile 5: Der Funktion werden der Vektor mit ausgewählten Merkmalen und die Ausfall-Variable als Parameter übergeben.
- Zeile 6: Durch Setzen des Parameters SplitCriterion auf deviance wird erreicht, dass der Entscheidungsbaum auf Basis des CART-Algorithmus mittels des Informationgehalt-Kriteriums erstellt wird.
-
Zeile 7: Durch das Setzen zweier weiterer Parameter wird die Mindestanzahl der Beobachtungen pro Knoten und
maximale Anzahl der Verzweigungen im Baum gesteuert.
MinParentSize: Gibt die Mindestanzahl der Beobachtungen pro Knoten an und wird hier
auf n = 20 gesetzt.
MaxNumSplits: Gibt die maximale Anzahl der Verzweigungen im Baum an und wird hier auf m = 10 gesetzt.
Der erstellte Entscheidungsbaum wird unter dem Namen "tree" gespeichert und kann mit der "view"-Funktion in Textform (Zeile 9) oder grafisch als Baum (mit Setzen des Parameters "'mode'" auf "'graph", Zeile 11 ) in der Ausgabe-Spalte angezeigt werden.
Der Vorhersage-Code ist die Fortsetzung des Analyse-Codes und beinhaltet das Einlesen der Testdaten mittels der "readtable"-Funktion
und deren Speicherung unter dem Namen "data_test".
Die Vorhersage für die Testdaten erfolgt durch Aufruf der "predict"-Funktion (Zeile 14),
an die das zuvor erstellte Entscheidungsbaum-Modell "tree" und die Testdaten "merkmale_neu"
übergeben werden. Die Vorhersage wird unter dem Namen "vorhersage" gespeichert.
Die Auswahl von Merkmalen aus der Merkmalstabelle erfolgt durch Angabe der Zeilen
und Spalten in der üblichen MATLAB-Syntax:
merkmale(1:5,[1 14 22]) wählt z.B. die Zeilen 1 bis 5 und die Spalten 1, 14 und 22 aus.
Verwendete MATLAB-Funktionen
Die readtable-Funktion liest Daten im Excel-Format ein.
Die readtable-Funktion ist eine Funktion, die Daten im Excel-Format einliest.
Die readtable-Funktion wird in unserem Prozess zweimal verwendet: einmal,
um den Trainingsdatensatz einzubinden, und einmal, um den Testdatensatz einzubinden.
Die fitctree-Funktion erstellt den Entscheidungsbaum.
Die fitctree-Funktion ist eine Funktion aus der "Statistics and Machine Learning"-Toolbox, die für die Daten den passenden Algorithmus
wählt
und einen Entscheidungsbaum auf Basis eines unter den Parametern wählbaren Kriteriums erstellt, z.B. der Entropie bzw. des
Informationgehalts.
Wir erstellen den Baum mittels des Entropie/Informationgehalt-Kriteriums (mit Setzen des Parameters "'SplitCriterion'" auf "'deviance'")
basierend auf den Trainingsdatensatz der Motoren.
Die Variable "Ausfall" wird mit Übergabe als zweiter Parameter
in der fitctree-Funktion als Vorhersagevariable definiert.
Die Ausgabe-Funktionen für das Modell: view.
Die view-Funktion ist eine Funktion, die das Modell/den Baum in Textform oder grafisch in der Ausgabe-Spalte anzeigt.
Standardmäßig wird die Textform angezeigt, die grafisch Ausgabe als Baum wird mit Setzen des Parameters "'mode'" auf "'graph" erzeugt.
Die view-Funktion mit Grafik-Ausgabe ist eine Funktion, die die Äste, Knoten und Blätter des Baums im Grafikfenster ausgibt.
Die predict-Funktion führt die Vorhersage durch.
Die predict-Funktion ist eine Funktion, die das als Parameter übergebene Vorhersagemodell (hier "tree") auf einen Datensatz (hier "merkmale_neu") anwendet und somit die Vorhersage bzw. Klassifikation für eine neue Beobachtung durchführt.
Quellcode und weitere Infos
Hier können Sie den Quellcode des Projektes herunterladen, die Datei demo5.m (als komprimierte zip-Datei).
Mit Beiträgen von: Anke Welz, Eva Kiss
Tools: MATLAB Statistics and Machine Learning Toolbox