Data Mining - Indução de árvore de decisão

Uma árvore de decisão é uma estrutura que inclui um nó raiz, ramos e nós folha. Cada nó interno denota um teste em um atributo, cada ramificação denota o resultado de um teste e cada nó folha contém um rótulo de classe. O nó superior da árvore é o nó raiz.

A árvore de decisão a seguir é para o conceito buy_computer, que indica se um cliente de uma empresa provavelmente comprará um computador ou não. Cada nó interno representa um teste em um atributo. Cada nó folha representa uma classe.

Os benefícios de ter uma árvore de decisão são os seguintes -

  • Não requer nenhum conhecimento de domínio.
  • É fácil de compreender.
  • As etapas de aprendizagem e classificação de uma árvore de decisão são simples e rápidas.

Algoritmo de indução de árvore de decisão

Um pesquisador de máquinas chamado J. Ross Quinlan em 1980 desenvolveu um algoritmo de árvore de decisão conhecido como ID3 (Dicotomizador Iterativo). Posteriormente, ele apresentou o C4.5, que foi o sucessor do ID3. ID3 e C4.5 adotam uma abordagem gananciosa. Nesse algoritmo, não há retrocesso; as árvores são construídas de uma maneira recursiva de divisão e conquista de cima para baixo.

Generating a decision tree form training tuples of data partition D
Algorithm : Generate_decision_tree

Input:
Data partition, D, which is a set of training tuples 
and their associated class labels.
attribute_list, the set of candidate attributes.
Attribute selection method, a procedure to determine the
splitting criterion that best partitions that the data 
tuples into individual classes. This criterion includes a 
splitting_attribute and either a splitting point or splitting subset.

Output:
 A Decision Tree

Method
create a node N;

if tuples in D are all of the same class, C then
   return N as leaf node labeled with class C;
   
if attribute_list is empty then
   return N as leaf node with labeled 
   with majority class in D;|| majority voting
   
apply attribute_selection_method(D, attribute_list) 
to find the best splitting_criterion;
label node N with splitting_criterion;

if splitting_attribute is discrete-valued and
   multiway splits allowed then  // no restricted to binary trees

attribute_list = splitting attribute; // remove splitting attribute
for each outcome j of splitting criterion

   // partition the tuples and grow subtrees for each partition
   let Dj be the set of data tuples in D satisfying outcome j; // a partition
   
   if Dj is empty then
      attach a leaf labeled with the majority 
      class in D to node N;
   else 
      attach the node returned by Generate 
      decision tree(Dj, attribute list) to node N;
   end for
return N;

Poda de árvores

A poda da árvore é realizada para remover anomalias nos dados de treinamento devido a ruído ou outliers. As árvores podadas são menores e menos complexas.

Abordagens de poda de árvores

Existem duas abordagens para podar uma árvore -

  • Pre-pruning - A árvore é podada interrompendo-se precocemente a sua construção.

  • Post-pruning - Esta abordagem remove uma subárvore de uma árvore totalmente crescida.

Complexidade de custos

A complexidade do custo é medida pelos dois parâmetros a seguir -

  • Número de folhas na árvore, e
  • Taxa de erro da árvore.