Árboles de Decisión: de la intuición a la predicción

Fecha de publicación: 2025-04-20
Árboles de decisión
Los árboles de decisión son una de las formas más intuitivas de representar decisiones automatizadas. Su estructura se asemeja a una serie de preguntas encadenadas que, dependiendo de las respuestas, conducen a una conclusión. Este artículo te guiará desde el concepto básico hasta una implementación sencilla en Python, con visualización incluida.

¿Qué es un árbol de decisión?

Un árbol de decisión es un modelo predictivo que toma decisiones dividiendo un conjunto de datos en subconjuntos cada vez más homogéneos. Cada nodo del árbol representa una pregunta sobre un atributo, y cada rama una posible respuesta. Las hojas finales contienen la decisión o clasificación resultante.
Ejemplo intuitivo: Imagina que quieres saber si deberías salir a jugar al aire libre. Las preguntas podrían ser:
  • ¿Está soleado?
    • Sí: ¿La humedad es alta?
      • Sí: No jugar
      • No: Sí jugar
    • No: ¿Está lloviendo?
      • Sí: ¿Hay viento fuerte?
        • Sí: No jugar
        • No: Sí jugar
      • No: Sí jugar

Construyendo un árbol en Python

Usaremos un dataset pequeño con condiciones climáticas y la decisión de jugar o no.
#AmbienteTemperaturaHumedadVientoClase
1soleadoaltaaltafalsono
2soleadoaltaaltaverdaderono
3nubladoaltaaltafalsosi
4lluviosomediaaltafalsosi
5lluviosobajanormalfalsosi
6lluviosobajanormalverdaderono
7nubladobajanormalverdaderosi
8soleadomediaaltafalsono
9soleadobajanormalfalsosi
10lluviosomedianormalfalsosi
11soleadomedianormalverdaderono
12nubladomediaaltaverdaderosi
13nubladoaltanormalfalsosi
14lluviosomediaaltaverdaderono
Vamos a darle forma y escribirlo de manera que podamos insertarlo en un dataset. También puedes usar pandas para importarla como un csv, sin embargo, aquí lo haremos de forma manual.
import pandas as pd

data = {
    'Ambiente': ['soleado', 'soleado', 'nublado', 'lluvioso', 'lluvioso', 'lluvioso', 'nublado', 'soleado', 'soleado', 'lluvioso', 'soleado', 'nublado', 'nublado', 'lluvioso'],
    'Temperatura': ['alta', 'alta', 'alta', 'media', 'baja', 'baja', 'baja', 'media', 'baja', 'media', 'media', 'media', 'alta', 'media'],
    'Humedad': ['alta', 'alta', 'alta', 'alta', 'normal', 'normal', 'normal', 'alta', 'normal', 'normal', 'normal', 'alta', 'normal', 'alta'],
    'Viento': ['falso', 'verdadero', 'falso', 'falso', 'falso', 'verdadero', 'verdadero', 'falso', 'falso', 'falso', 'verdadero', 'verdadero', 'falso', 'verdadero'],
    'Clase': ['no', 'no', 'si', 'si', 'si', 'no', 'si', 'no', 'si', 'si', 'no', 'si', 'si', 'no']
}

df = pd.DataFrame(data)
from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
for column in df.columns:
    df[column] = le.fit_transform(df[column])
from sklearn.tree import DecisionTreeClassifier

X = df.drop('Clase', axis=1)
y = df['Clase']

modelo = DecisionTreeClassifier(criterion='entropy')
modelo.fit(X, y)
from sklearn import tree
import matplotlib.pyplot as plt

plt.figure(figsize=(12,8))
tree.plot_tree(modelo, feature_names=X.columns, class_names=['no', 'si'], filled=True)
plt.show()

🧠 Análisis del árbol generado

Árboles de decisión

Al observar el árbol de decisión entrenado, notamos que:

  • La raíz del árbol es el atributo Ambiente, indicando que es el factor más determinante para decidir si se juega o no.
  • Si Ambiente <= 1.5, el siguiente atributo evaluado es Viento. Cuando no hay viento (Viento <= 0.5), se predice jugar con certeza (entropía 0.0 en 5 muestras).
  • Si hay viento, se vuelve a considerar el Ambiente, donde la decisión ya no es tan clara (entropía 1.0 con 2 y 2 muestras).
  • Si Ambiente > 1.5, se analiza Humedad, y si esta no es baja, se consulta la Temperatura para resolver la clasificación.

En resumen, el modelo revela que Ambiente es la variable más influyente, mientras queViento y Humedad refinan las decisiones. La Temperatura aparece sólo cuando las condiciones anteriores no son suficientes para una clasificación clara. Este tipo de interpretabilidad es una de las mayores ventajas de los árboles de decisión.

Conclusión

Los árboles de decisión son herramientas poderosas por su interpretabilidad. Aunque en problemas complejos pueden crecer mucho y sobreajustarse, son una excelente puerta de entrada al mundo del aprendizaje automático.
En el siguiente artículo exploraremos cómo mejorar su rendimiento mediante poda o cómo hacerlos más robustos usando Random Forests.