enero 16, 2022

Machine Learning en Power Platform: Creando un modelo de clasificación supervisado

Hoy traigo un tema que esta en boca de todos y no es otro que el "machine learning" ni mas ni menos que en Power Platform. En los últimos años, ha cobrado una gran importancia en el mundo de los negocios, ya que el uso inteligente de las analíticas de datos es clave para el éxito empresarial.

Machine Learning en Power Platform: Creando un modelo de clasificación supervisado

Es un tema que me gusta muchísimo y del que seguro publicaré mas contenido a lo largo del año. Pero como hago siempre, vamos a contextualizar un poco. ¿Qué es el machine learning?

Machine Learning

El Machine Learning es una disciplina del campo de la Inteligencia Artificial que, a través de algoritmos, proporciona a los ordenadores la capacidad de identificar patrones en datos masivos y elaborar predicciones. Este aprendizaje permite a los computadores realizar tareas específicas de forma autónoma, es decir, sin necesidad de ser programados.

Los algoritmos de Machine Learning se dividen en tres categorías:

  • Aprendizaje supervisado: estos algoritmos cuentan con un aprendizaje previo basado en un sistema de etiquetas asociadas a unos datos que les permiten tomar decisiones o hacer predicciones.
  • Aprendizaje no supervisado: estos algoritmos no cuentan con un conocimiento previo, es decir, se enfrentan a grandes volúmenes de datos con el objetivo de encontrar patrones que permitan organizarlos y darles sentido.  
  • Aprendizaje por refuerzo: su objetivo es que un algoritmo aprenda a partir de la propia experiencia. Esto es, que sea capaz de tomar la mejor decisión ante diferentes situaciones de acuerdo a un proceso de prueba y error en el que se recompensan las decisiones correctas.

Ahora que entendemos, a nivel muy básico que es el machine learning y que tipos de algoritmos hay, en esta ocasión nos vamos a centrar en como realizar aprendizaje supervisado en la Power Platform.

Aprendizaje supervisado en Power Platform

En el aprendizaje supervisado, los algoritmos trabajan con datos “etiquetados” (labeled data), intentado encontrar una función que, dadas las variables de entrada (input data), les asigne la etiqueta de salida adecuada. El algoritmo se entrena con un “histórico” de datos y así “aprende” a asignar la etiqueta de salida adecuada a un nuevo valor, es decir, predice el valor de salida. (Simeone, 2018)

Para crear nuestro algoritmo de machine learning, vamos a crear un clasificador de razas de perro. Este algoritmo, a partir de una imagen de un perro, debe ser capaz de determinar a que raza pertenece.

Lo primero que haremos será dirigirnos a make.powerapps.com y nos ubicaremos sobre la sección de AI Builder (nuestros componentes de inteligencia artificial dentro de la Power Platform).

Una vez que seleccionemos "Image Classification" nos aparecerá la siguiente ventana:

Pulsaremos sobre el botón descargar Lobe e instalaremos la aplicación en nuestro equipo. Mientras se realiza la descarga, necesitaremos un dataset de imágenes de perros, previamente clasificados y listos para ser procesados. Hay millones de repositorios con imágenes para realizar entrenamientos de machine learning. Para este caso yo he utilizado un banco de datos de la universidad de Stanford, la información del repositorio es la siguiente:

  • 120 razas de perro
  • ~150 imágenes por clase
  • Total imágenes: 20,580
Stanford Dogs dataset for Fine-Grained Visual Categorization

Una vez nos descarguemos las imágenes, tendremos tantas carpetas como razas de perro. Esto nos viene perfecto, ya que Lobe es capaz de coger las etiquetas a partir del nombre de las carpetas. Descargarse de esta manera la información ahorra muchísimo trabajo manual.

Una vez tengamos descargado Lobe, lo único que tendremos que hacer es importar el DataSet dentro de la herramienta. Pulsamos "New Project" y luego Importar:

Seleccionamos la opción Import Dataset. Después , buscamos el directorio donde tengamos todas las carpetas con las 120 razas de perro. Dado que hemos preparado los datos correctamente, y como comentaba unas líneas mas arriba, Lobe es capaz de coger el nombre de la carpeta y utilizarlo como etiquetado del contenido de dicha carpeta, ahorrándonos muchísimo trabajo de tener que especificar imagen a imagen que raza de perro es. Por lo tanto, seleccionamos la primera opción:

Es un dataset bastante grande, por lo que la importación puede tardar un poco en realizarse. Una vez se hayan importado todas las imágenes, Lobe procederá a entrenar el modelo. Esta es un tarea lenta, por lo que cuanto mas rato dejemos entrenando al modelo, mejores serán los resultados. En mi caso he dejado entrenando 24 horas al modelo y he conseguido unos resultados del 75% de acierto.

Todavía nos queda el paso final ¿ Cómo podemos utilizar este modelo personalizado en la Power Platform?

Solo tendremos que pulsar sobre "Use" y exportarlo a Power Platform. Nos preguntará si queremos optimizar el modelo. Si ya tenemos un nivel de acierto considerable no lo recomiendo, ya que en 12 horas solo ha mejorado el modelo un 3% , por lo que seleccionaría la opción de exportarlo directamente sobre nuestro entorno:

Una vez que tenemos nuestro modelo en AI Builder ya estará listo para ser utilizado en PowerApps o en PowerAutomate.

Próximamente exprimiremos este modelo para crear aplicaciones y flujos que puedan explotar este algoritmo de clasificación de AI Builder.

¡Estar atentos!