Desarrollar modelos basados en Machine Learning (ML) es una labor compleja, más aún cuando no se cuenta con el conocimiento y experiencia requeridos o cuando el perfil de Data Scientist es tan escaso.

Afortunadamente, desde hace pocos años el concepto de AutoML ha eclosionado como una de las tendencias a la hora de abordar el desarrollo de modelos basados en ML, que ha permitido la democratización del uso del Machine Learning.

En este post te explicaremos en qué consiste el AutoML, sus fases, ventajas y cómo usarlo a través de un caso práctico con Azure AutoML.

¿Qué es AutoML?

En el post AutoML: In depth Guide to Automated Machine Learning se define al Automated Machine Learning (AutoML) como una tecnología emergente para la generación de modelos de forma sencilla orientada a personas sin conocimientos en ML, para ello AutoML habilita la automatización de tareas manuales y repetitivas del proceso de desarrollo de modelos ML, lo que permite acelerar su desarrollo, reducir errores y costes, así como generar resultados de inferencia con mayor exactitud.

Ventajas de usar AutoML

Fases del AutoML

De acuerdo a este post, muy interesante, donde se recogen 10 términos básicos de Machine Learning, las fases que cubre el AutoML son las siguientes:

Preprocesamiento de datos

Para que un modelo ML aprenda adecuadamente y genere los resultados esperados necesita disponer de datos de calidad. Por ello, en la fase de preprocesamiento se realizan ciertas tareas para mejorar la calidad de los datos, entre las que se encuentran: eliminar los valores nulos, codificar las categorías, normalizar o estandarizar los datos.

Generación y selección de características

En base al conocimiento del dominio de los datos se generan características que son cruciales para que el modelo aprenda correctamente.

Esto es posible gracias a la ingeniería de características, en donde se extraen características o atributos individuales que mejor representa la información útil contenida en las instancias o ejemplos de entrenamiento.

Dichos atributos se representan como una columna dentro del conjunto de datos que se usará como entrada al proceso de entrenamiento del modelo ML.

Selección del Algoritmo y Optimización de Hiperparametros

AutoML realizan el entrenamiento de un modelo ML mediante la utilización de diferentes algoritmos sobre los cuales se realiza una optimización de hiperparámetros con el objetivo de realizar una evaluación eligiendo el algoritmo que mejor resultados ofrece. La optimización de los hiperparámetros de cada algoritmo se realiza en base a propiedades estadísticas y características extraídas de los datos de entrada.

¿Qué es Azure AutoML?

Azure AutoML es un servicio del ecosistema cloud de Azure Machine Learning, que facilita la construcción de modelos basados en ML y que sean de alguna de las siguientes tipologías: clasificación, regresión o pronóstico de series temporales.

Con Azure AutoML se pueden generar modelos ML para detectar fraudes bancarios, hacer una previsión de la demanda de un producto, o predecir el consumo de energía de un edificio en un lapso de tiempo, etc., de manera rápida, sin invertir mucho tiempo y recursos y sin disponer de conocimientos profundos del dominio del problema a resolver y sobre ciencia de datos.

Azure AutoML ejecuta múltiples iteraciones de entrenamiento usando diferentes algoritmos de Machine Learning muy populares, como por ejemplo LogisticRegression, SVM, KNN, DesicionTree, Random Forest, XGBoost Classifier, entre otros más. ¡Todo esto sin escribir una línea de código!

Mediante el sistema que provee Azure AutoML, que veremos más adelante, se pueden generar modelos ML permitiendo personalizar la configuración inicial, sugerida por el sistema, modificando ciertos elementos, como el tiempo máximo del entrenamiento, número máximo de iteraciones, número de iteraciones en paralelo, métrica a usar para la optimización del modelo o la capacidad de cómputo sobre la cual ejecutar los entrenamientos, entre otros.

Azure AutoML se puede usar fácilmente desde el portal de Azure mediante el servicio Machine Learning Studio o usando el SDK de Azure. En el caso práctico vamos a usar Machine Learning Studio para experimentar con AutoML.

En el siguiente diagrama se ilustra el funcionamiento de Azure AutoML, donde se pueden ver los elementos que intervienen en el proceso y que se describen posteriormente.

  1. User Inputs: la entrada al proceso de entrenamiento con AutoML se compone del conjunto de datos, la métrica que va a medir la calidad del modelo, las restricciones, ya sean de tiempo máximo de entrenamiento en horas, número de iteraciones concurrentes de un entrenamiento, finalización del entrenamiento en base al valor máximo de una métrica e, incluso, se pueden seleccionar los algoritmos de ML que deben excluirse durante las iteraciones del entrenamiento.
  2. AutoML: es el motor del proceso de entrenamiento, que en base a los inputs definidos, realiza los entrenamientos iterativamente aplicando múltiples algoritmos sobre el conjunto de datos, detectando cuál de estos algoritmos genera los mejores resultados. Los modelos generados son validados mediante el método seleccionado por el usuario, ya sea usando las validaciones cruzadas de k-fold, Montecarlo o mediante el uso de un subconjunto de los datos de entrenamiento.
  3. Leaderboard: es el ranking de modelos entrenados por AutoML, donde en primer lugar se encuentra el modelo con mejor calificación en base a la métrica seleccionada y para el cual también incluye una descripción sobre las métricas utilizadas para la selección de dicho modelo como la mejor opción, mostrando las características que tienen un impacto directo en las predicciones del mejor modelo. El SDK de Azure Machine Learning ofrece un módulo en python para entender y analizar el comportamiento de un modelo ML.

Caso práctico en Azure AutoML

Vamos a experimentar con Azure AutoML para entender su funcionamiento.

El caso que vamos a proponer es generar un modelo de ML que nos permita pronosticar las ventas de una empresa que ofrece zumos de naranja. Para ello, vamos a utilizar un algoritmo de aprendizaje supervisado donde vamos a contar con datos históricos del precio sobre los que realizar el entrenamiento.

Seguimos los pasos detallados a continuación:

1_ Lo primero que se necesita para empezar a trabajar con AutoML es una suscripción de Azure gratuita o de pago y un espacio de trabajo de Azure Machine Learning.

Creación del espacio de trabajo de Azure Machine Learning
Creación del espacio de trabajo de Azure Machine Learning

2_ Con el espacio de trabajo creado se puede ejecutar Machine Learning Studio, un servicio que provee funcionalidades muy interesantes como los Notebooks para realizar experimentos de ciencia de datos y ML, Designer para desarrollar modelos ML mediante drag & drop de algoritmos predefinidos y, por supuesto, AutoML que nos ocupa en este post. También se puede usar Machine Learning Studio para desplegar los modelos construidos por los Data Scientists que se quieran entrenar y disponibilizar mediante API REST o desplegar pipelines de ML definidas con el SDK de Python.

Espacio de trabajo de Machine Learning Studio
Espacio de trabajo de Machine Learning Studio

3_ Al entrar en la opción Automated ML, podremos crear un experimento de AutoML y, para ello, el primer paso es definir el dataset de entrenamiento, el cual puede ser proporcionado por el usuario desde su ordenador local, un datastore de Azure, una URL de internet o desde Azure Open Datasets, donde hay muchos datasets de ejemplo. Para nuestro caso práctico usaremos la última opción, donde se encuentra un dataset que nos permitirá generar un modelo ML para pronosticar las ventas de una empresa que ofrece zumos de naranja.

Algo muy importante a la hora de generar el dataset es que debe estar en formato tabular y, puesto que vamos a utilizar un algoritmo de aprendizaje supervisado, el valor que se va a predecir debe estar presente en una de las columnas del dataset.

Creación del dataset usando Azure Open Datasets
Creación del dataset usando Azure Open Datasets

4_ Una vez tenemos creado el dataset, al cual hemos llamado dataset-orange-sales, podemos previsualizar sus datos y las estadísticas de cada una de las columnas que lo componen, como se puede apreciar en las siguientes imágenes.

Previsualización del dataset del experimento
Previsualización del dataset del experimento
Estadísticas de los datos del experimento.
Estadísticas de los datos del experimento.

5_ A continuación, asignamos el nombre al experimento (p.e. forecasting-orange-juice-sales ) y asignamos la columna del dataset que se quiere pronosticar, que será Quantity porque queremos pronosticar la cantidad de zumos de naranja que se venderán.

Configuración del experimento AutoML
Configuración del experimento AutoML

6_ Configuramos el clúster de procesamiento sobre el cual se ejecutarán los entrenamientos, usando alguna de las configuraciones recomendadas. También se puede personalizar el tipo de máquina virtual que mejor nos convenga, ya sea CPU o GPU, de propósito general, memoria optimizada, número de cores, etc.

Para el experimento usaremos una de las opciones personalizadas, que es una máquina virtual con optimización de memoria Standard_D12 con 6 cores, 28GB de RAM y 200GB de almacenamiento, con un mínimo de nodos 0 y un máximo de 1 (por restricciones de la suscripción gratuita no se puede escalar a más nodos).

Configuración del clúster de procesamiento Standard_D12 para el experimento
Configuración del clúster de procesamiento Standard_D12 para el experimento

7_ Procedemos a seleccionar la tipología del experimento que queremos ejecutar, pudiendo elegir una de las siguientes: Classification, Regression, Time series forecasting, cada una de las cuales ofrece un abanico de algoritmos, métricas y métodos de validación.

Tipologías de experimentos disponibles en Azure AutoML
Tipologías de experimentos disponibles en Azure AutoML

8_ Para seleccionar la tipología del experimento se debe tener en cuenta el problema a resolver. Para realizar la previsión de las ventas, demanda de un producto o previsión de cualquier otra naturaleza en el tiempo, se suele usar el Time series forecasting o previsión de series de tiempo. Aquí, sí que se requiere un poco de conocimiento sobre el campo de aplicación de cada tipología para elegir la adecuada.

El modelo basado en ML que queremos entrenar mediante AutoML debe predecir las ventas de zumo de naranja de una empresa, por ello hemos decidido utilizar la familia de algoritmos para Time series forecasting.

El uso de la tipología Time series forecasting requiere que especifiquemos la columna del dataset que contenga una serie de tiempo, que es la columna WeekStarting, de tipo timestamp. También se requiere especificar las columnas del dataset que identifican la serie de tiempo de manera unívoca y que son Store y Brand.

Para definir todo lo anterior, se requiere conocimiento de la naturaleza de los datos y conocimiento básico sobre la tipología Time series forecasting, para elegir las columnas adecuadas. Si no se cuenta con ningún conocimiento, Azure AutoML ofrece una descripción de cada uno de los campos que dan una idea sobre cómo configurarlos.

Configuración del tipo de experimento a ejecutar
Configuración del tipo de experimento a ejecutar

9_ Mediante la opción View additional configuration settings se pueden definir opciones de configuración adicionales, como la métrica principal que se usará para evaluar el modelo, los algoritmos de ML que se quieren excluir del experimento, los criterios de finalización del entrenamiento (p.e. Tiempo máximo de ejecución), el tipo de validación a realizar sobre el pronóstico de ventas y el número de iteraciones concurrentes, que tendrá que ser menor al número máximo de nodos definidos en el paso 6.

Habilitar el check Explain best model indica que al terminar el experimento se genera una explicación del modelo con más alta calificación, aunque puede no estar disponible para ciertos algoritmos de previsión de series temporales.

Opciones adicionales de configuración del experimento
Opciones adicionales de configuración del experimento

10_ Otra opción interesante es la caracterización que se encarga de normalizar y escalar los datos automáticamente. A este proceso se le llama ingeniería de características y por defecto está activado en el experimento, pudiendo realizar una personalización de la caracterización a cada una de las columnas del dataset.

Caracterización de los datos
Caracterización de los datos

11_ Una vez se haya realizado toda la configuración del experimento, este empezará a ejecutarse. La duración máxima del experimento que se ha configurado ha sido de 3 horas(si se supera este tiempo, el experimento finalizará).

Estado de la ejecución del experimento.
Estado de la ejecución del experimento.

12_ En la pantalla donde se presenta el estado de la ejecución del experimento se pueden observar varias pestañas, cada una de las cuales ofrece información muy útil sobre los modelos que entrena el experimento y su salida. Las más interesantes son Models, donde se ven los modelos que se van generando y su calificación; Data guardrails y Output + logs, de las que hablaremos más adelante.

Lista de modelos entrenados con la mejor calificación
Lista de modelos entrenados con la mejor calificación

13_ En la pestaña Data guardrails se muestran las validaciones realizadas sobre el dataset gracias a que previamente se activó la caracterización automática.

14_ Otra de las pestañas que ofrece información relevante es Outputs + Logs, donde se ven múltiples ficheros de logs de salida del experimento. También se puede ver y descargar el fichero .pkl del modelo con mejor calificación y un fragmento de código python para hacer una predicción con dicho modelo.

15_ Si se presenta algún fallo en la ejecución del experimento, se genera un mensaje de error, indicando las acciones que se deben realizar para que el experimento finalice correctamente. Normalmente, con ampliar la capacidad de procesamiento del clúster y ampliar el tiempo de entrenamiento es suficiente.

16_ Una vez termine el experimento, volvemos a la pestaña Model y vamos al algoritmo con mejor calificación llamado VotingEnsemble. Si hacemos clic en el enlace View explanation, se abre una ventana donde se puede navegar en diversos aspectos como el rendimiento del modelo, explorar el dataset, importancia agregada o individual de las características, generando una gráfica para cada uno de ellos.

Para entender las gráficas también es necesario documentarse. En este enlace puedes encontrar más información.

Gráfica del rendimiento del modelo
Gráfica del rendimiento del modelo
Gráfica de la exploración del datase
Gráfica de la exploración del datase
Gráfica de la importancia agregada de las características
Gráfica de la importancia agregada de las características
Gráfica de la importancia de la característica Quantity
Gráfica de la importancia de la característica Quantity
Métricas del modelo con la mejor calificación
Métricas del modelo con la mejor calificación

17_ Si queremos desplegar el modelo con mejor calificación, al dar al botón Deploy se muestra una pantalla para seleccionar el nombre del modelo a desplegar y el destino donde queremos desplegarlo (p.e Azure Container Instance o Azure Kubernetes Service).

Configuración del despliegue del modelo
Configuración del despliegue del modelo

18_ Una vez desplegado el modelo, vamos a la opción Endpoints dentro del espacio de trabajo de Machine Learning Studio.

Endpoint del modelo desplegado
Endpoint del modelo desplegado

19_ Al hacer clic sobre el nombre del modelo, vamos a una pantalla donde se visualizan los datos del despliegue incluyendo el REST endpoint al que habría que conectarse para realizar una predicción. También hay un enlace para descargar el fichero swagger.json. De este modo, ya se podría usar el modelo para hacer pronósticos sobre las ventas de zumos de naranja a través de la API REST.

Detalles del endpoint del modelo desplegado en Azure Container Instance
Detalles del endpoint del modelo desplegado en Azure Container Instance

20_ Por último, es importante saber que todo el proceso AutoML descrito en los puntos anteriores se puede implementar usando el SDK de Python. En el siguiente enlace puedes ver un ejemplo.

Conclusiones

Azure AutoML ofrece un método rápido y sencillo de construcción de modelos de ML, en donde lo único que se necesita es un dataset de datos en formato tabular, sobre el cual se debe contar con un conocimiento acerca de su naturaleza ya que es necesario para seleccionar la tipología del experimento y la característica que se quiere predecir.

Es necesario contar con un conocimiento básico sobre los problemas que se resuelven con las tipologías de clasificación, regresión y predicción mediante series temporales, para que los experimentos tengan un mínimo de calidad y coherencia.

Aunque existan librerías y tecnologías de AutoML que facilitan la experimentación con Machine Learning, la figura del Data Scientist y sus conocimientos siguen siendo muy relevantes.

Contar con un perfil de este tipo permite aprovechar el máximo potencial de AutoML para entender mejor los resultados generados, optimizar y acotar los recursos de procesamiento a usar, ya que el sobredimensionamiento de los mismos podría conllevar a un coste excesivo en la facturación según el tipo de clúster que se configure.

Azure AutoML es un servicio en constante evolución y que dispone de mucha documentación para iniciarse y aprender a usarlo, ya sea desde Azure Machine Learning Studio o a través del SDK de Python.

Azure AutoML solo es uno de los servicios que ofrece Azure Machine Learning Studio. Los Notebooks y Designer también son dos servicios muy interesantes que merece la pena tratar en futuros posts.

Debemos tener en cuenta que existen además diversas alternativas para el uso de tecnología AutoML: soluciones on-premise y Open Source (H2O automl, AutoKeras y otras que puedes ver aquí) y soluciones ofrecidas como servicio, como Azure AutoML (o de otros proveedores) y otras soluciones de las que hemos hablado en el blog de Paradigma (AWS Sagemaker AutoPilot, Cloud AutoML o clasificación de imágenes con AutoML).

Conviene tener todas en cuenta a la hora de elegir la más adecuada para nuestro caso de uso.

Bonus

¿Te has quedado con ganas de más? No te pierdas nuestros podcast sobre AutoML: la manera de hacer fácil Machine Learning.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.