Matriz de confusión y exactitud de nuestros árboles finales
En los últimos ejercicios has construido bastantes árboles de decisión podados, cuatro en total. Como puedes ver, el número final de particiones varía bastante de un árbol a otro:
ptree_undersample # 7 splits
ptree_prior # 9 splits
ptree_loss_matrix # 24 splits
ptree_weights # 6 splits
Ahora es importante saber qué árbol funciona mejor en términos de exactitud. Para obtenerla, empezarás haciendo predicciones usando el conjunto de prueba y construirás la matriz de confusión para cada uno de estos árboles. Añadirás el argumento type = "class" al hacer estas predicciones. Así no es necesario fijar un umbral (cut-off).
Aun así, ten en cuenta que no solo importa la exactitud, sino también la sensibilidad y la especificidad. Además, predecir probabilidades en lugar de valores binarios (0 o 1) tiene la ventaja de que se puede ajustar el umbral. De nuevo, la dificultad está en elegir ese umbral. Volverás sobre esto en el siguiente capítulo.
Por si necesitas un recordatorio, así se calcula la exactitud: $$\textrm{Classification accuracy} = \frac{(TP + TN)}{(TP + FP + TN + FN)}$$
Este ejercicio forma parte del curso
Modelización del riesgo de crédito en R
Instrucciones del ejercicio
- Usa
predict()para hacer predicciones con los cuatro árboles. Incluyetest_seten el argumentonewdata. ¡No olvides incluirtype = "class"! - Construye matrices de confusión para cada uno de estos árboles de decisión. Usa la función
table()e incluye primero el estado "real" (usandotest_set$loan_status), seguido de la predicción. - Calcula la exactitud usando cada una de las matrices de confusión.
ejercicio interactivo práctico
Prueba este ejercicio completando este código de ejemplo.
# 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 <-