Klassifikations- und Regressionsbäume mit Datenanalyse (Teil 1) (Stefan Bosse) [6.2024]

Übung 4 - Klassifikations- und Regressionsbäume mit Datenanalyse (Teil 1)

Übung 4 - Klassifikations- und Regressionsbäume mit Datenanalyse (Teil 1)
Vorwort
Literatur
Daten
Datenanalyse
Datenselektion
Datenpartitionierung
Fehlerberechnung
Entscheidungsbäume
C4.5
C5.0
Vergleich

Vorwort

Die Übungen werden mit ein R Dialekt R+ durchgeführt. R+ ist in diese Übung integriert und benötigt keine weitere Software. Ebenso sind die benötigten Daten integriert.


R Set-up

 ▸ 
[]
 ✗ 
 ≡ 

Literatur

Daten

https://www.kaggle.com/datasets/purushottamnawale/materials

Materials and their Mechanical Properties - Mechanical Properties of Design Materials: A Comprehensive Material Dataset

The original material dataset includes the following mechanical properties of metals:

Es gibt eine zusäztliche Spalte MaterialClass die die Einträge in folgende Materialkassen unterteilt:

Aluminum, Brass, Copper, Magnesium, Iron, Steel

DATA: Variable dataMat Type: { Std : string [924], ID : string [924], Material : string [924], Heat treatment : string [924], Su : number [924], Sy : number [924], A5 : (number|string)[924], Bhn : (number|string)[924], E : number [924], G : number [924], mu : number [924], Ro : number [924], pH : (string|number)[924], Desc : string [924], HV : (string|number)[924], MaterialClass : string [924] }

Der Datensatz ist bereits im Notebook enthalten und wird als Datenrahmen/Datentabelle (data.frame) data.mat zur Verfügung gestellt!

Alle nachfolgenden Berechnungen sollen über den Punkt "." an den Namen des Datensatzes angehängt werden.


Zusammenfassung der Datensätze

 ▸ 
[]
 ✗ 
 ≡ 

Datenanalyse

Zunächst soll die Datentabelle analysiert werden. Für die statistische Analyse der Daten stehen verschiedene Funktionen zur Verfügung. so z.B.:

  1. fivenum liefert quantitative erste Informationen über die Werteverteilungen
  2. hist(data,xlim,breaks) liefert qualitative (visuelle) Informationen über die Werteverteilungen (breaks unterteilt die kontinuierliche Datenvariable in Intervalle)

Kategorische und numerische Analyse

 ▸ 
[]
 ✗ 
 ≡ 

Frage. Was fällt bei der Verteilung der kategorischen Variable MaterialClass auf? Wähle weitere Eigenschaftsvariablen aus und füge sie in die Analyse ein. Welche Variablen könnten für eine Klassifikation der Materialklasse geeignet erscheinen? Wie sollte idealerweise die fivenum Analyse aussehen? Was fällt bei den Histogrammen auf?

Datenselektion

Datentabllen lassen sich zeilen- und spaltenweise zerlegen bzw. filtern. Dazu reicht i.A. der Basisoperator [] bzw. [[]].

Teilweise wird bei einer Selektion ein Vektor oder ein einspaltiger Datenrahmen mit einem Element zurückgegeben. Um direkt den Elementwert zu erhalten muss dann der [[]] Operator verwendet werden!

Die Datenselektoren können auf der linken und rechten Seite einer Zuweisung verwendet werden (schreiben und lesen). Datentabellen (und Matrizen) können mittels der cbind und rbind Funktionen spalten- oder zeilenweise kombiniert werden.


Beispiele der Selektion von Datentabellen

 ▸ 
[]
 ✗ 
 ≡ 

Aufgabe. Erstelle aus der Datentabelle data.mat Teiltabellen jeweils mit X (Auswahl, s.o.= und Y (MaterialClass).


Split der Datentabellen

 ▸ 
[]
 ✗ 
 ≡ 

Datenpartitionierung

Das Training von Entscheidungsbäumen ist eine Anpassung und Minimierung einer Fehlerfunktion und erfordert eine repräsentative Menge an Dateninstanzen (Samples). So erwartet ein Regressionsbaumlerner (nächste Übung) mindestens 60 Instanzen, die anderen habe i.A. keine untere Grenze.

Frage. Warum sollte man die Datentabelle in Trainings- und Testdatenpartitionen unterteilen, und was ist bei der Aufteilung zu beachten (Schnittmenge)?

In R kann auf verschiedene Arten eine Datentabelle (Matrix oder Datenrahmen) geteilt werden. Die Teilung muss randomisiert erfolgen, ansonsten gibt es eine verzerrung beim Training und Test.

Bei sehr großen Tabellen (Millionen von Elementen) ist diese Methode ineffizient, da insgesamt drei Vektoren der Länge gleich der Anzahl der Zeilen der Datentabelle erstellt werden müssen. Es gibt andere Funktion in anderen Packages, die die Aufteilung effizienter lösen (z.B. sample.split aus dem caTools Package).


Aufteilung von Datensätzen in Trainings- und Testdaten mit sample Funktion

 ▸ 
[]
 ✗ 
 ≡ 

Aufgabe. Teile den Datensatz auf. Welche Verteilungen sind bei den Datensätzen sinnvoll? Wähle geeignete Werte (wird später noch iterativ verändert). Analysiere die Verteilung der Zielvariable MaterialClass. Was ist zu beachten?


Analyse der Aufteilung der Datensätze in Trainings- und Testdaten

 ▸ 
[]
 ✗ 
 ≡ 

Man kann auch direkt die split Funktion nutzen um Datentabellen aufzuteilen. Man erhält eine Liste mit den partitionierten Datentabellen.


Aufteilung von Datensätzen in Trainings- und Testdaten mit split Funktion

 ▸ 
[]
 ✗ 
 ≡ 

Fehlerberechnung

Der Inferenzfehler von kategorischen Variablen kann durch einen einfachen binären Vergleich zweier Vektoren y und y0 erfolgen. y stammt aus dem Modell, y0 aus dem Datensatz.


Inferenzfehler einer kategorischen Variable

 ▸ 
[]
 ✗ 
 ≡ 

Der Inferenzfehler von numerischen Variablen kann mit linearen (MLE) oder quadratischen Differenzfehlern (MSE) sowie RMSE berechnet werden.


Inferenzfehler einer numerischen Variable

 ▸ 
[]
 ✗ 
 ≡ 

Frage. Was ist der Vorteil von RMSE vs MSE vs. MLE?

Entscheidungsbäume

In den folgenden Übungen sollen verschiedene Modelle und Algorithmen auf die Datensätze angewendet werden (siehe auch Vorlesung)- Hier werden Modell 1 und 2 behandelt:

  1. C4.5
  2. C5.0
  3. ID3
  4. ICE
  5. Random Forest Trees (RF)
  6. Regressionsbaum (RT)

Die Modelle 1-5 können nur mit kategorischen Zielvariablen verwendet werden, Modell 5 nur mit einer kontinuierlichen numerischen Variablen.

Alle Bäume werden sofort aus Daten erstellt, es gibt keine getrennten Schritte Modellerstellung und Modellanpassung.

Nur der C5.0 Lerner ist direkt in R als Paket verfügbar.

Die wichtigsten Eigenschaften eine trainierten Modells lassen sich mit summary(model) sowie die Baumstruktur textuell mit plot.tree(model) oder print ausgeben.

C4.5

Ein Modell kann mit c45(data,formula=y~a+b+c) erstellt werden. Die Formel als zweites Argument bestimmt die abhängige Zielvariable (hier y) in der Datentabelle und die unabhängigien Variablen (Achtung: "+" bedeutet hinzufügen, "-" weglassen). Es gibt keine weiteren Parameter.


C4.5 Entscheidungsbaum aus Daten erstellen. Man ist frei in der Auswahl der Eingabevariable x, y=MaterialClass (immer als letzte Variable)

 ▸ 
[]
 ✗ 
 ≡ 

Aufgabe. Wähle zwei Variablen aus der Materialtabelle aus. Ersetze x und y und traniere (erstelle9 das Modell.

Eine Vorhersage mit neuen Daten kann mit (der überladenen) Funktion predict(model,data) geschehen.


Beispiel Inferenz C4.5 Entscheidungsbaum

 ▸ 
[]
 ✗ 
 ≡ 

Der Baum lässt sich textuell darstellen:


Struktur C4.5 Entscheidungsbaums

 ▸ 
[]
 ✗ 
 ≡ 

Frage. Wieiviele Ebenen hat der Baum? Anmerkung: Die Einrückungstiefe ist ein maß für die Höhe (Anzahl der Ebenen) des Baums.

Aufgabe. Wende den C4.5 Lerner auf den Datensatz an. Benutze die Trainingsdaten für das Training. Ermittle den Fehler für die Trainings- und Testdaten. Verändere die Formel und lasse jeweils eine Variable weg oder füge weitere hinzu. Wie verändert sich der Inferenzfehler? Welche Variablen sind stark? Wie verhalten sich die Fehler auf Trainings- und Testdaten zueinander?


C4.5 Entscheidungsbaum: Training und Inferenz

 ▸ 
[]
 ✗ 
 ≡ 

C5.0

  1. winnowing (TRUE/FALSE)
  2. pruning (TRUE/FALSE)
  3. boosting (TRUE/FALSE)

C6.0 Entscheidungsbaum: Training und Inferenz

 ▸ 
[]
 ✗ 
 ≡ 

Frage. Untersuche die Ergebnisse für verschiedene Kombinationen der Eingabevariablen (1-3) und jeweils mit verschiedenen Lernparametern. Welche Auswirkung auf die Ergebnisse und die Baumgröße (Ebenen und Anzahl der Knoten) sind zu beobachten?

Vergleich

Frage. Welcher Entscheidungsbaumlerner schneidet besser ab, wo gibt es Unterschiede, Vor- und Nachteile bei diesem Datensatz?



Hilfe



Einreichung (Assignment #01-49056 )



Prüfen



Bewerten (Lehrer)




Created by the NoteBook Compiler Ver. 1.27.2 (c) Dr. Stefan Bosse (Mon Jun 03 2024 18:10:51 GMT+0200 (Central European Summer Time))