Árvore de Decisão com Probabilidade em R

Uma continuação do post Árvore de Decisão no R, agora vou incluir a probabilidade do cliente ser mau pagador na saída da árvore. Para isso, precisamos apenas complementar o código com a função rpart.plot(), do pacote com mesmo nome:

install.packages("rpart.plot");
library("rpart.plot");

rpart.plot(train_tree, type = 2, yesno=F, fallen.leaves = F,
extra = 102, under = T, cex=NULL, uniform=T, varlen=3, gap=0,
space=0, tweak=1.2);

Para quem não entendeu, vamos analisar juntos a primeira condição. O modelo foi feito em cima da base treino que consiste em uma amostra de 600 clientes retirados aleatoriamente da população. Desses 600 clientes, temos 428 bons (Creditability = 1). Se o cliente tem AccB menor que 3.5, ele é bom e segue pelo caminho da esquerda, caso contrário, ele também é bom (nesse caso ficou estranho por causa da proporção de bons clientes) mas segue pelo caminho da direita – é possível incluir um YES e NO no gráfico, para facilitar a interpretação, retirei por questão de estética. Veja que a árvore prossegue pela esquerda.

O total de clientes que tem AccB menor que 3.5 é 373 – 62% da amostra conforme apresentado graças ao argumento extra = 102, sendo 100 responsável pelo percentual e 2 pelo número de observações (compare com a última figura nesse post onde é utilizado extra = 101). Desses 373, temos 220 bons. Você pode conferir isso utilizando a função table():

## filtrando quem tem AccB menor que 2.5
train_filtro <- train[(train$AccountBalance < 2.5),];

## verificando como fica a distribuicao
table(train_filtro$AccountBalance, train_filtro$Creditability);

Resposta do R:
bad good
1 78 91
2 63 99

O mesmo é aplicado para o restante da árvore. Só é necessário ter atenção para quando o modelo altera para bad no lugar de good.

O único argumento essencial aí, chamado de train_tree é a árvore de decisões que construímos através da função rpart(). São vários os detalhes para melhorar a apresentação da sua árvore, no fundo a melhor forma de descobrir é testando com seus dados. Os que considerei essenciais foram:

  • type se refere à forma como a figura será apresentada e as legendas. Por exemplo, para o type = 2 você terá todos os rótulos em todos os nós, já para type = 4 você terá somente rótulos ao fim dos galhos;
  • under se refere aos detalhes de cada nó. Por exemplo, se under = T, então os detalhes (percentual e número de indivíduos) ficará embaixo da caixa com a marcação de indivíduo bom ou ruim;
  • tweak e cex são utilizados para ajustar o tamanho dos caracteres. Se o gráfico ficar muito poluído, ajuste um deles;
  • varlen faclen indicam a quantidade de caracteres que você quer apresentar para rótulo. São argumentos interessantes quando se têm nomes compridos. O primeiro é utilizado para variáveis e o segundo para factor level;
  • extra apresenta informações adicionais, como por exemplo o número de indivíduos por cada nó se for 1, o número de indivíduos dada a classificação de bom ou ruim para 2, etc. Adicionamos 100 ao número para apresentar também o percentual. Ex.: Para extra = 102 teremos o número de indivíduos no nó que possuem a classificação anotada (bom ou ruim) e o percentual que eles representam;
  • space gap  iguais a 0 podem ser utilizados para reduzir os espaços em branco;

Abaixo dois exemplos de plots diferentes com a mesma função alterando alguns argumentos:

rpart.plot(train_tree, type = 1, yesno=F, fallen.leaves = T,
extra = 102, under = T, cex=NULL, uniform=T, varlen=3, gap=0,
space=0, tweak=1.2);

rpart.plot(train_tree, type = 1, yesno=F, fallen.leaves = T,
extra = 101, under = F, cex=NULL, uniform=T, varlen=3, tweak=2.4);


Leia também:
Árvore de Decisão
Árvore de Decisão no R
Plotting rpart trees with the rpart.plot package

2 comentários em “Árvore de Decisão com Probabilidade em R”

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *