Entscheidungsbaum / Klassifikations- und Regressionsbaum |
Trainierte Regressions- / Klassifikationsbäume (Entscheidungsbäume) bilden Daten als Entscheidungsregeln ab. Diese Entscheidungsregeln können als ein mehr oder weniger verästelter Baum grafisch dargestellt werden. Anstatt Werte, wie z. B. bei der linearen Regression für die unabhängige Variable, vorzugeben, wird der Verästelung im Baum gefolgt, um den geschätzten Wert zu ermitteln. D. h., die Baum- (Modell-) Interpretation ist einfach, aber nicht so präzise wie z. B. bei einem linearen Modell. Sie können sich über das Video Entscheidungsbaum mit R einen Einstieg in das Thema verschaffen. Hier ein grober Überblick über die Einsatzbereiche von Entscheidungsbäumen:
Häufig angewendete Algorithmen zur Anpassung von Baummodellen sind die Klassifikations- und Regressionsbäume (Classification And Regressions Trees, CART). Der CART-Algorithmus wird in R in a Nutshell übersichtlich dargelegt. Ein Beispiel: Als Beispieldatensatz wird der Datensatz kyphosis des rpart-Paketes verwendet. Dieser Datensatz beschreibt Eingriffe bei Wirbelsäulenverkrümmung bei Kindern. Alle Kinder leiden unter der Verkrümmung und der Datensatz beschreibt das Vorhandensein (2 = present) / nicht Vorhandensein (1 = absent) nach einer Operation. Age ist das Alter in Monaten, Number die Anzahl der betroffenen Wirbeln und Start ist der Wirbel, mit dem der Eingriff begonnen wurde (Entschuldigung, ich bin kein Mediziner): > library(rpart) Der Datensatz kyphosis ist mit 81 Datensätzen nicht besonders groß, trotzdem wird er in einen Trainings- und Testdatensatz geteilt: > n_Daten <- nrow(kyphosis) # 81 Zeilen Möchten Sie sich überzeugen, dass jeder Datensatz-Index sauber in einem Trainings- und Test-Index getrennt wurde, hilft die Funktion sort() weiter: > sort(Training_i); sort(Test_i) Nachdem die Datensatz-Zeilen (der Index) für den Trainings- und Testdatensatz festgelegt wurden, werden die Datensätze definiert: >
Training <- kyphosis[Training_i,] > Test <- kyphosis[Test_i,] Mit dem Trainingsdatensatz Training wird über die Funktion rpart ein Entscheidungsbaum trainiert. Es werden mit dem Funktionsaufruf keine zusätzlichen Argumente zur Steuerung des Trainings mitgegeben. Die Diagnose Kyphosis ist wie erwähnt, eine ja/nein-Beobachtung und oben dargestellte Datensatz-Struktur zeigt, dass diese Variable vom Typ Faktor ist. Der rpart-Funktionsaufruf kann mit dem Argument method = “class” so gesteuert werden, dass ein Klassifikationsbaum geschätzt wird (es liegen ja keine kontinuierliche Beobachtungen vor = Regressionsbaum). In dem folgenden einfachen Funktionsaufruf errät der rpart-Algorithmus, um welchen Typ es sich bei der Kriteriumsvariable (Kyphosis) handelt und schätzt einen Klassifikationsbaum: > # Einfaches Training, ohne weitere Funktionsargumente: Die obige zahlenmäßige Ausgabe der Entscheidungsbaum-Anpassung zeigt, dass die Parameter Start und Age einen wesentlichen Beitrag zur operativen Korrektur der Wirbelsäulenverkrümmung haben. Wie ist obige Ausgabe zu lesen? Im mittleren Abschnitt der Ausgabe wird die Legende ausgeben:
Die Baumstruktur, d. h., das Schätzen der optimalen Anpassung ist durch Wahl der geeigneten Funktionsargumente möglich, was in diesem Beispiel aber nicht vertieft wird! Zur Unterstützung der Anpassungs-Interpretation kann die Anpassung grafisch dargestellt werden: > plot(Anpassung, uniform = T, compress = T, branch = 0.7) Wenn der obige Entscheidungsbaum das erste mal betrachtet wird, ist bestimmt Deutungsunterstützung notwendig. Dazu wird obige Grafik ein wenig ergänzt: Der Entscheidungsbaum macht deutlich, dass ein operativer Erfolg von dem Start-Wirbel (ab dem ~13 Wirbel) und dem Alter des Kindes (jünger als 51,5 Monate) abhängt. Um den Erfolg eines Eingriffes für eine bestimmte Wirbel-Start-Position unter Berücksichtigung des Kindesalters abzuschätzen, braucht man nur dem Baum zu folgen! Über die Funktionen printcp(Anpassung) und summary(Anpassung) werden Angaben über die Güte der Schätzung gemacht. Für Regressionsbäume ist die Funktion rsq.rpart() interessant! Über diese Funktion wird für den geschätzten (trainierten) Baum für jeden Knoten der Komplexitätsparameter CP mit den dazugehörigen Abweichungen, inklusive grafischer Darstellung, ausgegeben. Erscheint der geschätzte Baum zu komplex (visueller Eindruck und aufgrund des Parameters CP), lässt er sich über die Funktion prune(geschätzter Baum, cp = Schätzung auf Basis des relativen Fehlers) zurückschneiden und neu schätzen. Die Schätzung des Klassifikationsbaums Anpassung basiert auf einen Trainingsdatensatz mit 56 Beobachtungen. Zur Schätzung eines Entscheidungsbaumes sollte die Anzahl der Beobachtungen (die Größe des Datensatzes) deutlich höher sein (mehrere Hundert). Die Gütekriterien sind eine Sache. Ein Test, basierend auf gemachte Beobachtungen, eine andere. Nun kommt unser Testdatensatz ins Spiel! Wir machen eine Vorhersage auf Basis des Testdatensatzes, ob der Eingriff erfolgreich ist: > # Auf Basis des Modells “Anpassung” sollen für die Daten “Test” Die Kyphosis-Beobachtung, die sich in dem Test- und Vorhersage-Daten unterscheiden, sind markiert! Zum Schluss möchte ich folgende Punkte hervorheben:
|
Hat der Inhalt Ihnen weitergeholfen und Sie möchten diese Seiten unterstützen? |