LoslegenKostenlos starten

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>
Kurs ansehen

Übungsanweisungen

  • Verwende predict(), um für alle vier Bäume Vorhersagen zu erzeugen. Das test_set sollte über das Argument newdata ü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 (mit test_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 <-
Code bearbeiten und ausführen