Minería de datos: inducción del árbol de decisiones

Un árbol de decisión es una estructura que incluye un nodo raíz, ramas y nodos hoja. Cada nodo interno denota una prueba sobre un atributo, cada rama denota el resultado de una prueba y cada nodo hoja tiene una etiqueta de clase. El nodo superior del árbol es el nodo raíz.

El siguiente árbol de decisiones corresponde al concepto buy_computer que indica si es probable que un cliente de una empresa compre una computadora o no. Cada nodo interno representa una prueba sobre un atributo. Cada nodo hoja representa una clase.

Los beneficios de tener un árbol de decisiones son los siguientes:

  • No requiere ningún conocimiento de dominio.
  • Es fácil de comprender.
  • Los pasos de aprendizaje y clasificación de un árbol de decisiones son simples y rápidos.

Algoritmo de inducción del árbol de decisión

Un investigador de máquinas llamado J. Ross Quinlan en 1980 desarrolló un algoritmo de árbol de decisión conocido como ID3 (dicotomizador iterativo). Posteriormente, presentó C4.5, que fue el sucesor de ID3. ID3 y C4.5 adoptan un enfoque codicioso. En este algoritmo, no hay retroceso; los árboles están construidos de arriba hacia abajo de una manera recursiva de dividir y conquistar.

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 árboles

La poda de árboles se realiza para eliminar anomalías en los datos de entrenamiento debido al ruido o valores atípicos. Los árboles podados son más pequeños y menos complejos.

Enfoques de poda de árboles

Hay dos métodos para podar un árbol:

  • Pre-pruning - El árbol se poda deteniendo temprano su construcción.

  • Post-pruning - Este enfoque elimina un subárbol de un árbol completamente desarrollado.

Complejidad de costos

La complejidad del costo se mide mediante los siguientes dos parámetros:

  • Número de hojas en el árbol y
  • Tasa de error del árbol.