Construyendo un Modelo de Regresion con Azure Machine Learning

Problema:

Se te encomienda la tarea de construir un modelo para predecir el monto de ventas de una tienda, teniendo en cuenta el día, mes, año, si es feriado, fin de semana o si ese día nevó.

Solución:

1.Introducción

Una alternativa para crear modelos predictivos de una manera sencilla es utilizando Azure Machine Learing. Pero, ¿Qué es Azure Machine Learning? Es una plataforma construida por Microsoft diseñada para el aprendizaje automático. Además de proporcionar una interfaz sencilla (drag and drop), también contiene algoritmos(predictivos) implementados (también podemos utilizar R y Python para personalizar aún más los modelos). Para conocer más sobre esta plataforma podemos acceder al siguiente link.

2.Crear Data Set

Vamos a empezar a construir el modelo predictivo, para lo cual lo primero que debemos hacer es crear un dataset que nos servirá de input.

Accederemos a  https://studio.azureml.net/

Dentro de la plataforma nos dirigimos a New->Dataset->From Local File :

Se abrirá una ventana y aquí buscaremos el archivo que queremos importar. En este caso, este archivo tendrá la siguiente estructura:

Year,Month,Day,Qty,WeekDay,Holiday,Snow
2014,1,20,445,2,1,0
2014,2,13,40,5,0,0
2013,3,10,456,1,0,0
2014,3,31,38,2,0,0

Una vez seleccionado el archivo marcamos el check de confirmación:

*Nota:  Los dataset no solo pueden ser archivos planos sino también orígenes en la nube como Azure SQL Database, pero también on premises como SQL Server.

Este tipo de demos utilizando diferentes orígenes se abordarán en posteriores posts.

3.Crear Experimento en Azure Machine Learning

Para la creación del modelo predictivo de ventas necesitamos crear un experimento, para lo cual nos dirigimos a New->Experiment->Blank Experiment :

*Nota: Podemos seleccionar experimentos de ejemplo  para ver cómo se desarrolla y la configuración de las tareas.

Antes de lanzarnos a construir el modelo , siempre se recomienda hacer un borrador de las tareas que queremos construir:

  1. Consumir la data de input(data de histórico de ventas).
  2. Marcar las columnas que sean necesarias como Categorías, con esto uno le indica al algoritmo que estos atributos son categóricos(no acepten decimales).
  3. Elegir el algoritmo para la predicción.
  4. Entrenar el modelo con la data histórica. La variable año no debe ser tomada en cuenta para la predicción, solo nos ayudará para escoger la data de entreno y testeo.
  5. Evaluar el modelo.

Ya una vez dentro, ubicaremos el Dataset recientemente importado, el cual se ubica en MyDatasets->Ventas.csv :

Seleccionamos Edit Medatada de la paleta de Tareas:

En las configuraciones de Edit Metadata seleccionaremos las columnas : WeekDay, Holiday , Snow:

A estas columnas antes seleccionadas les indicaremos que serán atributos categóricos.

Además, en la propiedad Categorical seleccionamos Make Categorical:

Seleccionamos Split Data de la paleta de tareas:

Esta tarea nos permite dividir el dataset de acuerdo a un criterio(porcentaje, expresión regular, etc.)

En las propiedas de la tarea Split Data nos ubicamos en Splitting mode:

Seleccionamos Relative Expression:

En la casilla Relational expression colocamos \”Year”<2015 :

Esto con el objetivo de dividir la data, por un lado la de los años 2013 y 2014 , la otra solo del año 2015.

Seleccionamos Select Columns in Dataset de la paleta de tareas:

Esto con el objetivo eliminar la columna year, ya que de acuerdo al requerimiento no debemos tenerla en cuenta para la predicción, pero sí para el split del dataset.

En las configuraciones de Select Columns in Dataset seleccionaremos la columna: Year

 

Seleccionamos Linear Regression y Train Model de la paleta de tareas:

Para este ejemplo escogemos Linear Regression, pero podríamos haber elegido cualquier otro algoritmo de regresión.

Obtendremos algo como lo siguiente:

Dentro de Train Model seleccionaremos la columna Qty(esta será la columna a predecir con el modelo):

Seleccionamos Score Model de la paleta de tareas:

Obtendremos algo como lo siguiente:

Seleccionamos Evaluate Model de la paleta de tareas, obteniendo algo como lo siguiente:

4.Ejecución del Proyecto

Para ver los resultados una vez construido nuestro modelo lo primero será hacer Click en Save.

El siguiente paso es realizar Click en Run:

Si todo va bien en cada tarea dentro del proyecto aparecerá un check verde. Para visualizar los datos predecidos hacemos Click derecho en Score Model->Evaluate result-Visualize :

 

Se nos abrirá la siguiente ventana, donde la columna Scored Labels será la columna predecida:

Así mismo para visualizar los resultados generales de nuestro modelo hacemos Click derecho en Evaluate Model – >Evaluation results->Visualize:

Se nos abrirá la siguiente ventana, obtendremos los resultados generales de nuestro modelo predictivo. Podríamos utilizar estas métricas para ver qué tan preciso fue el modelo predictivo. Esta ventana varía mucho del tipo de modelo a elegir: Regresión, Clasificación , etc.

Conclusiones:

Azure Machine Learning Services es una plataforma que nos permite construir modelo predictivos de una forma sencilla, pero esto no quiere decir (siempre confunde a las personas) que hay que dejar de lado el conocimiento estadístico o apoyarnos en lenguajes como R o Python para construir algunas tareas personalizadas que la plataforma no las haya considerado. En futuros posts abordaremos implementar el experimento construído, y que los resultados puedan ser consumidos desde un reporte o una aplicación. Espero les haya servido.