Esercitazione: Stimare i prezzi usando la regressione con Model Builder

Informazioni su come usare il generatore di modelli ML.NET per compilare un modello di regressione per stimare i prezzi. L'app console .NET che viene sviluppata in questa esercitazione consente di stimare le tariffe dei taxi di New York in base ai relativi dati storici.

Il modello di stima dei prezzi del generatore di modelli può essere usato in qualsiasi scenario che richieda un valore numerico di stima. Tra gli scenari di esempio vi sono la stima dei prezzi delle abitazioni, la stima della domanda e le previsioni di vendita.

In questa esercitazione verranno illustrate le procedure per:

  • Preparare e identificare i dati
  • Creare un file di configurazione di Generatore modelli
  • Scegliere uno scenario
  • Caricare i dati
  • Eseguire il training del modello
  • Valutare il modello
  • Usare il modello per le stime

Prerequisiti

Per un elenco di prerequisiti e istruzioni di installazione, vedere la Guida all'installazione del generatore di modelli.

Creare un'applicazione console

  1. Creare un'applicazione console C# .NET Core denominata "TaxiFarePrediction". Assicurarsi che la soluzione e il progetto place nella stessa directory siano deselezionati (VS 2019).

Preparare e identificare i dati

  1. Creare una directory denominata Dati nel progetto per archiviare i file del set di dati.

  2. Il set di dati usato per il training e la valutazione del modello di Machine Learning è ricavato in origine dal set di dati NYC TLC Taxi Trip.

    1. Per scaricare il set di dati, passare al collegamento per il download di taxi-fare-train.csv.

    2. Quando si carica la pagina, fare clic con il pulsante destro del mouse in un punto qualsiasi della pagina e scegliere Salva con nome.

    3. Usare la finestra di dialogo Salva con nome per salvare il file nella cartella Dati creata nel passaggio precedente.

  3. In Esplora soluzioni fare clic con il pulsante destro del mouse sul file taxi-fare-train.csv e selezionare Proprietà. In Avanzate modificare il valore di Copia in Directory di output in Copia se più recente.

Ogni riga del set di dati taxi-fare-train.csv contiene i dettagli delle corse effettuate da un taxi.

  1. Aprire il set di dati taxi-fare-train.csv

    Il set di dati fornito contiene le colonne seguenti:

    • vendor_id: l'ID della società di taxi è una funzionalità.
    • rate_code: il tipo di tariffa del viaggio in taxi è una funzionalità.
    • passenger_count: il numero di passeggeri è una funzionalità.
    • trip_time_in_secs: il tempo impiegato per il viaggio. Si vuole stimare la tariffa del viaggio prima del termine. Al momento non si conosce la durata del viaggio. Il tempo non è pertanto una funzionalità e si escluderà questa colonna dal modello.
    • trip_distance: la distanza del viaggio è una funzionalità.
    • payment_type: il metodo di pagamento (contanti o carta di credito) è una funzionalità.
    • fare_amount: la tariffa totale per il viaggio in taxi è l'etichetta.

label è la colonna sulla quale eseguire le stime. Quando si esegue un'attività di regressione, l'obiettivo è stimare un valore numerico. In questo scenario di stima dei prezzi viene stimato il costo di una corsa in taxi. Pertanto, l'etichetta è fare_amount. Gli elementi identificati features sono gli input che vengono dati al modello per stimare l'oggetto label. In questo caso, le altre colonne con l'eccezione di trip_time_in_secs vengono usate come funzionalità o input per stimare l'importo della tariffa.

Creare il file di configurazione di Model Builder

Quando si aggiunge prima Model Builder alla soluzione, verrà richiesto di creare un mbconfig file. Il mbconfig file tiene traccia di tutto ciò che si esegue in Generatore modelli per consentire di riaprire la sessione.

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto TaxiFarePrediction e scegliere Aggiungi>modello di Machine Learning....
  2. Assegnare un nome al mbconfig progetto TaxiFarePrediction e fare clic sul pulsante Aggiungi .

Scegliere uno scenario

Schermata dello scenario di Generatore modelli

Per eseguire il training del modello, è necessario scegliere uno scenario di Machine Learning disponibile nell'elenco del generatore di modelli. In questo caso lo scenario è Value prediction.

  1. Nel passaggio dello scenario dello strumento Generatore modelli selezionare Scenario di stima valore .

Selezionare l'ambiente

Generatore modelli può eseguire il training in ambienti diversi a seconda dello scenario selezionato.

  1. Verificare che l'elemento Local (CPU) sia selezionato e fare clic sul pulsante Passaggio successivo .

Caricare i dati

Il generatore di modelli accetta i dati da due origini, un database di SQL Server o un file locale in formato csv o tsv.

  1. Nel passaggio dati dello strumento Generatore modelli selezionare File dalla selezione del tipo di origine dati.
  2. Selezionare il pulsante Sfoglia accanto alla casella di testo e usare Esplora file per esplorare e selezionare la taxi-fare-test.csv nella directory Dati
  3. Scegliere fare_amount nell'elenco a discesa Colonna per stimare (Etichetta).
  4. Fare clic sul collegamento Opzioni dati avanzate .
  5. Nella scheda Impostazioni colonna selezionare l'elenco a discesa Scopo per la colonna trip_time_in_secs e selezionare Ignora per escluderlo come funzionalità durante il training. Fare clic sul pulsante Salva per chiudere la finestra di dialogo.
  6. Fare clic sul pulsante Passaggio successivo .

Eseguire il training del modello

L'attività di Machine Learning usata per eseguire il training del modello di stima dei prezzi in questa esercitazione è la regressione. Durante il processo di training del modello, il generatore di modelli esegue il training di modelli separati usando impostazioni e algoritmi di regressione diversi per individuare il modello di prestazioni migliore per il set di dati.

Il tempo necessario per l'esecuzione del training di ogni modello è proporzionato alla quantità di dati. Generatore modelli seleziona automaticamente un valore predefinito per Time to training (secondi) in base alle dimensioni dell'origine dati.

  1. Lasciare il valore predefinito come è per Time to training (secondi) a meno che non si preferisca eseguire il training per un periodo di tempo più lungo.
  2. Selezionare Start Training (Avvia training).

Durante il processo di training i dati dell'avanzamento vengono visualizzati nella sezione Training results del passaggio relativo al training.

  • Stato visualizza lo stato di completamento del processo di training.
  • La migliore accuratezza visualizza l'accuratezza del modello con prestazioni migliori trovate finora da Model Builder. Precisione maggiore indica il modello stimato più correttamente con i dati di test.
  • L'algoritmo migliore visualizza il nome dell'algoritmo con prestazioni migliori eseguite finora da Model Builder.
  • L'ultimo algoritmo visualizza il nome dell'algoritmo usato più di recente da Model Builder per eseguire il training del modello.

Al termine del training, il mbconfig file avrà il modello generato chiamato TaxiFarePrediction.zip dopo il training e due file C# con esso:

  • TaxiFare.consumption.cs: questo file include un metodo pubblico che caricherà il modello e creerà un motore di stima con esso e restituirà la stima.
  • TaxiFare.training.cs: questo file è costituito dalla pipeline di training fornita da Model Builder per compilare il modello migliore, inclusi gli iperparametri usati.

Fare clic sul pulsante Passaggio successivo per passare al passaggio di valutazione.

Valutare il modello

Il risultato del passaggio relativo al training è rappresentato dal modello con le prestazioni migliori. Nel passaggio di valutazione dello strumento Generatore modelli, nella sezione Modello migliore, conterrà l'algoritmo usato dal modello con prestazioni ottimali nella voce Modello insieme alle metriche per tale modello in RSquared.

Inoltre, nella finestra Output di Visual Studio sarà presente una tabella di riepilogo contenente i modelli principali e le relative metriche.

Questa sezione consente inoltre di testare il modello eseguendo una singola stima. Offrirà caselle di testo per compilare i valori e fare clic sul pulsante Stima per ottenere una stima dal modello migliore. Per impostazione predefinita, questa operazione verrà compilata da una riga casuale nel set di dati.

Se non si è soddisfatti della precisione delle metriche,un modo semplice per migliorarla consiste nell'aumentare la durata del training del modello o nell'usare più dati. In caso contrario, fare clic su Avanti per passare al passaggio di utilizzo.

(Facoltativo) Usare il modello

Questo passaggio avrà modelli di progetto che è possibile usare per utilizzare il modello. Questo passaggio è facoltativo e è possibile scegliere il metodo più adatto alle proprie esigenze su come servire il modello.

  • App console
  • API Web

App console

Quando si aggiunge un'app console alla soluzione, verrà richiesto di denominare il progetto.

  1. Denominare il progetto console TaxiFare_Console.

  2. Fare clic su Aggiungi alla soluzione per aggiungere il progetto alla soluzione corrente.

  3. Eseguire l'applicazione.

    L'output generato dal programma dovrebbe essere simile al frammento di codice seguente:

    Predicted Fare: 15.020833
    

API Web

Quando si aggiunge un'API Web alla soluzione, verrà richiesto di denominare il progetto.

  1. Assegnare al progetto API Web il nome TaxiFare_API.

  2. Fare clic su Aggiungi alla soluzione* per aggiungere il progetto alla soluzione corrente.

  3. Eseguire l'applicazione.

  4. Aprire PowerShell e immettere il codice seguente in cui PORT è la porta su cui è in ascolto l'applicazione.

    $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. In caso di esito positivo, l'output sarà simile al testo seguente:

    score
    -----
    15.020833
    

Passaggi successivi

In questa esercitazione sono state illustrate le procedure per:

  • Preparare e identificare i dati
  • Scegliere uno scenario
  • Caricare i dati
  • Eseguire il training del modello
  • Valutare il modello
  • Usare il modello per le stime

Risorse aggiuntive

Per altre informazioni sugli argomenti presentati in questa esercitazione, vedere le risorse seguenti: