Klassifikations- und Regressionsbäume mit Datenanalyse (Teil 2) (Stefan Bosse) [6.2024] |
Diese Übung baut auf der vorherigen auf. Hier soll nun die Datenanalyse und Datentransformation näher betrachtet werden.
Bitte folgenden Code ausführen um notwendige Bibliotheken zu laden. Nicht erforderlich bei nativer R Software.
use
eingebaut und steht dann mit allen seinen Funktionen direkt zur Verfügung. print
Funktion ausgeben.
▸
[] |
✗
≡
|
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.
▸
[] |
✗
≡
|
data.mat
: MaterialClass
Wiederholung: Datentabllen lassen sich zeilen- und spaltenweise zerlegen bzw. filtern. Dazu reicht i.A. der Basisoperator []
bzw. [[]]
.
[c]
wählt aus der Datentabelle eine Spalte aus (ergibt wieder eine einspaltige Datentabelle). Der Selektor kann numerisch (Spaltenindex) oder der Name der Spalte als Zeichenkette sein, d.h., c:numeric|character
. [a:b]
wähle die Spalten a bis b aus (ergibt wieder eine mehrspaltige Datentabelle).[row,col]
wählt eine Zelle aus.[,column]
wählt eine Spalte aus.[,columns]
reduziert die Datentabelle auf die angegebenen Spalten (eine, Bereich, oder Menge), d.h. columns:numeric,character,range,vector
.$col
ist ein Spaltenselektor für Datentabelle und gibt einen Vektor zurück!
Teilweise wird bei einer Selektion ein Vektor oder einspaltiger Datenrahmen mit einem Element zurückgegeben. Um direkt den Elementwert zu erhaltn muss 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.
Die Hauptkomponentenanalyse kann wichtige Hinweise auf (lineare) Abhängigkeiten der Eingabeattribute liefern. Sie wird nur auf die Eingabeattribute X angewendet! Die prcomp(data,formula)
Funktion führt die Hauptkomponentenanalyse durch. Sie gibt eine Art Liste mit den wichtigsten Elemente rotation und sdev. Die Datentabelle rotation enthält die Eigenvektoren, der Vektor sdev die Eigenwerte.
Aufgabe. Lese https://stat.ethz.ch/R-manual/R-devel/library/stats/html/prcomp.html. Führe die PCA für die Tabelle mit prcomp(data)
durch. Analysiere die Ausgabe (z.b. mit summary
und names
). Was gibt prcomp
aus?
▸
[] |
✗
≡
|
predict
gibt wieder eine Datentabelle (data.frame) zurück. Spalten können mit dem generischen Selektor [,c(1,2)]
unter Verwendung der numerischen Spaltennummern oder unter Angabe der Spaltennamen [,c("PC1","PC2")]
erfolgen. Die PC sind nach ihrer "Stärke" sortiert, daher verwendet man die PC Vektoren der Reihe nach. Wichtig: Die Datentabelle muss die gleiche Anzahl von Spalten wie die PCA Tabelle haben!
▸
[] |
✗
≡
|
Die neue transformierte Datentabelle besitzt die Spaltennamen PC1 usw., d.h. die die jeweilige Spalte wurde mit dem jeweilgen PC Vektor erzeugt.
Aufgabe. Übertrage nun obiges Beispiel auf die Materialkennwerttabelle. Wähle einige Variablen aus der Tabelle aus, z.B. {E,G,Ro,Su,Sy,HV'}, und erzeuge eine reduzierte Tabelle. Wenn die PCA durchgeführt wurde, kann die ursprüngliche (reduzierte) Datentabelle transformiert werden. Führe dies mit der predict(pca,data.mat.x)
Funktion durch und weise das Ergebnis einer Variablen zu (z.B. data.mat.pca.t
). Wähle geeignete (Anzahl von) PC Vektoren aus. Was ist bei den Werteverteilungen der PCA-transformierten Variablen zu beobachten?
▸
[] |
✗
≡
|
Frage. Welchen Vorteil hat die Verwendung der PCA-transformierten und reduzierten Tabellen (also weniger PCs als ursprüngliche Variablen)?
Aufgabe. Teile die Datentabellen data.mat und data.mat.t auf.
▸
[] |
✗
≡
|
Hier soll jetzt zur vorherigen Übung die Wirkung der PCA-transformierten und reduzierten Datentabellen untersucht werden. Wieder mit C4.5 und C5.0 Modellen.
MaterialClass
(immer als letzte Variable)
▸
[] |
✗
≡
|
▸
[] |
✗
≡
|
Frage. Wie ist die Modellgenauigkeit beim C4.5 uim Vergleich zum C5.0 bei Verwendung von PC1 und PC2? Wie bei nur PC1? Verändere auch die C5.0 Trainingsparameter. Welche Wirkung haben sie? Reicht PC1? Warum nicht PC3? Wie groß sind jweils die Bäume (Tiefe usw.)?
ICE ist ein Klassifikator der mit Intervallarithmetik arbeitet. D.h. jede Attributvariable und deren Werte werden mit einem Unsicherheitsintervall x±εx versehen. Zwei unterschiedliche Werte a und b (einer Variablen) werden als ununterscheidbar angesehen wenn sich deren Intervalle [*a*-ε*a*+ε] und [*b*-ε*b*+ε] überlappen.
Der ICE kann mit der ice(data,epc=c(e1,e2,..),formula=y~a+b+c)
Funktion erstellt werden. Es gibt einen optionallen merge Parameter der Ergebnisknoten zusammenfasst. Zuässige Werte für merge sind 0, 1 und 2.
predict liefert bei ice eine Tabelle mit (value,score) Spalten!
Aufgabe. Wende den ICE Lerner auf den Material Datensatz an. Benutze die Trainingsdaten für das Training. Ermittle den Fehler für die Trainings- und Testdaten. Wird ein Unterschied in der Baumstruktur im Vergleich zum C4.5/C5.0 sichtbar? Wichtig: Wähle geeignete ε Werte für die einzelnen Variablen. Es ist anzunehmen dass die Messungen im Datensatz eine Messunsicherheit von 1ß% besitzen. D.h. wenn der Mttelwert einer Varibale 1000 ist, dann w+re ε=100 zu wählen (10%). Wie verhält sich die Modellgenauigkeit wenn man ε variiert? Was fällt an dem ICE Baum auf (Struktur, Tiefe, Art) verglichen mit C5.0?
▸
[] |
✗
≡
|
Der Random Forest Tree Lerner (https://github.com/karpathy/forestjs) leitet eine Vielzahl einfacher Bäume mit einfachen Regeln aus dem Traingsdatensatz ab. Die Menge an Bäumen wird schließlich bei der Inferenz im Ergebnis kombiniert (fusioniert). Es gibt das R Paket randomForest als Alternative.
Der RF kann mit der rf(data,formula=y~a+b+c)
Funktion erstellt werden. Es gibt zwei wesentlich Parameter:
numTrees
bestimmt die Anzahl der Teilbäume.maxDepth
bestimmt die maximale Höhe eines Teilbaumes.numTries
bestimmt die maximale Anzahl von Iterationen bei der BaumerstellungAuch hier gibt predict wieder eine Tabelle (value,score) zurück, wobei value bei kategorischen Variablen das Klassensymbol angibt.
Aufgabe. Wende den RF Lerner auf den Material Datensatz an. Benutze die Trainingsdaten für das Training. Wähle geeignete Variablen aus. Ermittle den Fehler für die Trainings- und Testdaten. Variiere die Parameter: was ändert sich? Welche Qualität hat das RF Modell im Vergleich zu C5.0?
▸
[] |
✗
≡
|
Der Regressionsbaum wird für kontinuierliche Zielvariablen verwendet. Jetzt drehen wir die Prädiktion um: Eingabe soll eine die Materialklasse sein, Ausgabe einer der Materialparameter, z.B. E. Es gibt also ein Modell für einen materialkennwert.
Der RT Lerner (hier wink-regression-tree) erwartet wenigstens 60 Dateninstanzen.
Der RT kann mit der rt(data,formula=y~a+b+c,)
Funktion erstellt werden. Es gibt fünf einstellbare Parameter:
minLeafNodeItems
, Standardwert ist 10;minSplitCandidateItems
, Standardwert ist 50;minAvgChildrenItems
, Standardwert ist 2;minPercentVarianceReduction
, Standardwert ist 10;maxDepth
, Standardwert ist 20.Der RT Lerner wendet Varianzreduktion (der Zielvariablen) an um geeignete Teilungspunkte zu finden und Teilbäume zu erstellen. Der Algorithmus findet die beste Kandidatenspalte für die Aufteilung auf der Grundlage der maximalen Reduzierung in der Varianz ("Unordnung" oder maximaler Gewinn). Dabei werden die obigen Parameter als Randbedingungen bei der Suche und Baumerstellung verwendet.
Aufgabe. Wende den RT Lerner auf den Material Datensatz an. Benutze die Trainingsdaten für das Training. Ermittle den Fehler für die Trainings- und Testdaten (hier RMSE). Variiere die Parameter: was ändert sich? Findet eine kontinuierliche Regression der Zielvariablen bei der Inferenz statt oder ist diese auf das Training (also der Erstellung des Baumes) beschränkt? Wie gut ist das Modell (RMSE) im Vergleich zum randomisierten RMSE (median-bezigen)?
▸
[] |
✗
≡
|