Lo nuevo de Microsoft .Net Core 3.0 para principiantes (ML.NET).

Microsoft Lanzó el 23 de septiembre su nueva plataforma de desarrollo llama .Net Core 3.0. Fueron tres días de charlas durante su .Net Conference 2019, y es que la cantidad de posibilidades, usos, tecnologías y formas de aplicarse a todo tipo de negocio son muy grandes.

En este post me enfocaré en una de las tecnologías que me parecieron más útiles y de mayor potencial para transformar la forma de desarrollar aplicaciones de forma rápida e innovadoras.

Machine Learning .Net (ML.NET)

Este framework de desarrollo permite crear modelos de machine learning de forma rápida para procesar datos y clasificarlos para escenarios comunes como: evaluar los sentimientos en un texto, clasificar clientes por positivos o negativos, calificar clientes dentro de un rango (medio, bueno, muy bueno), entre otros.

Personalmente he tratado de entender cómo funcionan los modelos de machine learning durante mucho tiempo pero su teoría es un poco complicada para quienes no recordamos los conceptos matemáticos. También he tratado de aplicar ciertos modelos de forma simple en herramientas como R Studio y Azure Machine Learning; y ninguno me ha resultado tan fácil como cuando probé ML.NET

La gran ventaja de usar el framework de ML.NET es que no necesitas aprender nuevos lenguajes ni nuevos entornos de desarrollo, si te consideras un desarrollador .Net Jr. o Sr. podrás utilizar tus conocimientos en desarrollo de aplicaciones con C# para aprender a desarrollar con machine learning.

¿Qué pasos debes seguir para aprender ML.NET? Lo primero que te recomiendo es que no te desesperes, no trates de bajarte un código ya hecho y querer aprender en 20 minutos. Tomate tu tiempo para hacerlo con calma desde cero; tampoco te tomará más de un par de horas lograrlo.

El primer paso que te recomiendo es ver la charla de ML.NET en el .Net Conference, este video te dará conocimiento sobre ciertos conceptos básicos. El segundo paso es seguir este tutorial paso a paso del sitio oficial del proyecto. En el tutorial deberás bajar el SDK de desarrollo para Visual Studio o el Model Builder, el tutorial te indicará los requisitos según tu sistema operativo. Te recomiendo utilizar una máquina con Visual Studio para Windows para que no te preocupes de aprender comandos en CLI. Si solo tienes una máquina con Mac OS te recomiendo utilizar una VM en Azure, cuesta muy poco y te será muy útil para muchos otros tutoriales. En todo caso también se puede hacer en Mac OS y tiene las mismas funcionalidades que la versión en windows, simplemente tendrás que hacerlo por linea de comandos.

OJO: En el video de la charla en el .Net Conference tienen más opciones para crear modelos de clasificación de imágenes, pero esta parece ser una versión preliminar ya que esto no está disponible todavía en las versiones de Windows y Mac OS.

Una vez hayas completado el tutorial paso a paso habrás desarrollado tu primera aplicación utilizando un modelo de machine learning. La aplicación podrá recibir un texto de entrada y analizará su contenido para saber si el texto tiene un sentimiento negativo o positivo. Ahora te dejo algunos datos adicionales que pude ver explorando el código generado:

La aplicación de consola generada es muy útil para probar los resultados del modelo simplemente modificando la siguiente sección del código y reemplazando el objeto de prueba (sampleForPrediction).

La librería Model no es más que una librería con dos objetos que se crean a partir de la definición del archivo o la base de datos de origen. El objeto ModelInput sirve para crear un objeto con los datos para poder procesarlos en el modelo y obtener su predicción o resultado, en el caso de la aplicación de ejemplo, en este objeto podemos sestear el texto (SentimentText) que luego podremos procesarlo en el modelo para analizar si su contenido es positivo o negativo. Por eso es muy importante que el archivo esté bien nombrado y con datos limpios, en caso contrario el objeto se creará con propiedades basura o nombres poco descriptivos.

La clase ModelBuilder también es muy interesante explorarla. Esta clase es la que construye el modelo que finalmente es exportado a un .zip. Se puede ver que el código es relativamente corto y demuestra que no se necesita grandes conocimientos matemáticos ni de inteligencia artificial para construir un modelo que se adapte a las necesidades de tu negocio. De hecho, el modelo en .zip no es necesario saber qué contiene en su interior.

Si queremos entrenar nuevamente al modelo solo debemos ejecutar la función CreateModel() al inicio de la aplicación de consola (o desde una nueva aplicación):

Si queremos modificar el modelo o el algoritmo de entrenamiento, lo podemos hacer en la siguiente linea de código, donde además se puede explorar otras opciones de entrenamiento. Por ejemplo: Para una segmentación de clientes yo utilitaria un modelo de clasificación múltiple (multiclass-classification) y luego modificaría el código para que utilice una clasificación de tipo Clustering que en teoría funciona mejor para sementar clientes.

La última recomendación, y de la que menos se habla, es recordar la importancia de tener una base de datos de calidad para construir cualquier modelo de machine learning. En todos los tutoriales y documentación que encontremos se da por descontado la parte del origen de datos para el entrenamiento y pruebas. Pero en ambientes reales las bases de datos, por lo general, no cuentan con la calidad adecuada para utilizarla en un entrenamiento y es la tarea principal en la que se debe trabajar antes de implementar un modelo de machine learning en tu negocio. En otro post hablaremos de qué herramientas se puede utilizar para generar bases de datos de calidad y con información relevante del negocio.

Publicado por Diego Zumarraga Mera

Experto en transformación digital, Machine Learning, Desarrollo Web, Arquitecto Azure

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: