Matrices de confusion et exactitude de nos arbres finaux
Au fil des derniers exercices, vous avez construit plusieurs arbres de décision élagués, quatre au total. Comme vous pouvez le voir, le nombre final de divisions varie pas mal d'un arbre à l'autre :
ptree_undersample # 7 splits
ptree_prior # 9 splits
ptree_loss_matrix # 24 splits
ptree_weights # 6 splits
Il est maintenant important de savoir quel arbre offre la meilleure performance en termes d'exactitude. Pour obtenir l'exactitude, vous allez d'abord produire des prédictions à l'aide de l'ensemble de test, puis construire la matrice de confusion pour chacun de ces arbres. Vous ajouterez l'argument type = "class" lors de ces prédictions. Ainsi, il n'est pas nécessaire de fixer un seuil.
Cela dit, il faut garder à l'esprit que l'exactitude n'est pas le seul critère important ; la sensibilité et la spécificité le sont aussi. De plus, prédire des probabilités plutôt que des valeurs binaires (0 ou 1) a l'avantage de permettre d'ajuster le seuil. Par contre, la difficulté devient alors le choix de ce seuil. Vous y reviendrez au prochain chapitre.
Si vous avez besoin d'un rappel, voici comment calculer l'exactitude : $$\textrm{Classification accuracy} = \frac{(TP + TN)}{(TP + FP + TN + FN)}$$
Cette activité fait partie du cours
Modélisation du risque de crédit en R
Instructions de l’exercice
- Utilisez
predict()pour générer des prédictions pour les quatre arbres. L'argumentnewdatadoit contenirtest_set. N'oubliez pas d'incluretype = "class"! - Construisez des matrices de confusion pour chacun de ces arbres de décision. Utilisez la fonction
table()et placez d'abord l'état « vrai » (avectest_set$loan_status), suivi de la prédiction. - Calculez l'exactitude à partir de chacune des matrices de confusion.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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 <-