0Pricing
Learn AI with Python · Lección

Random Forests y bagging

Concepto de ensemble, RandomForestClassifier, n_estimators, importancia de características y puntuación OOB.

Random Forests y bagging es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.

El problema de los árboles individuales

Un único árbol de decisión tiene alta varianza: volver a entrenarlo con datos ligeramente diferentes puede producir un árbol muy distinto. Los ensembles resuelven este problema combinando muchos árboles.

Bagging (agregación bootstrap)

El bagging entrena muchos modelos con diferentes muestras bootstrap, obtenidas mediante muestreo aleatorio con reemplazo, y después promedia sus predicciones.

Promediar muchos modelos de alta varianza reduce la varianza general sin aumentar demasiado el sesgo.

from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier

bag = BaggingClassifier(
    estimator=DecisionTreeClassifier(),
    n_estimators=100,
    random_state=0,
)
bag.fit(Xtr, ytr)

Del bagging a los bosques aleatorios

Un bosque aleatorio aplica bagging a los árboles y añade un truco: en cada división solo considera un subconjunto aleatorio de características.

Esto descorrelaciona los árboles para que sus errores se compensen mejor y mejora el ensemble.

Conceptos básicos de RandomForestClassifier

Use RandomForestClassifier. El parámetro clave n_estimators establece cuántos árboles se construirán. Más árboles = mayor estabilidad, pero más lentitud.

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(n_estimators=200, random_state=0)
rf.fit(Xtr, ytr)
print("Accuracy:", rf.score(Xte, yte))

Entrenamiento paralelo con n_jobs

Los árboles de un bosque son independientes, por lo que se entrenan en paralelo. Establezca n_jobs=-1 para usar todos los núcleos de la CPU y acelerar considerablemente el ajuste.

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(
    n_estimators=500,
    n_jobs=-1,        # use all cores
    random_state=0,
)
rf.fit(Xtr, ytr)

Puntuación out-of-bag (OOB)

Cada árbol deja fuera aproximadamente un tercio de las muestras, aquellas que el bootstrap no seleccionó. Estas muestras out-of-bag forman un conjunto de validación integrado.

Establezca oob_score=True para obtener una estimación gratuita del error de generalización sin realizar una división independiente.

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(
    n_estimators=300,
    oob_score=True,
    random_state=0,
)
rf.fit(Xtr, ytr)
print("OOB score:", rf.oob_score_)

Controlar la profundidad de los árboles del bosque

Se aplican los mismos parámetros que a los árboles individuales: max_depth, min_samples_leaf y max_features, que indica cuántas características se prueban en cada división.

max_features="sqrt" es el valor predeterminado habitual para la clasificación.

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(
    n_estimators=300,
    max_depth=12,
    max_features="sqrt",
    random_state=0,
)

Importancia de características integrada

Al igual que los árboles individuales, los bosques exponen feature_importances_, promediada entre todos los árboles. Esta importancia basada en la impureza es rápida, pero puede estar sesgada hacia características con muchos valores distintos.

from sklearn.ensemble import RandomForestClassifier
import numpy as np

rf = RandomForestClassifier(n_estimators=200, random_state=0).fit(Xtr, ytr)
order = np.argsort(rf.feature_importances_)[::-1]
for i in order[:5]:
    print(i, rf.feature_importances_[i])

Importancia por permutación

La importancia por permutación es más fiable: baraja una columna de características y mide cuánto disminuye la puntuación. Una gran disminución significa que la característica era importante.

Es independiente del modelo y evita el sesgo de la impureza.

from sklearn.inspection import permutation_importance

result = permutation_importance(
    rf, Xte, yte, n_repeats=10, random_state=0, n_jobs=-1
)
print(result.importances_mean)

Interpretar los resultados de la permutación

permutation_importance devuelve importances_mean y importances_std a lo largo de varias repeticiones. Calcule estos valores en un conjunto reservado para medir el impacto en la generalización, no en el ajuste del entrenamiento.

import numpy as np

means = result.importances_mean
stds = result.importances_std
for i in np.argsort(means)[::-1]:
    print(f"feature {i}: {means[i]:.3f} +/- {stds[i]:.3f}")

Cuándo usar bosques aleatorios

Los bosques aleatorios son una opción predeterminada sólida: robustos, requieren pocos ajustes, gestionan no linealidades e interacciones y resisten el sobreajuste. Sus desventajas son un mayor uso de memoria, predicciones más lentas que las de un árbol individual y una menor interpretabilidad.

Comprobación rápida

Compruebe su comprensión del bagging y los bosques aleatorios.

Resumen

Resumen: el bagging entrena modelos con muestras bootstrap y los promedia para reducir la varianza. Los bosques aleatorios añaden subconjuntos aleatorios de características en cada división. Ajuste el modelo con n_estimators, use n_jobs=-1 para acelerar el entrenamiento, obtenga validación gratuita mediante oob_score y prefiera permutation_importance a la importancia basada en la impureza para obtener clasificaciones fiables.

Preguntas frecuentes

¿La lección «Random Forests y bagging» es gratis?

Sí — el texto completo de «Random Forests y bagging» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.

¿Qué aprenderé en «Random Forests y bagging»?

Concepto de ensemble, RandomForestClassifier, n_estimators, importancia de características y puntuación OOB. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Learn AI with Python?

No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Random Forests y bagging»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?

Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Árboles de decisión: teoría e implementación
  2. Random Forests y bagging
  3. Gradient boosting: GBM y XGBoost
  4. LightGBM y CatBoost
← Volver a Learn AI with Python