lunes, 29 de septiembre de 2014

Usando Ensembles para mejorar las predicciones

Si te has iniciado con BigML, ya conoces que trabaja con modelos basados en árboles de decisiones.

Estos árboles son usados para encontrar patrones en los datos con los que realizar las predicciones. A grandes rasgos, un proceso de predicción parte de una serie de datos históricos que sirven para entrenar un modelo (o árbol) 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" son también llamados Bosques de Decisión ( Decision Forests en ingles). Estos usan varios árboles para hacer una predicción, y son una herramienta muy potente que sirve para mejorarla.

El concepto que se esconde detrás de los ensembles es sencillo: En vez de entrenar con un único árbol de decisiones, se utilizan varios, cada uno de ellos con un subconjunto aleatorio de 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".

Nos preguntamos: ¿por qué todo este lío?¿Por qué no entrenar un único árbol y punto? 

Existen diversos estudios que responden a estas preguntas desde un punto de vista académico, pero para poder entenderlo hacemos referencia a Charles Parker en un artículo del blog de BigML. Si quieres profundizar más en este concepto, visita el artículo original y sus enlaces.

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 los que no nos gustan y comer en aquellos que pensamos que tienen bastante probabilidad de ser buenos.

Si llevamos 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.

Paso 1: Cómo usar ensembles con BigML


Pasemos a la parte práctica y veamos qué efecto tiene sobre la confianza de las predicciones. Usaremos 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:



Esta operación tarda unos segundos, luego 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.



Paso 2: 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.




Ahora toca analizar 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.

Conclusión


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 nos ofrecen.

Fuenteclevertask

2 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. excelente trabajo mil gracias, me ha ayudado mucho para entender el proceso de ml bajo la plataforma de bigml

    ResponderEliminar