Bootcamps

Explora nuestra extensa colección de cursos diseñados para ayudarte a dominar varios temas y habilidades. Ya seas un principiante o un aprendiz avanzado, aquí hay algo para todos.

Academia

Aprende en vivo

Únete a nosotros en nuestros talleres gratuitos, webinars y otros eventos para aprender más sobre nuestros programas y comenzar tu camino para convertirte en desarrollador.

Próximos eventos en vivo

Catálogo de contenidos

Para los geeks autodidactas, este es nuestro extenso catálogo de contenido con todos los materiales y tutoriales que hemos desarrollado hasta el día de hoy.

Tiene sentido comenzar a aprender leyendo y viendo videos sobre los fundamentos y cómo funcionan las cosas.

Full-Stack Software Developer - 16w

Data Science and Machine Learning - 16 wks

Buscar en lecciones


IngresarEmpezar
← Regresar a lecciones

Weekly Coding Challenge

Todas las semanas escogemos un proyecto de la vida real para que construyas tu portafolio y te prepares para conseguir un trabajo. Todos nuestros proyectos están construidos con ChatGPT como co-pilot!

Únete al reto

Podcast: Code Sets You Free

Un podcast de cultura tecnológica donde aprenderás a luchar contra los enemigos que te bloquean en tu camino para convertirte en un profesional exitoso en tecnología.

Escuchar el podcast
Editar en Github

Bosque Aleatorio

Random Forests

Random Forests

Un random forest (suele referirse a él en su término en inglés y no en su traducción) es un método de Machine Learning que se utiliza para tareas de clasificación y regresión. Es un tipo de aprendizaje en el que se ensamblan modelos (model ensembling) para combinar las predicciones de múltiples árboles de decisión para generar una salida más precisa y robusta.

Cada árbol en un random forest se construye de manera independiente utilizando un subconjunto aleatorio de los datos de entrenamiento. Luego, para hacer la predicción, cada árbol en el bosque hace su propia predicción y la predicción final se toma por votación de mayoría en el caso de clasificación, o promedio en el caso de regresión.

Este enfoque ayuda a superar el problema del sobreajuste, que es común con los árboles de decisión individuales.

Estructura

Un random forest es una colección de árboles de decisión. Cada uno de estos árboles esun modelo que consta de nodos de decisión y hojas. Los nodos de decisión, recordemos, son puntos donde se toman decisiones basadas en ciertos atributos o características, y las hojas son los resultados finales o las predicciones.

Así, para construir cada árbol de decisión, el random forest selecciona un subconjunto aleatorio de los datos de entrenamiento. Este proceso se llama empaquetado (bagging) o agregación de bootstrap (bootstrap aggregating).

Además de seleccionar subconjuntos aleatorios de datos, el random forest también selecciona un subconjunto aleatorio de las características de cada árbol. Esto añade otra capa de aleatoriedad al modelo, lo que ayuda a aumentar la diversidad entre los árboles y mejorar la robustez del modelo en general.

random_forest

Una vez entrenado, cada árbol de decisión dentro del random forest realiza su propia predicción. Para problemas de clasificación, la clase que obtenga la mayoría de votos entre todos los árboles se selecciona como la predicción final. Para problemas de regresión, la predicción final se obtiene promediando las predicciones de todos los árboles.

La estructura del random forest, con su combinación de aleatoriedad y agregación, ayuda a crear un modelo robusto que es menos propenso a sobreajustarse a los datos de entrenamiento en comparación con un solo árbol de decision.

Hiperparametrización del modelo

Podemos construir un árbol de decisión fácilmente en Python utilizando la librería scikit-learn y las funciones RandomForestClassifier y RandomForestRegressor. Algunos de sus hiperparámetros más importantes y los primeros en los que debemos centrarnos son:

  • n_estimators: Este es probablemente el hiperparámetro más importante. Define el número de árboles de decisión en el bosque. En general, un número mayor de árboles aumenta la precisión y hace que las predicciones sean más estables, pero también puede ralentizar considerablemente el tiempo de cálculo.
  • bootstrap: Este hiperparámetro se usa para controlar si se utilizan muestras de bootstrap (muestreo con reemplazo) para la construcción de árboles.
  • max_depth: La profundidad máxima de los árboles. Esto es esencialmente cuántas divisiones puede hacer el árbol antes de hacer una predicción.
  • min_samples_split: El número mínimo de muestras necesarias para dividir un nodo en cada árbol. Si se establece un valor alto, evita que el modelo aprenda relaciones demasiado específicas y por tanto ayuda a prevenir el sobreajuste.
  • min_samples_leaf: El número mínimo de muestras que se deben tener en un nodo hoja en cada árbol.
  • max_features: El número máximo de características a considerar al buscar la mejor división dentro de cada árbol. Por ejemplo, si tenemos 10 características, podemos elegir que cada árbol considere solo un subconjunto de ellas al decidir dónde dividir.

Como podemos ver, solo los dos primeros hiperparámetros hacen referencia al random forest, mientras que el resto eran truncales a los árboles de decisión. Otro hiperparámetro muy importante es el random_state, que controla la semilla de generación aleatoria. Este atributo es crucial para asegurar la replicabilidad.