Matice záměn a přesnost našich finálních stromů
V předchozích cvičeních jsi sestavil/a celkem čtyři ořezané rozhodovací stromy. Jak vidíš, výsledný počet větvení se mezi stromy dost liší:
ptree_undersample # 7 splits
ptree_prior # 9 splits
ptree_loss_matrix # 24 splits
ptree_weights # 6 splits
Teď je důležité zjistit, který strom si vede nejlépe z hlediska přesnosti. Nejprve proto pomocí testovací sady vytvoříš predikce a pro každý strom sestavíš matici záměn. Při predikci použij argument type = "class" — díky tomu nemusíš nastavovat žádnou prahovou hodnotu.
Měj ale na paměti, že důležitá není jen přesnost, ale také senzitivita a specificita. Predikce pravděpodobností místo binárních hodnot (0 nebo 1) má navíc tu výhodu, že prahovou hodnotu lze libovolně posouvat. Volba správné prahové hodnoty ovšem není triviální — k tomu se vrátíme v příští kapitole.
Pro připomenutí, takhle se počítá přesnost klasifikace: $$\textrm{Classification accuracy} = \frac{(TP + TN)}{(TP + FP + TN + FN)}$$
Toto cvičení je součástí kurzu
Modelování kreditního rizika v R
Pokyny k cvičení
- Pomocí
predict()vytvoř predikce pro všechny čtyři stromy. Testovací sadutest_setzadej jako argumentnewdata. Nezapomeň přidattype = "class"! - Pro každý rozhodovací strom sestav matici záměn. Použij funkci
table()— jako první uveď skutečné hodnoty (pomocítest_set$loan_status), za nimi predikce. - Na základě každé matice záměn vypočítej přesnost klasifikace.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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 <-