R - Árvore de Decisão

A árvore de decisão é um gráfico que representa as escolhas e seus resultados na forma de uma árvore. Os nós no gráfico representam um evento ou escolha e as arestas do gráfico representam as regras ou condições de decisão. É usado principalmente em aplicativos de aprendizado de máquina e mineração de dados usando R.

Exemplos de uso de tress de decisão são - prever um e-mail como spam ou não spam, prever que um tumor é canceroso ou prever um empréstimo como um risco de crédito bom ou ruim com base nos fatores de cada um deles. Geralmente, um modelo é criado com dados observados, também chamados de dados de treinamento. Em seguida, um conjunto de dados de validação é usado para verificar e melhorar o modelo. R tem pacotes que são usados ​​para criar e visualizar árvores de decisão. Para um novo conjunto de variável preditora, usamos este modelo para chegar a uma decisão sobre a categoria (sim / Não, spam / não spam) dos dados.

O pacote R "party" é usado para criar árvores de decisão.

Instale o pacote R

Use o comando abaixo no console R para instalar o pacote. Você também deve instalar os pacotes dependentes, se houver.

install.packages("party")

O pacote "festa" tem a função ctree() que é usado para criar e analisar a árvore de decisão.

Sintaxe

A sintaxe básica para criar uma árvore de decisão em R é -

ctree(formula, data)

A seguir está a descrição dos parâmetros usados ​​-

  • formula é uma fórmula que descreve o preditor e as variáveis ​​de resposta.

  • data é o nome do conjunto de dados usado.

Dados de entrada

Usaremos o conjunto de dados embutido do R denominado readingSkillspara criar uma árvore de decisão. Descreve a pontuação das habilidades de leitura de alguém se conhecermos as variáveis ​​"idade", "tamanho do calçado", "pontuação" e se a pessoa é falante nativo ou não.

Aqui estão os dados de amostra.

# Load the party package. It will automatically load other
# dependent packages.
library(party)

# Print some records from data set readingSkills.
print(head(readingSkills))

Quando executamos o código acima, ele produz o seguinte resultado e gráfico -

nativeSpeaker   age   shoeSize      score
1           yes     5   24.83189   32.29385
2           yes     6   25.95238   36.63105
3            no    11   30.42170   49.60593
4           yes     7   28.66450   40.28456
5           yes    11   31.88207   55.46085
6           yes    10   30.07843   52.83124
Loading required package: methods
Loading required package: grid
...............................
...............................

Exemplo

Vamos usar o ctree() função para criar a árvore de decisão e ver seu gráfico.

# Load the party package. It will automatically load other
# dependent packages.
library(party)

# Create the input data frame.
input.dat <- readingSkills[c(1:105),]

# Give the chart file a name.
png(file = "decision_tree.png")

# Create the tree.
  output.tree <- ctree(
  nativeSpeaker ~ age + shoeSize + score, 
  data = input.dat)

# Plot the tree.
plot(output.tree)

# Save the file.
dev.off()

Quando executamos o código acima, ele produz o seguinte resultado -

null device 
          1 
Loading required package: methods
Loading required package: grid
Loading required package: mvtnorm
Loading required package: modeltools
Loading required package: stats4
Loading required package: strucchange
Loading required package: zoo

Attaching package: ‘zoo’

The following objects are masked from ‘package:base’:

   as.Date, as.Date.numeric

Loading required package: sandwich

Conclusão

A partir da árvore de decisão mostrada acima, podemos concluir que qualquer pessoa cuja pontuação em habilidades de leitura seja inferior a 38,3 e a idade seja superior a 6 não é um falante nativo.