Tutorial: Predicción de precios mediante regresión con Model Builder

Obtenga información sobre cómo usar el Generador de modelos de ML.NET con el fin de compilar un modelo de regresión para predecir precios. La aplicación de consola de .NET que desarrolla en este tutorial predice las tarifas de taxi en función de los datos históricos de tarifas de taxi de Nueva York.

La plantilla de predicción de precios del Generador de modelos puede usarse para cualquier escenario que requiera la predicción de un valor numérico. Algunos escenarios de ejemplo son: predicción del precio de la vivienda, predicción de la demanda y previsión de ventas.

En este tutorial aprenderá a:

  • Preparar y entender los datos
  • Creación de un archivo de configuración de Model Builder
  • Elección de un escenario
  • Carga de los datos
  • Entrenar el modelo
  • Evaluar el modelo
  • Usar el modelo para las predicciones

Requisitos previos

Para obtener una lista de los requisitos previos e instrucciones de instalación, visite la Guía de instalación del Generador de modelos.

Creación de una aplicación de consola

  1. Cree una aplicación de consola .NET Core de C# denominada "TaxiFarePrediction". Asegúrese de que Colocar la solución y el proyecto en el mismo directorio esté desactivada (VS 2019).

Preparar y entender los datos

  1. Cree un directorio denominado Datos en el proyecto para almacenarlos archivos del conjunto de datos.

  2. El conjunto de datos que se usa para entrenar y evaluar el modelo de Machine Learning procede originalmente del conjunto de datos NYC TLC Taxi Trip.

    1. Para descargar el conjunto de datos, vaya al vínculo de descarga de taxi-fare-train.csv.

    2. Cuando se cargue la página, haga clic con el botón derecho en cualquier parte de la página y seleccione Guardar como.

    3. Use el cuadro de diálogo Guardar como para guardar el archivo en la carpeta Data que creó en el paso anterior.

  3. En el Explorador de soluciones, haga clic con el botón derecho en el archivo taxi-fare-train.csv y seleccione Propiedades. En Avanzadas, cambie el valor de Copiar en el directorio de salida por Copiar si es posterior.

Cada fila del conjunto de datos taxi-fare-train.csv contiene los detalles de los viajes realizados por un taxi.

  1. Abra el conjunto de datos train.csv de taxi y tarifas.

    El conjunto de datos proporcionado contiene las columnas siguientes:

    • vendor_id: el identificador del taxista es una característica.
    • rate_code: el tipo de tarifa del viaje en taxi es una característica.
    • passenger_count: el número de pasajeros en el recorrido es una característica.
    • trip_time_in_secs: la cantidad de tiempo que tardó el viaje. Por ejemplo, si quiere calcular la tarifa del viaje antes de que termine y aún no conoce la duración del viaje, el tiempo del viaje no es una característica, por lo que deberá excluir esta columna del modelo.
    • trip_distance: la distancia del viaje es una característica.
    • payment_type: el método de pago (efectivo o tarjeta de crédito) es una característica.
    • fare_amount: la tarifa de taxi total pagada es la etiqueta.

label es la columna que quiere predecir. Al realizar una tarea de regresión, el objetivo es predecir un valor numérico. En este escenario de predicción de precio, se predice el coste de un viaje de taxi. Por lo tanto, fare_amount es la etiqueta. Los valores de features identificados son las entradas que se proporcionan al modelo para predecir label. En este cas, el resto de las columnas, con la excepción de trip_time_in_secs, se usan como características o entradas para predecir el importe de la tarifa.

Creación del archivo de configuración de Model Builder

La primera vez que agregue Model Builder a la solución, se le pedirá que cree un archivo mbconfig. El archivo mbconfig realiza el seguimiento de todo lo que hace en Model Builder para permitirle volver a abrir la sesión.

  1. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto TaxiFarePrediction y seleccione Agregar>Modelo de Machine Learning...
  2. Asigne el nombre mbconfigTaxiFarePredictional proyecto y haga clic en el botón Agregar.

Elección de un escenario

Pantalla de escenarios de Model Builder

Para entrenar el modelo, deberá seleccionarlo en la lista de escenarios de aprendizaje automático disponibles proporcionada por el Generador de modelos. En este caso, el escenario es Value prediction.

  1. En el paso del escenario de la herramienta Model Builder, seleccione el escenario Predicción de valores.

Selección del entorno

Model Builder ejecutar el entrenamiento en distintos entornos, en función del escenario seleccionado.

  1. Confirme que el elemento Local (CPU) esté seleccionado y haga clic en el botón Paso siguiente.

Carga de los datos

El Generador de modelos acepta datos de dos orígenes, una base de datos de SQL Server o un archivo local en formato .csv o .tsv.

  1. En el paso de datos de la herramienta Model Builder, elija Archivo en la selección del tipo de origen de datos.
  2. Seleccione el botón Examinar junto al cuadro de texto y use el Explorador de archivos para examinar y seleccionar taxi-fare-test.csv en el directorio Datos.
  3. Elija fare_amount en el menú desplegable Column to Predict (Label) (Columna para la predicción [etiqueta]).
  4. Haga clic en el vínculo Opciones avanzadas de datos.
  5. En la pestaña Configuración de columnas, seleccione la lista desplegable Propósito para la columna trip_time_in_secs, y seleccione Omitir para excluirla como característica durante el entrenamiento. Haga clic en el botón Guardar para cerrar el cuadro de diálogo.
  6. Haga clic en el botón Paso siguiente.

Entrenamiento del modelo

La tarea de aprendizaje automático que se usa para entrenar el modelo de predicción de precio en este tutorial es la regresión. Durante el proceso de entrenamiento de modelos, el Generador de modelos entrena modelos independientes usando diferentes opciones y algoritmos de regresión para encontrar el modelo con mejor rendimiento para el conjunto de datos.

El tiempo necesario para el entrenamiento del modelo es proporcional a la cantidad de datos. El generador de modelos selecciona automáticamente un valor predeterminado para Tiempo de entrenamiento (segundos) en función del tamaño del origen de datos.

  1. Deje el valor predeterminado como está para Tiempo de entrenamiento (segundos), a menos que prefiera entrenar durante más tiempo.
  2. Seleccione Iniciar entrenamiento.

Durante el proceso de entrenamiento, los datos de progreso se muestran en la sección Training results del paso de entrenamiento.

  • En Estado se muestra el grado de finalización del proceso de entrenamiento.
  • En Mejor precisión se muestra la precisión del modelo con mejor rendimiento que ha encontrado el Generador de modelos hasta el momento. Una mayor precisión significa que el modelo realiza una predicción más correcta de los datos de prueba.
  • En Mejor algoritmo se muestra el nombre del algoritmo con mejor rendimiento que ha encontrado el Generador de modelos hasta el momento.
  • En Último algoritmo se muestra el nombre del algoritmo que ha usado más recientemente el Generador de modelos para entrenar el modelo.

Una vez completado el entrenamiento, el archivo mbconfig tendrá el modelo generado denominado TaxiFarePrediction.zip después del entrenamiento y dos archivos de C# con él:

  • TaxiFare.consumption.cs: Este archivo tiene un método público que cargará el modelo y creará un motor de predicción con él y devolverá la predicción.
  • TaxiFare.training.cs: Este archivo consta de la canalización de entrenamiento que Model Builder generó para crear el mejor modelo, incluidos los hiperparámetros que usó.

Haga clic en el botón Paso siguiente para ir al paso de evaluación.

Evaluación del modelo

El resultado del paso de entrenamiento será un modelo que tenga el mejor rendimiento. En el paso de evaluación de la herramienta Model Builder, la sección Mejor modelo contendrá el algoritmo usado por el modelo con el mejor rendimiento en la entrada Modelo, junto con las métricas para ese modelo en RSquared.

Además, en la ventana Salida de Visual Studio, habrá una tabla de resumen que contiene los modelos principales y sus métricas.

Esta sección también le permitirá probar el modelo mediante una única predicción. Ofrecerá cuadros de texto para rellenar los valores, y puede hacer clic en el botón Predecir para obtener una predicción del mejor modelo. De manera predeterminada, se rellenará con una fila aleatoria del conjunto de datos.

Si no está satisfecho con las métricas de precisión, una forma sencilla de intentar mejorar la precisión del modelo es aumentar la cantidad de tiempo para entrenar el modelo o usar más datos. De lo contrario, haga clic en Paso siguiente para ir al paso de consumo.

(Opcional) Consumo del modelo

Este paso tendrá plantillas de proyecto que puede usar para consumir el modelo. Es opcional y puede elegir el método que mejor se adapte a sus necesidades sobre cómo atender el modelo.

  • Aplicación de consola
  • API Web

Aplicación de consola

Al agregar una aplicación de consola a la solución, se le pedirá que asigne un nombre al proyecto.

  1. Asigne al proyecto de consola el nombre TaxiFare_Console.

  2. Haga clic en Agregar a la solución para agregar el proyecto a la solución actual.

  3. Ejecute la aplicación.

    La salida generada por el programa debe ser similar al siguiente fragmento de código:

    Predicted Fare: 15.020833
    

API Web

Al agregar una API web a la solución, se le pedirá que asigne un nombre al proyecto.

  1. Asigne al proyecto de API web el nombre TaxiFare_API.

  2. Haga clic en Agregar a la solución* para agregar el proyecto a la solución actual.

  3. Ejecute la aplicación.

  4. Abra PowerShell y escriba el código siguiente, donde PORT es el puerto donde escuchar la aplicación.

    $body = @{
        Vendor_id="CMT"
        Rate_code=1.0
        Passenger_count=1.0
        Trip_distance=3.8
        Payment_type="CRD"
    }
    
    Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"
    
  5. Si se realiza correctamente, la salida debería ser similar al texto siguiente:

    score
    -----
    15.020833
    

Pasos siguientes

En este tutorial ha aprendido a:

  • Preparar y entender los datos
  • Elección de un escenario
  • Carga de los datos
  • Entrenar el modelo
  • Evaluar el modelo
  • Usar el modelo para las predicciones

Recursos adicionales

Para más información sobre los temas mencionados en este tutorial, visite estos recursos: