Este modelo es como una versión mejorada de los árboles de decisión. Si los árboles de decisión son buenos, una “selva” de árboles (Random Forest) es aún mejor. Vamos a explicarlo como siempre: claro, práctico y a fondo 👇
🧠 ¿Qué es Random Forest?
Es un modelo de ensamble que combina muchos árboles de decisión, cada uno entrenado con distintos subconjuntos de los datos. Luego, para clasificar o predecir, todos votan y se elige la respuesta más popular (o el promedio, si es regresión).
🌳 + 🌳 + 🌳 + … = 🌲 Random Forest
Una multitud de árboles que decide en conjunto, y por eso es más robusto, menos propenso a errores y más preciso.
🎯 ¿Para qué se usa?
- Clasificación (ej: ¿aprobará o no?)
- Regresión (ej: ¿cuánto costará esta casa?)
- Detección de outliers
- Selección de variables importantes
🛠️ ¿Cómo funciona paso a paso?
- Toma múltiples muestras aleatorias del dataset (con reemplazo → bootstrapping).
- Para cada muestra, entrena un árbol de decisión (¡pero no con todas las variables! Solo con un subconjunto).
- Cada árbol da una predicción.
- La predicción final se obtiene por votación mayoritaria (clasificación) o promedio (regresión).
📈 Ventajas
✅ Muy preciso en la mayoría de los casos
✅ No se sobreajusta fácilmente (a diferencia de un solo árbol)
✅ Funciona bien con grandes volúmenes de datos
✅ Indica qué variables son más importantes
✅ No necesita normalización de datos
❌ Desventajas
❌ Puede volverse pesado (muchos árboles = más tiempo y memoria)
❌ Menos interpretable que un solo árbol
❌ Puede tardar más en hacer predicciones si el bosque es muy grande
🧑💻 Código básico en Python
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# Datos de ejemplo
data = pd.DataFrame({
'edad': [25, 45, 35, 33, 52, 23, 41, 38],
'ingresos': [50000, 80000, 60000, 58000, 120000, 45000, 70000, 64000],
'compra': [0, 1, 0, 0, 1, 0, 1, 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.25, random_state=42)
# Crear modelo Random Forest
forest = RandomForestClassifier(n_estimators=100, random_state=42)
forest.fit(X_train, y_train)
# Predecir
y_pred = forest.predict(X_test)
# Evaluar
print("Precisión:", accuracy_score(y_test, y_pred))
🔍 ¿Qué es eso de «n_estimators»?
Es el número de árboles que quieres en tu bosque. Más árboles = más robustez, pero también más consumo de recursos.
📊 ¿Y cómo sé qué variable es más importante?
import matplotlib.pyplot as plt
importancias = forest.feature_importances_
features = X.columns
plt.barh(features, importancias)
plt.xlabel('Importancia')
plt.title('Importancia de las variables')
plt.show()
Esto te muestra qué variables están ayudando más al modelo a tomar decisiones.
📌 En resumen
Característica | Valor |
---|---|
Tipo de modelo | Ensamble supervisado |
Tareas | Clasificación, regresión |
Precisión | Alta |
Interpretabilidad | Media |
Ideal para | Datos grandes, muchos features |
Antisobrecarga | Sí, difícil que sobreentrene |