Zacznij terazZacznij za darmo

Macierze pomyłek i dokładność naszych końcowych drzew

W poprzednich ćwiczeniach zbudowano kilka przyciętych drzew decyzyjnych – łącznie cztery. Jak widać, liczba podziałów różni się między nimi dość znacznie:

ptree_undersample  # 7 splits
ptree_prior  # 9 splits
ptree_loss_matrix  # 24 splits
ptree_weights  # 6 splits

Teraz ważne jest, aby sprawdzić, które drzewo osiąga najlepszą dokładność. Zaczniesz od wykonania prognoz na zbiorze testowym, a następnie zbudujesz macierz pomyłek dla każdego z tych drzew. Przy tworzeniu prognoz dodaj argument type = "class". Dzięki temu nie ma potrzeby ustalania progu odcięcia.

Warto jednak pamiętać, że sama dokładność to nie wszystko – równie istotne są czułość i swoistość modelu. Prognozowanie prawdopodobieństw zamiast wartości binarnych (0 lub 1) daje tę przewagę, że próg odcięcia można dowolnie przesuwać. Z drugiej strony, wybór odpowiedniego progu bywa wyzwaniem. Do tego zagadnienia wrócimy w następnym rozdziale.

Dla przypomnienia, oto jak oblicza się dokładność klasyfikacji: $$\textrm{Classification accuracy} = \frac{(TP + TN)}{(TP + FP + TN + FN)}$$

To ćwiczenie jest częścią kursu

Modelowanie ryzyka kredytowego w R

Zobacz kurs

Instrukcje do ćwiczenia

  • Użyj funkcji predict(), aby wygenerować prognozy dla wszystkich czterech drzew. Jako argument newdata podaj test_set. Pamiętaj, aby dodać type = "class"!
  • Zbuduj macierze pomyłek dla każdego z tych drzew decyzyjnych. Skorzystaj z funkcji table() – jako pierwszy argument podaj „prawdziwy" status (używając test_set$loan_status), a po nim prognozę.
  • Oblicz dokładność na podstawie każdej z macierzy pomyłek.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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 <-
Edytuj i uruchom kod