Mejorar las predicciones con Ensembles (conjuntos de modelos)

by Andrés González

Si ya has trabajado con BigML te habrás dado cuenta de que usa modelos basados en árboles de decisiones para encontrar patrones en los datos con los que hacer las predicciones. A grandes rasgos, un proceso de predicción parte de una serie de datos históricos que sirven para entrenar un árbol (o modelo) en el que se visualizan los patrones y las relaciones entre los datos. Para hacer una predicción, los nuevos datos entran en la caja negra (el árbol) y el sistema predice el resultado en función de a qué rama del árbol pertenecen.

Los “ensembles”, también llamados Bosques de Decisión o Decision Forests, usan varios árboles para hacer una predicción y son una forma potente de mejorarla. El concepto que se esconde detrás de los ensembles es sencillo: en lugar de entrenar un único árbol de decisiones, se entrenan varios, cada uno de ellos con un subconjunto aleatorio de los datos. Cada árbol hace su predicción, y gana la predicción en la que coinciden la mayoría de los árboles. Por ejemplo, en un ensemble de 10 árboles, si la predicción de 8 de ellos es que un cliente sí se dará de baja de un servicio (y los otros 2 predicen que no), la predicción final será que sí se dará de baja.

Pero… ¿por qué todo este lío?¿Por qué no entrenar un único árbol y punto? Existen sesudos estudios que responden a estas preguntas desde un punto de vista académico, pero para poder entenderlo nos ha gustado esta analogía que hace Charles Parker en un artículo del blog de BigML. Pensemos en predecir qué restaurantes son los que mejor calidad y servicio ofrecen. Una posibilidad es ir a todos los restaurantes, probarlos y darles una nota a cada uno. Pero no parece algo razonable. Lo que se suele hacer es preguntar a los amigos, revisar los menús, eliminar los que de forma evidente no nos gustan y comer en aquellos que pensamos que tienen bastante probabilidad de ser buenos.

Si extendemos esta analogía al campo del Machine Learning, un ensemble es como si un grupo de personas buscasen un buen restaurante en una misma zona y entre todos votasen cuál es el mejor. Si quieres profundizar más en este concepto, visita el artículo original y sus enlaces.

Cómo usar ensembles con BigML

Pasemos a la parte más práctica y veamos qué efecto tiene sobre la confianza de las predicciones. Vamos a usar el dataset que ya hemos trabajado en un artículo anterior.

Tras abrir el dataset, la forma más sencilla de crear un ensemble es hacer clic en 1-CLICK ENSEMBLE, situado en el menú desplegable de la nube con un rayo:

1-click-ensemble

Pasados unos segundos, aparecerán los 10 modelos (en dos páginas de 5 cada una) con algunas pinceladas sobre la distribución de datos y la distribución que se predice. Si haces clic en un modelo, podrás ver su árbol de decisiones y trabajar sobre él.

10-ensembles

Predicciones con ensembles

Cuando hagamos una predicción, la instancia o instancias pasarán por los 10 modelos y se tomará como correcta aquella predicción que “democráticamente” digan los 10 modelos. Si queremos evitar resultados ambiguos cuando 5 modelos predicen TRUE y los otros 5 predicen FALSE, tendremos que usar un número impar de modelos. En nuestro caso hemos hecho una predicción individual en la que 8 modelos han predicho TRUE y 2 FALSE . Por tanto la predicción final es TRUE.

 prediccion-ensembles-bigml

Ahora toca arremangarse y ver en qué medida mejora este ensemble los resultados del modelo individual del artículo anterior. Una forma de hacerlo es pasar el dataset del 20% por una Batch Prediction, exportar el resultado a Excel y ver en qué medida ha acertado las predicciones (predicciones correctas/total predicciones).

Si queremos ahorrarnos ese trabajo, podemos usar las propias herramienta que proporciona BigML: evaluaciones y comparación de evaluaciones. Según nuestros cálculos, la precisión del modelo individual es del 92,90%, mientras que el ensemble de 10 modelos aumenta al 95,50%, o sea un 3,6% más. El uso avanzado de los ensembles puede aumentar considerablemente esta cifra. Mira en CONFIGURE ENSEMBLE al visualizar un dataset y verás ver las posibilidades que se nos ofrecen.