Share via


Crea tu sistema de aprendizaje automático con Azure ML Studio

Si el mes pasado os contábamos cómo añadir paquetes de inteligencia a vuestras apps a través del proyecto Oxford, en esta ocasión vamos a ver cómo crear nuestros propios sistemas de aprendizaje utilizando la plataforma Microsoft Azure Machine Learning.

El objetivo del aprendizaje automático es conseguir un algoritmo que a partir de un conjunto de datos pueda resolver un problema definido. Cuando tienes datos que se duplican, pongamos que cada 18 meses, se hace muy complicado tratar con ellos; los seres humanos no llevamos bien realizar tareas tediosas y repetitivas, pero los ordenadores son muy buenos en eso.  Algunos de los problemas que pretenden resolver con estas técnicas son: encontrar patrones dentro de un mismo conjunto, realizar una predicción sobre nuevos conjuntos de datos, buscando similitudes con el conjunto de datos de entrenamiento o bien tomar una decisión en base a ese conjunto de datos.

Hasta hace poco, desarrollar un sistema de aprendizaje automático era muy caro y complejo, obtener los datos necesarios también era muy difícil y las herramientas necesarias para construir un sistema completo estaban muy desconectadas. Por ejemplo, la herramienta para experimentar y entrenar el algoritmo es diferente de la herramienta para ejecutarlo y si luego lo queremos publicar como una api disponible para aplicaciones externas necesitas un conjunto de herramientas y de conocimientos diferentes, tanto para el desarrollo como para el despliegue y el mantenimiento del mismo.

Azure Machine Learning nos proporciona todo ese conjunto de herramientas en un mismo sitio, en una solución completamente manejada, sin necesidad de instalar ningún software, de mantener ningún hardware ni de desplegar soluciones complejas.

Azure ML Studio

Para poder empezar a crear nuestros modelos de aprendizaje basta tener una cuenta de Azure y crear un espacio de Aprendizaje Automático:

image

A partir de ese momento ya podremos abrir en el Microsoft Azure Machine Learning Studio donde definiremos nuestro experimento de ML. En el Studio podemos empezar con un experimento vacío o con uno ya preparado de la galería:

image

En este ejemplo sencillo empezaremos con un experimento vacío para predecir el sueldo de una persona en base a una serie de parámetros.

Construcción de un experimento de aprendizaje

En el Studio vamos a construir el experimento mediante un interfaz de arrastrar y soltar donde tendremos todo lo que necesitamos para crearlo.

image

Para empezar necesitamos un conjunto de datos para entrenar el algoritmo. Podemos utilizar un conjunto propio que hayamos subido al sistema, uno de los múltiples conjuntos de ejemplo que tenemos disponibles en la plataforma o bien utilizar una fuente de datos que puede estar tanto en Azure como en un servidor nuestro. Las fuentes de datos de Azure pueden venir de un blob o de una cuenta de HDInsight, de manera que podremos conectar fácilmente con los datos que estemos recogiendo a través de los múltiples sistemas de ingestión de datos que tenemos en la plataforma.

Para el ejercicio utilizaremos el conjunto de datos de ejemplo que contiene información del censo de los Estados Unidos.

image

Una vez colocamos el conjunto de datos en el modelo, podemos abrirlo con el visualizador para ver cómo es el conjunto y cómo está distribuido, de forma que podamos hacer un primer análisis visual para identificar las columnas importantes y qué columnas son dependientes las unas de las otras. En este conjunto observaremos cómo tenemos algunos campos que podremos obviar y el último es el campo “income” que nos proporciona la información que deseamos predecir.

image

El sistema nos proporciona herramientas para limpiar y preparar los datos de forma que podamos entrenar el algoritmo de forma eficiente y confiable. Tenemos procesos para identificar campos vacíos donde podemos decidir qué hacemos con los mismos: estimarlos, borrar la fila o la columna, poner un valor por defecto, etc.

image

Otras herramientas típicas de la minería de datos, como la discretización o la normalización de los datos también están disponibles, ya que algunos algoritmos necesitarán los campos de esa manera. Otra transformación muy útil es la proyección de las columnas para eliminar las que no nos interesen:

image

Selección de algoritmos

Hay varios tipos de algoritmos de Machine Learning, los más comunes se dividen entre supervisados y no supervisados.

  • En los algoritmos supervisados se busca la relación entre la entrada y la salida, para predecir qué resultado nos proporcionará una cierta entrada. En estos casos tendremos un conjunto de datos de entrenamiento que incluirá el dato que queremos predecir.
  • Los algoritmos no supervisados se utilizan para identificar patrones dentro de los datos.

Para este ejercicio vamos a utilizar un algoritmo supervisado para predecir el sueldo de una persona en base a unos campos que vamos a seleccionar. Para poder medir la precisión del algoritmo vamos a utilizar la técnica de dividir aleatoriamente el conjunto de datos en dos subconjuntos, uno para realizar el entrenamiento del algoritmo y otro para comprobar la precisión de ese entrenamiento. Vamos a dividir en este caso en un bloque de 80% para entrenamiento y un 20% para comprobación:

image

Ahora elegiremos el algoritmo, al arrastrarlo sobre el modelo veremos que no tiene una entrada de datos, porque para poder utilizarlo necesitamos un “entrenador” que se encargará de entrenar el modelo. En el entrenador seleccionaremos qué columna queremos prededir:

image

Después del entrenador colocaremos el puntuador, que comparará los resultados del algoritmo entrenado con los resultados reales que habíamos separado anteriormente y a continuación un evaluador que nos medirá la precisión y fidelidad del algoritmo con ese conjunto de datos.

image

El sistema de evaluación que nos mostrará en una gráfica la relación entre los falsos positivos y los verdaderos, así podremos ver de forma gráfica la accuracy del algoritmo que en este caso está al 0.83:

image

 

Si queremos comparar el algoritmo utilizado con cualquier otro, podemos utilizar los mismos datos para entrenar otro algoritmo dentro del mismo experimento y conectarlo al otro punto de conexión del evaluador, así sabremos cual de los dos algoritmos funciona mejor con nuestros datos:

image

En este caso el algoritmo que habíamos elegido inicialmente es ligeramente mejor:

image

Quitamos el algoritmo que peor funciona para nuestra solución y una vez ejecutado, podremos crear sobre nuestro experimento un modelo entrenado que podremos utilizar para ponerlo en producción. Para ello tenemos el botón “Create Scoring Experiment”, que nos copiará el experimento en curso en uno nuevo con el resultado del algoritmo entrenado de forma que podamos ejecutar

image

Nos ha creado un input y un output para el servicio web, si nos fijamos el input está antes de las transformaciones de limpieza y proyección. Seguramente no necesitaremos realizar estos pasos con la entrada que vendrá a través de nuestra API y por lo tanto podemos reconectar la entrada directamente al puntuador:

image

Para poder utilizar el algoritmo crearemos un servicio web, pulsando sobre el botón “Publish Web Service” y esto nos creará un servicio web estilo REST que podremos utilizar desde cualquier aplicación. También nos proporcionará una clave de API y una página donde podremos probar el algoritmo.

Uso del servicio Web

Desde la página del servicio podremos probar directamente y también descargar un Excel que nos permitirá rellenar los datos de forma más cómoda y probar el algoritmo. También tendremos la clave de API que necesitaremos para poder acceder al servicio:

image

Como es un interfaz de API REST vamos a poder integrar el sistema de predicción con cualquier aplicación, desde una web hasta una aplicación móvil. Desde el portal de Azure podremos acceder a los dos métodos que tendremos para acceder a nuestra API: modo de consulta y modo de ejecución por lotes. Allí mismo tendremos el código de ejemplo para ejecutar una consulta en C#, Python y R:

image

Para poder probar el código tendremos que sustituir la clave de API por la que hemos obtenido en el portal. Si utilizamos C# necesitaremos añadir el paquete Nuget Microsoft.AspNet.WebApi.Client.

Publicar nuestros experimentos de aprendizaje

Azure ML es una solución completa para crear nuestros experimentos de aprendizaje y nos permite publicar los mismos a una galería pública para que otros puedan ver y aprender de nuestros expermientos:

 image

Tan sólo tendremos que pulsar sobre el botón Publish to Gallery y proporcionar unos datos que identifiquen nuestro expermiento. También podemos empezar un experimento propio a partir de ejemplos de la galería.

Publicación en Azure Marketplace

La solución de Azure Machine Learning es completa y nos permite publicar nuestros algoritmos dentro del Azure Marketplace. En el artículo anterior sobre el proyecto Oxford vimos que para poder acceder a él utilizábamos el Marketplace para obtener acceso al mismo. Nosotros podemos hacer lo mismo con nuestras propias soluciones de aprendizaje automático. En el siguiente enlace tenéis las instrucciones sobre cómo es el proceso de publicación: https://azure.microsoft.com/documentation/articles/machine-learning-publish-web-service-to-azure-marketplace/

 

Para empezar con Machine Learning tenéis documentación y vídeos que os explican los conceptos básicos en el mismo sitio web de ML Studio: https://studio.azureml.net/

Juan Manuel Servera
@jmservera

Cloud & IoT Technical Evangelist