Začněte nyníZačněte zdarma

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

Zobrazit kurz

Pokyny k cvičení

  • Pomocí predict() vytvoř predikce pro všechny čtyři stromy. Testovací sadu test_set zadej jako argument newdata. Nezapomeň přidat type = "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 <-
Upravit a spustit kód