Calculer le gain d'un arbre
Dans la vidéo, vous avez vu comment la mesure de Gini sert à déterminer la séparation idéale d'un arbre. Maintenant, vous allez calculer le gain pour l'arbre chargé dans votre espace de travail.
L'ensemble de données contient 500 cas, dont 89 défauts. Cela donne un Gini de 0,292632 au nœud racine. Petit rappel : le Gini d'un nœud = 2 × proportion de défauts dans ce nœud × proportion de non-défauts dans ce nœud. Consultez le code ci-dessous au besoin.
gini_root <- 2 * (89 / 500) * (411 / 500)
Vous utiliserez ces mesures de Gini pour calculer le gain des feuilles par rapport au nœud racine. Voyez l'exemple suivant pour comprendre comment utiliser les Gini calculés afin d'obtenir le gain d'un nœud.
Gain = gini_root - (prop(cases left leaf) * gini_left) - (prop(cases right leaf * gini_right))
Calculez le Gini du nœud de gauche et du nœud de droite, ainsi que le gain des deux feuilles par rapport au nœud racine. L'objet qui contient l'arbre est small_tree.
Cette activité fait partie du cours
Modélisation du risque de crédit en R
Instructions de l’exercice
- Le calcul du Gini du nœud racine est fourni.
- Calculez la mesure de Gini pour la feuille de gauche.
- Calculez la mesure de Gini pour la feuille de droite.
- Calculez le gain en faisant la différence entre le Gini du nœud racine et la combinaison pondérée des Gini des feuilles.
- Les informations sur la séparation dans cet arbre se trouvent avec
$splitsur l'objet d'arbre,small_tree. Plutôt que le gain, regardez la colonneimprove.improveest une mesure équivalente au gain, simplement obtenue en multipliant le gain par le nombre de cas dans l'ensemble de données. Assurez-vous que l'objetimprove(code fourni) a la même valeur que danssmall_tree$split.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# The Gini-measure of the root node is given below
gini_root <- 2 * 89 / 500 * 411 / 500
# Compute the Gini measure for the left leaf node
gini_ll <-
# Compute the Gini measure for the right leaf node
gini_rl <-
# Compute the gain
gain <- gini_root - 446 / 500 * gini_ll - 54 / 500 * gini_rl
# compare the improve-column in small_tree$splits with our computed gain, multiplied by 500, and assure they are the same
small_tree$splits
improve <- gain * 500