Fecha de publicación: 2025-04-20

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
- Sí: ¿Hay viento fuerte?
- Sí: ¿La humedad es alta?
Construyendo un árbol en Python
Usaremos un dataset pequeño con condiciones climáticas y la decisión de jugar o no.
| # | Ambiente | Temperatura | Humedad | Viento | Clase |
|---|---|---|---|---|---|
| 1 | soleado | alta | alta | falso | no |
| 2 | soleado | alta | alta | verdadero | no |
| 3 | nublado | alta | alta | falso | si |
| 4 | lluvioso | media | alta | falso | si |
| 5 | lluvioso | baja | normal | falso | si |
| 6 | lluvioso | baja | normal | verdadero | no |
| 7 | nublado | baja | normal | verdadero | si |
| 8 | soleado | media | alta | falso | no |
| 9 | soleado | baja | normal | falso | si |
| 10 | lluvioso | media | normal | falso | si |
| 11 | soleado | media | normal | verdadero | no |
| 12 | nublado | media | alta | verdadero | si |
| 13 | nublado | alta | normal | falso | si |
| 14 | lluvioso | media | alta | verdadero | no |
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.
python
1import pandas as pd
2
3data = {
4 'Ambiente': ['soleado', 'soleado', 'nublado', 'lluvioso', 'lluvioso', 'lluvioso', 'nublado', 'soleado', 'soleado', 'lluvioso', 'soleado', 'nublado', 'nublado', 'lluvioso'],
5 'Temperatura': ['alta', 'alta', 'alta', 'media', 'baja', 'baja', 'baja', 'media', 'baja', 'media', 'media', 'media', 'alta', 'media'],
6 'Humedad': ['alta', 'alta', 'alta', 'alta', 'normal', 'normal', 'normal', 'alta', 'normal', 'normal', 'normal', 'alta', 'normal', 'alta'],
7 'Viento': ['falso', 'verdadero', 'falso', 'falso', 'falso', 'verdadero', 'verdadero', 'falso', 'falso', 'falso', 'verdadero', 'verdadero', 'falso', 'verdadero'],
8 'Clase': ['no', 'no', 'si', 'si', 'si', 'no', 'si', 'no', 'si', 'si', 'no', 'si', 'si', 'no']
9}
10
11df = pd.DataFrame(data)python
1from sklearn.preprocessing import LabelEncoder
2
3le = LabelEncoder()
4for column in df.columns:
5 df[column] = le.fit_transform(df[column])python
1from sklearn.tree import DecisionTreeClassifier
2
3X = df.drop('Clase', axis=1)
4y = df['Clase']
5
6modelo = DecisionTreeClassifier(criterion='entropy')
7modelo.fit(X, y)python
1from sklearn import tree
2import matplotlib.pyplot as plt
3
4plt.figure(figsize=(12,8))
5tree.plot_tree(modelo, feature_names=X.columns, class_names=['no', 'si'], filled=True)
6plt.show()🧠 Análisis del árbol generado

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 esViento. 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 analizaHumedad, y si esta no es baja, se consulta laTemperaturapara 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.