Ensembles: voting, bagging, boosting, stacking

Un ensemble es un conjunto de modelos de machine learning. Cada modelo produce una predicción diferente. Las predicciones de los distintos modelos se combinan para obtener una única predicción.

La ventaja que obtenemos al combinar modelos diferentes es que como cada modelo funciona de forma diferente, sus errores tienden a compensarse. Esto resulta en un mejor error de generalización.

Hay varias formas de construir estos ensembles:

  • votación por mayoría
  • bagging
  • boosting
  • stacking

Votación por mayoría

Podemos entrenar varios modelos de aprendizaje automático con los mismos datos. Cuando tengamos datos nuevos, obtendremos una predicción de cada modelo. Cada modelo tendrá asociado un voto. De esta forma, propondremos como predicción final lo que voten la mayoría de los modelos.

Hay otra forma de combinar las votaciones. Cuando los modelos de machine learning dan una probabilidad, podemos usar el «voto suave» (soft-voting). En el voto suave, se le da más importancia a los resultados en los que algún modelo esté muy seguro. Es decir, cuando la predicción está muy cercana a la probabilidad 0 ó a 1, se le da más peso a la predicción de ese modelo.

Ejemplo en Ensemble por Votación

Cuando usamos modelos diferentes, los errores se compensan y la predicción combinada generaliza mejor. Por eso, no tiene sentido hacer un ensemble de votación por mayoría con el mismo tipo de modelo. Por ejemplo, si entrenamos 3 árboles de decisión con los mismos datos y combinamos sus resultados con votación por mayoría, vamos a obtener los mismos resultados que si sólo usásemos un sólo árbol. Para poder combinar muchos árboles de decisión necesitamos bagging.

Bagging

Cuando usamos bagging, también combinamos varios modelos de machine learning. A diferencia del voto por mayoría, la forma de conseguir que los errores se compensen entre sí, es que cada modelo se entrena con subconjuntos del conjunto de entrenamiento. Estos subconjuntos se forman eligiendo muestras aleatoriamente (con repetición) del conjunto de entrenamiento.

Los resultados se combinan, para problemas de clasificación, igual que hemos visto en la votación por mayoría, con el voto suave para los modelos que den probabilidades. Para problemas de regresión, normalmente se utiliza la media aritmética.

Ensenble Bagging

Los bosques aleatorios (random forests), no son ni más ni menos, que un ensemble de árboles de decisión combinados con bagging. Aunque bagging se puede usar con cualquier modelo, la opción de usarlo con árboles de decisión es muy popular por motivos de rendimiento. Normalmente, es muy rápido construir un árbol de decisión.

Boosting

En el boosting, cada modelo intenta arreglar los errores de los modelos anteriores. Por ejemplo, en el caso de clasificación, el primer modelo tratará de aprender la relación entre los atributos de entrada y el resultado. Seguramente cometerá algunos errores. Así que el segundo modelo intentará reducir estos errores. Esto se consigue dándole más peso a las muestras mal clasificadas y menos peso a las muestras bien clasificadas. Para problemas de regresión, las predicciones con un mayor error cuadrático medio tendrán más peso para el siguiente modelo.

Hay muchas implementaciones de ensembles que usan boosting. El primero fue el AdaBoost. Los más usados actualmente son xgboost, CatBoost y LightGBM.

Stacking (modelos apilados)

Cuando hablamos de un ensemble de stacking, nos referimos a que estamos apilando modelos. Cuando apilamos modelos, lo que en realidad estamos haciendo, es usar la salida de varios modelos como la entrada de varios modelos. Por ejemplo, el ganador del Aguathón, «ensambló» varios modelos apilándolos para conseguir un rendimiento mejor. El problema consistía en predecir el nivel del río Ebro a su paso por Zaragoza a 24h, 48h y 72h. César Montenegro usó bosques aleatorios para predecir el nivel del Ebro a 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72 horas y luego uso otro bosque aleatorio que usaba estas predicciones como entrada y predecía el nivel del río a 24h, 48h y 72h. Esta forma de combinar los modelos, sin duda contribuyó a un mejor rendimiento de su solución.

Resumen de Ensembles

Los ensembles son estrategias de combinación de modelos de machine learning para mejorar su generalización. Hemos visto los cuatro tipos de ensembles más usados: votación por mayoría, bagging, boosting y stacking.

Recursos para Ensembles

  • [vídeo] donde explico voting y bagging aplicado y su aplicación a bosques aleatorios
  • Ensembles en scikit-learn incluyendo votación por mayoría, AdaBoost, Bagging genérico, Bosques Aleatorios, etc.
  • xgboost: eXtreme Gradient Boosting
  • CatBoost: Yandex CatBoost
  • LightGBM: Light Gradient Boosting Machine

Deja un comentario