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 e 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 e 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”