
Por fin llegamos al final de nuestro experimento de creación de un modelo predictivo Machine Learning (ML) en Azure ML Workplace. Tras los post de introducción a la herramienta, creación del experimento y construcción del modelo, tan sólo nos quedaba probarlo con el conjunto de datos de Test y ver los pasos que hay que dar para “operativizarlo”. Y eso es precisamente lo que vamos a ver en este post.
5. Cómo convertir el experimento de entrenamiento en un experimento predictivo.
Una vez entrenado el modelo, ya podemos usarlo para hacer predicciones. Para ello, lo desplegamos como servicio web. Los usuarios pueden enviar los datos de entrada (input data) al modelo y el servicio devuelve la predicción de resultados. Para convertir el experimento de entrenamiento en predictivo, lo primero es ejecutarlo (“Run” en la barra de iconos inferior). El siguiente paso es seleccionar “Set up web service/Predictive web service”.
Como hemos probado dos algoritmos diferentes, nos solicita seleccionar uno de ellos:
En este este caso, elegimos el “Two-Class Decision Forest”, así que borramos la rama que habíamos creado para probar el otro algoritmo. Se genera una nueva pestaña “Predictive experiment” donde vemos que de forma dinámica se han ido agregando una serie de elementos y eliminando otros. En concreto, el objetivo es eliminar todos aquellos módulos que hacían falta para entrenar el modelo, pero ahora ya no son necesarios. También se agregan dos nuevos módulos Web service input y Web service output, que identifican los datos de entrada que se van a incorporar al modelo y los datos que devuelve el servicio. Aunque este proceso se ejecuta de forma automática al seleccionar la opción Set Up Web Service, también puede hacerse de forma manual, o incluso puede ser necesario “retocarlo” manualmente después.
En la parte inferior podemos ver los detalles del proceso de creación del experimento predictivo:
En este caso, vamos a recurrir al retoque manual. Una vez generado el modelo, entrenado y validado, ya no es necesario que los datos de test recorran todo el flujo del experimento. El módulo Web service input puede entrar directamente en el de Score Model. La operación es tan sencilla como arrastrar el módulo a la parte baja del diagrama (borrando en enlace que lo conectaba con el módulo Train.csv), y después conectarlo con el módulo Score Model).
(Más detalle sobre cómo preparar el modelo en How to prepare your model for deployment in Azure Machine Learning Studio).
5.1 Lo implementamos como web service
Una vez creado el experimento predictivo, lo vamos a implementar como servicio web. Para ello, lo primero que tenemos que hacer desde el entorno del experimento (experiment canvas) es ejecutarlo (“Run”). Una vez haya terminado de ejecutarse, seleccionamos Deploy Web Service y después, Deploy Web Service New. Se abre la página del portal Machine Learning Web Service portal opens. Nota: para implementar un Nuevo servicio web debes tener los permisos configurados en esa suscripción. Para saber cómo confirgurarlos en caso de que fuera necesario consultar: Manage a Web service using the Azure Machine Learning Web Services portal.
Vemos que ha generado una API que ejecutará nuestro modelo predictivo y a la que podremos acceder de distintas formas.
Opción 1:
La más sencilla de ellas es desde esta misma pantalla, seleccionando el botón azul “Test”.Vemos cómo se abre un cuadro de diálogo en el que podemos ir introduciendo a mano los valores de las distintas variables para que nos prediga si ese pasajero concreto, según el modelo que hemos entrenado, sobrevivirá o no.
Opción 2:
La segunda opción es seleccionar “Test Preview”
Esta opción nos lleva al portal Azure ML web services, donde, si seleccionamos la opción “Test end point”, bajo el icono “Basics”, accedemos a una versión web de este mismo formulario para agregar los valores individuales de las distintas variables de un caso concreto:
Puede ser en el mismo formato que hemos visto antes:
O en formato .csv:
Opción 3:
La tercera opción es llamar a la API desde Excel, seleccionando el icono de Excel que aparece bajo APP. Al elegir esta opción, se descarga un fichero Excel con un add-on que permite conectar con los servicios web de Azure.
Por defecto, carga una muestra de los sample data, para poder empezar a trabajar.
5.2 Probamos el funcionamiento del algoritmo como web service (según la opción 1).
Recordamos que, para entrenar el modelo nos descargamos de Kaggle el conjunto de datos Train.csv. Lo dividimos en dos partes (80/20) para poder hacer un Scoring del modelo y obtuvimos resultados como éste (Visualizando, dentro del Módulo “Scored Model”, el Scored Dataset). En este conjunto de datos, sabíamos qué pasajeros había sobrevivido, y cuáles no. El modelo ha aprendido a predecir la supervivencia “Scored Label”, basándose en los datos de entrenamiento de forma que cuando obtiene un “Scored Probability” > 0,5, le asigna un “Scored Label”= 1, Superviviente. Y si es menor, “Scored Label” = 0, Fallecido.
Ahora, vamos a comprobar cómo funciona el algoritmo al aplicarlo sobre el conjunto de datos de test.csv. Lo descargamos de Kaggle, como hicimos con el anterior. Los datos tienen este aspecto:
Nos vendrá bien recordar el “Diccionario de Datos” porque vamos a agregar a mano alguno de estos ejemplos:
Si recordamos la “Opción 1”, la más básica, seleccionábamos “Test” y se nos abría un formulario para ir introduciendo los datos nuevos de forma manual.Si cogemos, por ejemplo, el primer registro: PassengerId,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked892,3,”Kelly, Mr. James”, male,34.5,0,0,330911,7.8292,,Q y queremos calcular la probabilidad de que este pasajero fuera superviviente, seleccionamos “survived”=1 y vamos rellenando el resto de los datos:
El resultado de la predicción (si seleccionamos ver detalles) es:
Como el valor “Scored Probabilities” es 0,625, por tanto, mayor que 0,5, el modelo predice que esta pasajera si sobrevivirá. Evidentemente, esta forma de probar nuestro modelo no resulta nada práctica para ponerlo en producción o hacer predicciones masivas. En ese caso, ya tocaría “aflojar la mosca”. Ejecutar algoritmos tiene siempre un coste en computación. Desde una Raspberry Pi a un HAL9000 (Space Odyssey) o un Cray).
Nosotros lo dejamos aquí, pero los interesados, pueden investigar un poco sobre el modelo de costes. Se paga por la computación necesaria para entrenar al modelo, por la computación necesaria para llamar al “scoring” (modelo entrenado) a escala, y en particular las llamadas al modelo entrenado “operacionalizado” en la Web API.
Con este post, cerramos la serie sobre el experimento de supervivencia del Titanic, donde hemos creado nuestro propio modelo de predicción en Azure Machine Learning Studio, haciendo el proceso completo, desde la carga y depuración de los datos, la generación del modelo, su entrenamiento, scoring, generación del modelo en formato web service y prueba sobre el conjunto de datos de test.
Esperamos que os haya sido útil y que os animéis a generar otros modelos basados en otros algoritmos y, en definitiva, seguir aprendiendo cada día un poco más de Ciencia de Datos.
Puedes encontrar la serie completa aquí:
- Titanic: Tu primer experimento en Azure ML Studio
- Tu primer experimento en Azure ML Studio (II); El caso del Titanic: Preparando los datos
- Tu primer experimento en Azure ML Studio: El caso del Titanic (III): Entrenando el modelo
- Tu primer experimento en Azure ML Studio: El caso del Titanic (IV y fin): ¿Sobrevivirán?. Prueba y puesta en producción del modelo.
Post publicado en ThinkBig Empresas en 2017. Habrá cambios en el software, pero se puede aplicar la misma dinámica a la nueva versión.