Bit - loader

Experimentando con Machine Learning, Microsoft Azure


Netmind - Experimentando con Machine Learning, Microsoft Azure    Artículo | Microsoft Azure
Xavier Saladié | 30/12/15

Entre la colección de funcionalidades (a fecha de escritura de este post ya son 30) que Microsoft publica como parte de la plataforma Azure, disponemos de una que es realmente interesante, denominada Machine Learning.  Esta funcionalidad permite llevar a cabo análisis de datos para poder extraer conclusiones de manera sorprendentemente rápida y flexible.

La potencia real de la herramienta radica en que es altamente personalizable aunque para ello no requiere de programación de ningún tipo pero permite Scripts en R y en Python. Toda la lógica del tratamiento, análisis, validación y conclusiones se lleva a cabo desde una Toolbox que contiene un conjunto de primitivas y que deberemos conectar entre ellas de manera similar a la de un paquete de Integration Services.

Machine-Learning

Creación de un Área de Trabajo

Machine Learning se basa en el concepto de Experimento, que no es otra cosa que el circuito completo de tratamiento de datos incluyendo uno o varios orígenes, filtrados, cálculos, …

Para crear un experimento necesitamos disponer de un Área de Trabajo y, obviamente, de una cuenta en Azure. Si no dispones de una puedes crear una cuenta de prueba desde aquí.

Una vez creada y conectados al Área de Trabajo, accederemos a una pantalla desde la que podremos crear nuestro primer experimento. Para hacerlo podemos investigar otros experimentos publicados, lo que nos permitirá familiarizarnos con el entorno y sus posibilidades o directamente empezar por uno en blanco que construiremos de manera 100% personalizada.

Machine-Learning-1

Biblioteca con algunos experimentos de ejemplo disponibles

Entre la colección de ejemplos disponibles podemos encontrar clasificaciones binarias basadas en árboles de decisión, regresiones, clustering, redes neuronales… unos 70 ejemplos en total.

Ahora estaréis pensando, si esta herramienta nos permite analizar nuestros datos y predecir resultados, ¿qué diferencia hay entre usar Data Mining en Analysis Services y utilizar Machine Learning?

Hay dos diferencias fundamentales, la primera es la rapidez con la que podemos “refrescar” los datos en base a los que tomamos las decisiones. Procesar varios millones de filas nos puede llevar unos pocos minutos. A esto hay que añadirle el tiempo necesario en subir los datos actualizados a Azure. La segunda diferencia tiene relación con la horquilla de tiempo que vamos a analizar en busca de conclusiones. Así, mientras que en Analysis Services el objetivo es muchísimo más a largo plazo y, por tanto, no es extraño encontrarnos con tablas de varios millones de registros acumulados en los últimos x años, en Machine Learning esa ventana temporal se va a reducir muy significativamente en la mayoría de escenarios.

Y es que ¿qué sentido tiene analizar la probabilidad de que un determinado vuelo salga con retraso, basándonos en los datos históricos de los últimos 25 años? o ¿hacer sugerencias del tipo carrito de la compra en una página web basándonos en lo que han estado comprando mis clientes desde hace 2 meses? Necesitamos inmediatez (en mayor o menor medida) pero, en cualquier caso, parece poco probable que, si los datos analizados son de una ventana temporal concreta, las conclusiones sean válidas en otra ventana sustancialmente distante de la primera.

Uno de los ejemplos disponibles es el de Flight Delay Prediction, en este experimento se cruzan cerca de 3 millones de datos de vuelos entre dos puntos conteniendo información sobre el retraso en despegue y en aterrizaje de cada uno de ellos con casi 400 mil registros con datos sobre el estado del tiempo cada hora de cada día en cada aeropuerto. Después de hacer algunos cálculos con los datos para normalizarlos, el ejemplo genera 2 subconjuntos, uno para usarlo como Training Set, es decir, para extraer conclusiones de su análisis y otro como Test Set, para validar si las conclusiones sobre el primer conjunto se pueden aplicar a este otro conjunto. Todo el proceso tardó 33 minutos en las pruebas.

Machine-Learning-2

Para analizar la información obtenida en el ejemplo, el ítem Evaluate Model nos proporciona varios detalles sobre la fiabilidad de las conclusiones.

Machine-Learning-3

Vista parcial de los detalles proporcionados por Evaluate Model

Los valores True Positive y True Negative nos indican los aciertos en las predicciones de vuelos acerca de su retraso, mientras que los False Negative y False Positive indican errores en la predicción. El acierto en la predicción (Accuracy) supera el 80%.  Pero sólo el 32% de los retrasos se predicen correctamente (Precision). Por lo que respecta al resto de valores, el parámetro Recall indica en cuantos de los vuelos retrasados la predicción fue correctamente realizada por Machine Learning.

En este ejemplo (basado en datos reales), y dado que los vuelos no se retrasan solamente por condiciones meteorológicas, sino que hay otros factores a tener en cuenta, las conclusiones son poco concluyentes ya que tanto el valor de Precision como el de Recall son bastante bajos.

En el caso de que las conclusiones extraídas fuesen válidas, la herramienta nos ofrece la posibilidad de publicar un servicio web que nos permita consumir los resultados desde una aplicación cliente, así (mientras no cambien las conclusiones, es decir, los datos de origen) el servicio web puede utilizarse para obtener la predicción de una determinada entrada.

Probablemente no nos sea crítico conocer la probabilidad de que un determinado vuelo llegue con retraso pero seguro que hay multitud de escenarios en los que la predicción nos puede ser de tremenda utilidad. En este enlace puedes encontrar unos cuantos conjuntos de datos de muestra para empezar.

¿Experimentas?


Xavier Saladié

Xavier Saladié es Lead Expert en SQL Server y Desarrollo en .NET en Netmind. Es instructor acreditado por Microsoft desde el año 2005 y de ITIL desde el año 2013. Dispone de las certificaciones ITIL Expert, MCSE Cloud Platform and Infrastructure, MCSE Data Platform, MCSE Business Intelligence, MCPD Windows Developer, MCPD Web Developer, MCITP Sharepoint Administrator, MS Microsoft Project 2016 y MCSA SQL Server. Dispone de más de 20 años de experiencia en formación y ha dirigido múltiples proyectos de consultoría y optimización para arquitecturas de soluciones para varias organizaciones.


Entradas relacionadas

Cursos relacionados