Árboles de Decisión: El modelo que piensa como tú


🧠 ¿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?

  1. El árbol elige la mejor pregunta para dividir los datos.
  2. Esa pregunta divide el dataset en dos grupos (como «¿edad > 30?»).
  3. Repite el proceso con cada grupo.
  4. 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ónPredice clases (ej: “compra” o “no compra”)
RegresiónPredice 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', ''], 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 modeloSupervisado (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

Comentarios

Aún no hay comentarios. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *