Förvirringsmatriser och noggrannhet för våra slutliga träd
Under de senaste övningarna har du byggt ett antal beskurna beslutsträd – fyra stycken totalt. Som du kan se varierar det slutliga antalet uppdelningar ganska mycket från träd till träd:
ptree_undersample # 7 splits
ptree_prior # 9 splits
ptree_loss_matrix # 24 splits
ptree_weights # 6 splits
Nu är det viktigt att ta reda på vilket träd som presterar bäst i fråga om noggrannhet. För att beräkna noggrannheten börjar du med att göra förutsägelser med testmängden och konstruerar sedan en förvirringsmatris för vart och ett av träden. Du lägger till argumentet type = "class" när du gör förutsägelserna – det innebär att du slipper ange ett tröskelvärde.
Det är dock viktigt att komma ihåg att noggrannheten inte är det enda som spelar roll: även känslighet och specificitet är centrala mått. Att förutsäga sannolikheter i stället för binära värden (0 eller 1) har dessutom fördelen att tröskelvärdet kan justeras fritt. Svårigheten ligger då i valet av just det tröskelvärdet – det återkommer du till i nästa kapitel.
Här är en påminnelse om hur noggrannheten beräknas: $$\textrm{Classification accuracy} = \frac{(TP + TN)}{(TP + FP + TN + FN)}$$
Den här övningen är en del av kursen
Kreditriskmodellering i R
Övningsinstruktioner
- Använd
predict()för att göra förutsägelser för alla fyra träd. Inkluderatest_seti argumentetnewdataoch glöm inte att lägga tilltype = "class"! - Konstruera förvirringsmatriser för vart och ett av beslutsträden. Använd funktionen
table()och ange det "sanna" utfallet (viatest_set$loan_status) först, följt av förutsägelsen. - Beräkna noggrannheten utifrån var och en av förvirringsmatriserna.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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 <-