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
Instrukcje do ćwiczenia
- Użyj funkcji
predict(), aby wygenerować prognozy dla wszystkich czterech drzew. Jako argumentnewdatapodajtest_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ąctest_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 <-