Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Använd predict() för att göra förutsägelser för alla fyra träd. Inkludera test_set i argumentet newdata och glöm inte att lägga till type = "class"!
  • Konstruera förvirringsmatriser för vart och ett av beslutsträden. Använd funktionen table() och ange det "sanna" utfallet (via test_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 <-
Redigera och kör kod