Random Forest

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?

  1. Toma múltiples muestras aleatorias del dataset (con reemplazo → bootstrapping).
  2. Para cada muestra, entrena un árbol de decisión (¡pero no con todas las variables! Solo con un subconjunto).
  3. Cada árbol da una predicción.
  4. 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ísticaValor
Tipo de modeloEnsamble supervisado
TareasClasificación, regresión
PrecisiónAlta
InterpretabilidadMedia
Ideal paraDatos grandes, muchos features
AntisobrecargaSí, difícil que sobreentrene

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 *