EmpezarEmpieza gratis

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

Ver curso

Instrucciones del ejercicio

  • Usa predict() para hacer predicciones con los cuatro árboles. Incluye test_set en el argumento newdata. ¡No olvides incluir type = "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" (usando test_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 <-
Editar y ejecutar código