Calculando o ganho para uma árvore
No vídeo, você viu como a medida de Gini é usada para criar a divisão perfeita de uma árvore. Agora, você vai calcular o ganho para a árvore carregada no seu ambiente de trabalho.
O conjunto de dados contém 500 casos, dos quais 89 são inadimplentes. Isso levou a um Gini de 0.292632 no nó raiz. Como lembrete, o Gini de um determinado nó = 2 * proporção de inadimplentes nesse nó * proporção de não inadimplentes nesse nó. Veja o código para relembrar:
gini_root <- 2 * (89 / 500) * (411 / 500)
Você usará essas medidas de Gini para ajudar a calcular o ganho dos nós folha em relação ao nó raiz. Observe o código a seguir para ter uma ideia de como usar as medidas de Gini que você criou para calcular o ganho de um nó.
Gain = gini_root - (prop(cases left leaf) * gini_left) - (prop(cases right leaf * gini_right))
Calcule o Gini nos nós da esquerda e da direita, e o ganho dos dois nós folha em relação ao nó raiz. O objeto que contém a árvore é small_tree.
Este exercício faz parte do curso
Modelagem de Risco de Crédito em R
Instruções do exercício
- O cálculo para o Gini do nó raiz é fornecido.
- Calcule a medida de Gini para o nó folha esquerdo.
- Calcule a medida de Gini para o nó folha direito.
- Calcule o ganho tomando a diferença entre o Gini do nó raiz e as medidas de Gini dos nós folha ponderadas.
- As informações sobre a divisão nesta árvore podem ser encontradas usando
$splite o objeto da árvore,small_tree. Em vez de gain, aqui você deve olhar para a colunaimprove.improveé uma métrica alternativa para ganho, obtida simplesmente multiplicando o ganho pelo número de casos no conjunto de dados. Verifique se o objetoimprove(código fornecido) tem o mesmo valor que emsmall_tree$split.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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