›   Demo 5 Teil 2: Datenanalyse mit MATLAB

Teil 2 der Demo 5 veranschaulicht die Datenanalyse, ein Schritt des Predictive Maintenance-Prozesses, am Beispiel des Automobil­datensatzes, 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