Konfusionsmatrizen und Genauigkeit unserer finalen Bäume
In den letzten Übungen hast du mehrere beschnittene Entscheidungsbäume gebaut, insgesamt vier. Wie du sehen kannst, unterscheidet sich die endgültige Anzahl der Splits von Baum zu Baum deutlich:
ptree_undersample # 7 splits
ptree_prior # 9 splits
ptree_loss_matrix # 24 splits
ptree_weights # 6 splits
Jetzt ist wichtig zu wissen, welcher Baum hinsichtlich der Genauigkeit am besten abschneidet. Um die Genauigkeit zu erhalten, beginnst du damit, Vorhersagen mit dem Testset zu machen und für jeden dieser Bäume die Konfusionsmatrix zu erstellen. Füge bei den Vorhersagen das Argument type = "class" hinzu. Dadurch musst du keinen Cut-off festlegen.
Trotzdem solltest du dir bewusst sein, dass nicht nur die Genauigkeit wichtig ist, sondern auch Sensitivität und Spezifität. Außerdem hat die Vorhersage von Wahrscheinlichkeiten statt binärer Werte (0 oder 1) den Vorteil, dass der Cut-off verschoben werden kann. Allerdings besteht die Schwierigkeit darin, den Cut-off zu wählen. Darauf kommst du im nächsten Kapitel zurück.
Falls du eine Erinnerung brauchst, so berechnest du die Genauigkeit: $$\textrm{Classification accuracy} = \frac{(TP + TN)}{(TP + FP + TN + FN)}$$
Diese Übung ist Teil des Kurses
<Kurs>Kreditrisikomodellierung in R</Kurs>Übungsanweisungen
- Verwende
predict(), um für alle vier Bäume Vorhersagen zu erzeugen. Dastest_setsollte über das Argumentnewdataübergeben werden. Vergiss nicht,type = "class"anzugeben! - Erstelle für jeden dieser Entscheidungsbäume Konfusionsmatrizen. Nutze dafür die Funktion
table()und setze zuerst den „wahren“ Status (mittest_set$loan_status), gefolgt von der Vorhersage. - Berechne die Genauigkeit anhand jeder der Konfusionsmatrizen.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Make predictions for each of the pruned trees using the test set.
pred_undersample <- predict(ptree_undersample, newdata = test_set, type = "class")
pred_prior <-
pred_loss_matrix <-
pred_weights <-
# construct confusion matrices using the predictions.
confmat_undersample <- table(test_set$loan_status, pred_undersample)
confmat_prior <-
confmat_loss_matrix <-
confmat_weights <-
# Compute the accuracies
acc_undersample <- sum(diag(confmat_undersample)) / nrow(test_set)
acc_prior <-
acc_loss_matrix <-
acc_weights <-