Matricele de confuzie și acuratețea arborilor finali
În exercițiile anterioare, ai construit mai mulți arbori de decizie tăiați – în total patru. După cum poți observa, numărul final de diviziuni variază destul de mult de la un arbore la altul:
ptree_undersample # 7 splits
ptree_prior # 9 splits
ptree_loss_matrix # 24 splits
ptree_weights # 6 splits
Acum este important să știi care arbore are cea mai bună acuratețe. Pentru a o calcula, vei începe prin a face predicții pe setul de testare și vei construi matricea de confuzie pentru fiecare dintre acești arbori. Vei adăuga argumentul type = "class" atunci când faci predicțiile – astfel nu mai este nevoie să stabilești un prag de decizie.
Totuși, este important să reții că nu doar acuratețea contează, ci și sensibilitatea și specificitatea. În plus, predicția probabilităților în loc de valori binare (0 sau 1) are avantajul că pragul de decizie poate fi ajustat. Pe de altă parte, alegerea acestui prag poate fi dificilă. Vei reveni la acest subiect în capitolul următor.
Ca memento, iată formula pentru calculul acurateței: $$\textrm{Classification accuracy} = \frac{(TP + TN)}{(TP + FP + TN + FN)}$$
Acest exercițiu face parte din cursul
Modelarea riscului de credit în R
Instrucțiuni pentru exercițiu
- Folosește
predict()pentru a face predicții cu toți cei patru arbori. Includetest_setîn argumentulnewdatași nu uita să adaugitype = "class"! - Construiește matricele de confuzie pentru fiecare arbore de decizie. Folosește funcția
table()și include mai întâi statusul „real" (printest_set$loan_status), urmat de predicție. - Calculează acuratețea folosind fiecare dintre matricele de confuzie.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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 <-