ComeçarComece de graça

Matrizes de confusão e acurácia das nossas árvores finais

Nos últimos exercícios, você construiu várias árvores de decisão podadas, num total de quatro. Como você pode ver, o número final de divisões varia bastante de uma árvore para outra:

ptree_undersample  # 7 splits
ptree_prior  # 9 splits
ptree_loss_matrix  # 24 splits
ptree_weights  # 6 splits

Agora é importante saber qual árvore tem o melhor desempenho em termos de acurácia. Para obter a acurácia, você vai começar fazendo previsões usando o conjunto de teste e construindo a matriz de confusão para cada uma dessas árvores. Ao fazer as previsões, inclua o argumento type = "class". Assim, não é necessário definir um cut-off.

Ainda assim, é importante lembrar que não apenas a acurácia importa, mas também sensibilidade e especificidade. Além disso, prever probabilidades em vez de valores binários (0 ou 1) tem a vantagem de permitir ajustar o cut-off. Por outro lado, a dificuldade está justamente na escolha desse cut-off. Você vai retomar esse ponto no próximo capítulo.

Se precisar de um lembrete, veja como calcular a acurácia: $$\textrm{Classification accuracy} = \frac{(TP + TN)}{(TP + FP + TN + FN)}$$

Este exercício faz parte do curso

Modelagem de Risco de Crédito em R

Ver curso

Instruções do exercício

  • Use predict() para fazer previsões para as quatro árvores. Inclua test_set no argumento newdata. Não se esqueça de incluir type = "class"!
  • Construa matrizes de confusão para cada uma dessas árvores de decisão. Use a função table() e inclua primeiro o status "real" (usando test_set$loan_status), seguido da previsão.
  • Calcule a acurácia usando cada uma das matrizes de confusão.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

# 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 e executar o código