🧠 ¿Qué es un Árbol de Decisión?
Un Árbol de Decisión es un modelo de machine learning que toma decisiones haciendo preguntas. Es como jugar «20 preguntas» para llegar a una respuesta final.
Imagina esto:
¿Tiene fiebre? → ¿Sí? → ¿Tiene tos? → ¿Sí? → Podría ser gripe.
¿No tiene fiebre? → ¿Sí? → Entonces no es gripe.
🤖 ¿Qué hace?
Clasifica datos (por ejemplo, “¿esta persona comprará o no?”) o también puede predecir valores numéricos (como regresión).
📦 ¿Cómo funciona?
- El árbol elige la mejor pregunta para dividir los datos.
- Esa pregunta divide el dataset en dos grupos (como «¿edad > 30?»).
- Repite el proceso con cada grupo.
- Se detiene cuando no puede dividir más o se llega a una condición mínima.
Esto genera una estructura en forma de árbol, con ramas (preguntas) y hojas (respuestas).
📐 Ejemplo simple
Supón que quieres decidir si alguien aprueba un curso:
¿Estudió más de 5 horas? → Sí → ¿Participó en clase? → Sí → ✔ Aprueba
↳ No → ✘ No aprueba
↳ No → ✘ No aprueba
📊 Tipos
Tipo de árbol | ¿Qué hace? |
---|---|
Clasificación | Predice clases (ej: “compra” o “no compra”) |
Regresión | Predice valores numéricos (ej: precio) |
🛠️ ¿Cómo decide el árbol qué pregunta hacer?
Usa criterios como:
- Gini: mide cuán «puro» es un nodo (muy común).
- Entropía / Información Ganada: qué tan bien divide una variable.
- Error cuadrático medio (para regresión).
Elige la división que mejor separe los datos.
⚖️ Ventajas
✅ Muy fácil de entender (incluso sin saber nada de matemáticas)
✅ No necesita normalizar los datos
✅ Acepta tanto variables numéricas como categóricas
✅ Ideal para explicar modelos a personas no técnicas
🚨 Desventajas
❌ Puede sobreajustar si el árbol es muy profundo
❌ Sensible a pequeños cambios en los datos
❌ No tan preciso como modelos más complejos (pero lo compensan con interpretabilidad)
🧑💻 Ejemplo en Python
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, plot_tree
import matplotlib.pyplot as plt
# Dataset ejemplo
data = pd.DataFrame({
'edad': [25, 45, 35, 33, 52],
'ingresos': [50000, 80000, 60000, 58000, 120000],
'compra': [0, 1, 0, 0, 1]
})
X = data[['edad', 'ingresos']]
y = data['compra']
# Dividir datos
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Crear árbol
arbol = DecisionTreeClassifier(max_depth=3)
arbol.fit(X_train, y_train)
# Predecir
y_pred = arbol.predict(X_test)
# Evaluar
print("Precisión:", accuracy_score(y_test, y_pred))
# Dibujar árbol
plt.figure(figsize=(12,6))
plot_tree(arbol, feature_names=X.columns, class_names=['No', 'Sí'], filled=True)
plt.show()
🧪 ¿Cuándo usar Árboles de Decisión?
Úsalos cuando:
- Quieres entender y explicar el modelo.
- Necesitas rapidez y simplicidad.
- Tus datos mezclan números y categorías.
🧱 Bonus: Árboles como base para modelos más potentes
Los árboles de decisión son la base de modelos avanzados como:
- 🌲 Random Forest (muchos árboles votando)
- 🔥 Gradient Boosting (árboles que aprenden del error de los anteriores)
🧩 En resumen
Aspecto | Árbol de Decisión |
---|---|
Tipo de modelo | Supervisado (clasificación y regresión) |
¿Fácil de usar? | Sí, mucho |
¿Interpretable? | Completamente |
¿Rápido? | Muy rápido para datasets pequeños |
¿Preciso? | Puede mejorar combinándolo con otros árboles |