¿Qué es el Generador de modelos y cómo funciona?

El Generador de modelos de ML.NET es una extensión gráfica intuitiva de Visual Studio para compilar, entrenar e implementar modelos de Machine Learning personalizados. Usa el aprendizaje automático automatizado (AutoML) para explorar diferentes algoritmos y configuraciones de aprendizaje automático para ayudarle a encontrar el que mejor se adapte a su escenario.

Para usar el Generador de modelos no se necesita experiencia previa con el aprendizaje automático. Lo único que se necesita son algunos datos y un problema para resolver. El Generador de modelos genera el código para agregar el modelo a la aplicación de .NET.

Pantalla de escenarios de Model Builder

Creación de un proyecto de Model Builder

Al iniciar Model Builder por primera vez, le pide que asigne un nombre al proyecto y, a continuación, crea un archivo de configuración mbconfig dentro del proyecto. El archivo mbconfig realiza el seguimiento de todo lo que hace en Model Builder para permitirle volver a abrir la sesión.

Después del entrenamiento, se generan tres archivos en el archivo *.mbconfig:

  • Model.consumption.cs: este archivo contiene los esquemas ModelInput y ModelOutput, así como la función Predict generada para consumir el modelo.
  • Model.training.cs: este archivo contiene la canalización de entrenamiento (transformaciones de datos, algoritmos, hiperparámetros de algoritmo) elegida por Model Builder para entrenar el modelo. Puede usar esta canalización para volver a entrenar el modelo.
  • Model.zip: se trata de un archivo ZIP serializado que representa el modelo de ML.NET entrenado.

Al crear el archivo mbconfig, se le pedirá un nombre. Este nombre se aplica a los archivos de consumo, entrenamiento y modelo. En este caso, el nombre que se usa es Model.

Escenario

Se pueden incorporar muchos escenarios diferentes al Generador de modelos a fin de generar un modelo de Machine Learning para la aplicación.

Un escenario es una descripción del tipo de predicción que se quiere realizar usando los datos. Por ejemplo:

  • Predecir el volumen futuro de ventas de productos en función de los datos históricos de ventas.
  • Clasifique las opiniones como positivas o negativas en función de las opiniones de los clientes.
  • Detecte si una transacción bancaria es fraudulenta.
  • Dirija los problemas de comentarios de los clientes al equipo correcto de su empresa.

Cada escenario se asigna a una tarea de aprendizaje automático diferente, que incluye:

Tarea Escenario
Clasificación binaria Clasificación de los datos
Clasificación multiclase Clasificación de los datos
Clasificación de imágenes Clasificación de imágenes
Clasificación de textos Clasificación de textos
Regresión Predicción de valores
Recomendación Recomendación
Previsión Previsión

Por ejemplo, el escenario de clasificación de opiniones como positivas o negativas se correspondería a la tarea de clasificación binaria.

Para obtener más información sobre las distintas tareas de ML admitidas por ML.NET, vea Tareas de aprendizaje automático en ML.NET.

¿Qué escenario de aprendizaje automático es el más adecuado en cada caso?

En el Generador de modelos, debe seleccionar un escenario. El tipo de escenario depende del tipo de predicción que intenta realizar.

Tabular

Clasificación de datos

La clasificación se utiliza para clasificar los datos en categorías.

Entrada de ejemplo

Salida de ejemplo

Longitud del sépalo Ancho del sépalo Longitud del pétalo Ancho del pétalo Especie
5,1 3,5 1.4 0,2 setosa
Especie prevista
setosa
Predicción de valores

La predicción de valores, que se corresponde a la tarea de regresión, se usa para predecir números.

Diagrama en el que se muestran ejemplos de regresión, como la predicción de precios, la previsión de ventas y el mantenimiento predictivo

Entrada de ejemplo

Salida de ejemplo

vendor_id rate_code passenger_count trip_time_in_secs trip_distance payment_type fare_amount
CMT 1 1 1271 3.8 CRD 17.5
Tarifa prevista
4.5.

Recomendación

El escenario de recomendaciones predice una lista de elementos sugeridos para un usuario determinado, en función de la similitud y la diferencia entre los usuarios de otros usuarios.

Puede usar el escenario de recomendación cuando tenga un conjunto de usuarios y un conjunto de "productos", como artículos para comprar, películas, libros o programas de TV, junto con un conjunto de "clasificaciones" de los usuarios de esos productos.

Entrada de ejemplo

Salida de ejemplo

UserId ProductId Rating
1 2 4,2
Clasificación prevista
4.5.
Previsión

El escenario de previsión usa datos históricos con un componente de serie temporal o estacional.

Puede usar el escenario de previsión para predecir la demanda o la venta de un producto.

Entrada de ejemplo

Salida de ejemplo

Fecha Cant. de venta
1/1/1970 1000
Previsión de 3 días
[1000,1001,1002]

Visión informática

Clasificación de la imagen

La clasificación de imágenes se usa para identificar imágenes de distintas categorías. Por ejemplo, diferentes tipos de terreno, animales o defectos de fabricación.

Puede usar el escenario de clasificación de la imagen si tiene un conjunto de imágenes y desea clasificar las imágenes en distintas categorías.

Entrada de ejemplo

Salida de ejemplo

Perfil de un carlino de pie

Etiqueta prevista
Perro
Detección de objetos

La detección de objetos se usa para ubicar y categorizar entidades dentro de las imágenes. Por ejemplo, para buscar e identificar automóviles y personas en una imagen.

Puede usar la detección de objetos cuando las imágenes contengan varios objetos de tipos diferentes.

Entrada de ejemplo

Salida de ejemplo

Perfil de un carlino de pie

Perfil de un carlino de pie con un rectángulo de selección y una etiqueta de perro

Procesamiento de lenguaje natural

Clasificación de textos

La clasificación de texto clasifica la entrada de texto sin formato.

El escenario de clasificación de texto se puede usar si tiene un conjunto de documentos o comentarios y quiere clasificarlos en distintas categorías.

Entrada de ejemplo

Salida de ejemplo

Revisar
¡Cómo me gusta este filete!
Opinión
Positivo

Entorno

Puede entrenar el modelo de Machine Learning localmente en el equipo o en la nube en Azure, en función del escenario.

Al entrenar localmente, se trabaja dentro de las restricciones de los recursos del equipo (CPU, memoria y disco). Al entrenar en la nube, puede escalar verticalmente los recursos para satisfacer las demandas de su escenario, especialmente para grandes conjuntos de valores.

Escenario CPU local GPU local Azure
Clasificación de datos ✔️
Predicción de valores ✔️
Recomendación ✔️
Previsión ✔️
Clasificación de imágenes ✔️ ✔️ ✔️
Detección de objetos ✔️
Clasificación de textos ✔️ ✔️

Data

Una vez que ha elegido el escenario, Model Builder pide que se proporcione un conjunto de datos. Los datos se usan para entrenar, evaluar y elegir el mejor modelo para el escenario.

Diagrama en el que se muestran los pasos del generador de modelos

Model Builder admite conjuntos de datos en formatos de base de datos .tsv, .csv, .txt y SQL Database. Si tiene un archivo .txt, las columnas se deben separar con ,, ; o \t.

Si el conjunto de archivos se compone de imágenes, los tipos de archivo admitidos son .jpg y .png.

Para obtener más información, vea Carga de datos de entrenamiento en el Generador de modelos.

Selección del resultado que se va a predecir (etiqueta)

Un conjunto de datos es una tabla de filas de ejemplos de entrenamiento y columnas de atributos. Cada fila tiene:

  • una etiqueta (el atributo que se quiere predecir)
  • características (atributos que se usan como entradas para predecir la etiqueta)

En el escenario de predicción del precio de las viviendas, las características podrían ser:

  • Los metros cuadrados de la vivienda.
  • El número de dormitorios y baños.
  • El código postal.

La etiqueta es el precio histórico de la vivienda para esa fila de valores de metros cuadrados, baños y dormitorios y el código postal.

Tabla donde se muestran las filas y columnas de datos de precios de viviendas con características que constan de etiquetas de tamaño, habitaciones, código postal y precio

Conjuntos de datos de ejemplo

Si aún no tiene datos propios, pruebe uno de estos conjuntos de datos:

Escenario Ejemplo Datos Etiqueta Características
Clasificación Predicción de anomalías de ventas datos de ventas de productos Ventas de productos Mes
Predicción de sentimiento de comentarios de sitios web datos de comentarios de sitio web Etiqueta (0 si la opinión es negativa, 1 si es positiva) Comentario, año
Predicción de transacciones de tarjetas de crédito fraudulentas datos de tarjetas de crédito Clase (1 si es fraudulenta, en caso contrario, 0) Cantidad, V1-V28 (características anónimas)
Predecir el tipo de problema en un repositorio de GitHub datos de problemas de GitHub Área Título, descripción
Predicción de valores Predicción del precio de los taxis datos de carreras de taxi Carrera Tiempo de viaje, distancia
Clasificación de la imagen Predicción de la categoría de una flor imágenes de flores El tipo de flor: margarita, diente de león, rosas, girasoles o tulipanes Los propios datos de la imagen
Recomendación Predicción de películas que le gusten a alguien clasificaciones de películas Usuarios, películas Clasificaciones

Entrenamiento

Una vez que se seleccionan el escenario, el entorno, los datos y la etiqueta, el Generador de modelos entrena el modelo.

¿Qué es el entrenamiento?

El entrenamiento es un proceso automático mediante el cual el Generador de modelos enseña al modelo a responder a preguntas del escenario. Una vez entrenado, el modelo puede realizar predicciones con datos de entrada que no ha visto antes. Por ejemplo, si está prediciendo los precios de la vivienda y se pone en el mercado un nuevo inmueble, puede predecir su precio de venta.

Dado que el Generador de modelos usa aprendizaje automático automatizado (AutoML), no requiere ninguna entrada ni ajuste por parte del usuario durante el entrenamiento.

¿Durante cuánto tiempo debe entrenarse?

El generador de modelos usa AutoML para explorar varios modelos y encontrar el mejor modelo de rendimiento.

Los períodos de entrenamiento más largos permiten a AutoML explorar más modelos con una mayor variedad de opciones de configuración.

En la tabla siguiente se resume el tiempo promedio necesario para obtener un buen rendimiento en un conjunto de conjuntos de valores de ejemplo, en un equipo local.

Tamaño del conjunto de datos Promedio de tiempo para entrenar
0-10 MB 10 s
10-100 MB 10 min
100-500 MB 30 min
500-1 GB 60 min
1 GB o más 3 horas o más

Estos números son solo una guía. La duración exacta del entrenamiento depende de varios factores:

  • El número de características (columnas) que se usan como entrada para el modelo.
  • El tipo de columnas.
  • La tarea de ML.
  • El rendimiento de la CPU, el disco y la memoria de la máquina usada para el entrenamiento.

Por lo general, se aconseja usar más de 100 filas, ya que es posible que los conjuntos de datos con una cantidad menor no generen ningún resultado.

Evaluate

La evaluación es el proceso por el que se mide el grado de calidad del modelo. El Generador de modelo usa el modelo entrenado para realizar predicciones con nuevos datos de prueba y luego mide la calidad de las predicciones.

El Generador de modelos divide los datos de entrenamiento en un conjunto de entrenamiento y un conjunto de prueba. Los datos de entrenamiento (80 %) se usan para entrenar el modelo y los datos de prueba (20 %) se incluyen para evaluar el modelo.

¿Cómo puedo interpretar el rendimiento de mi modelo?

Un escenario se asigna a una tarea de aprendizaje automático. Cada tarea de ML tiene su propio conjunto de métricas de evaluación.

Predicción de valores

La métrica predeterminada para los problemas de predicción de valores es RSquared, y el valor de RSquared oscila entre 0 y 1. 1 es el mejor valor posible o, en otras palabras, cuanto más se acerque el valor de RSquared a 1, mejor será el rendimiento del modelo.

Otras métricas notificadas, como pérdida absoluta, pérdida al cuadrado y pérdida RMS son métricas adicionales, que pueden usarse para comprender el rendimiento del modelo y compararlo con otros modelos de predicción de valores.

Clasificación (2 categorías)

La métrica predeterminada para los problemas de clasificación es la precisión. La precisión define la proporción de predicciones correctas que realiza el modelo en el conjunto de datos de prueba. Cuanto más cerca esté del 100 % o 1.0, mejor será el modelo.

Otras métricas notificadas, como AUC (área bajo la curva), que mide la tasa de positivos verdaderos frente a la tasa de falsos positivos, deben ser superiores a 0,50 para que los modelos sean aceptables.

Se pueden usar métricas adicionales como la puntuación F1 para controlar el equilibrio entre la precisión y la coincidencia.

Clasificación (3 categorías)

La métrica predeterminada para la clasificación multiclase es la microprecisión. Cuanto más se acerque la microprecisión al 100 % o 1,0, mejor será el modelo.

Otra métrica importante para la clasificación multiclase es la macroprecisión, que, de forma similar a la de la microprecisión, cuanto más se acerque a 1,0 mejor será el modelo. Una buena manera de imaginarse estos dos tipos de precisión es el siguiente:

  • Microprecisión: ¿con qué frecuencia se clasifica una incidencia entrante en el equipo adecuado?
  • Macroprecisión: para un equipo promedio, ¿con qué frecuencia es correcta una incidencia entrante para su equipo?

Más información sobre las métricas de evaluación

Para obtener más información, vea Métricas de evaluación de modelos.

Mejora

Si la puntuación de rendimiento del modelo no es tan buena como se quiere que sea, se puede:

  • Entrenar durante más tiempo. Con más tiempo, el motor de aprendizaje automático automatizado experimenta con más algoritmos y configuraciones.

  • Agregar más datos. A veces la cantidad de datos no es suficiente para entrenar un modelo de Machine Learning de alta calidad. Esto es especialmente cierto en el caso de conjuntos de datos que tienen un número de ejemplos menor.

  • Equilibrar los datos. En las tareas de clasificación, asegúrese de que el conjunto de entrenamiento esté equilibrado entre las categorías. Por ejemplo, si tiene cuatro clases de 100 ejemplos de entrenamiento y las dos primeras (etiqueta1 y etiqueta2) se usan para 90 registros, pero las otras dos (etiqueta3 y etiqueta4) solo se usan en los 10 registros restantes, la falta de datos equilibrados puede hacer que el modelo se esfuerce por predecir correctamente etiqueta3 o etiqueta4.

Consumo

Después de la fase de evaluación, el Generador de modelos genera un archivo de modelo y el código que se puede usar para agregar el modelo a la aplicación. Los modelos de ML.NET se guardan como un archivo zip. El código para cargar y usar el modelo se agrega como un nuevo proyecto a la solución. El Generador de modelos también agrega una aplicación de consola de ejemplo que se puede ejecutar para ver el modelo en acción.

Además, Model Builder ofrece la opción de crear proyectos que consumen el modelo. Actualmente, Model Builder creará los proyectos siguientes:

  • Aplicación de consola: crea una aplicación de consola de .NET para realizar predicciones a partir del modelo.
  • API web: crea una API web de ASP.NET Core que permite consumir el modelo por Internet.

A continuación

Instalar la extensión de Visual Studio de Model Builder.

Pruebe la predicción de precios o cualquier escenario de regresión.