Tutoriel : Prédire des prix en utilisant la régression avec Model Builder

Découvrez comment utiliser Model Builder ML.NET pour générer un modèle de régression pour prédire des prix. L’application console .NET que vous développez dans ce tutoriel prédit les prix des taxis en fonction de l’historique des prix des courses de taxi à New York.

Le modèle de prédiction des prix de Model Builder peut être utilisé pour tout scénario nécessitant une valeur de prédiction numérique. Voici quelques exemples de scénarios : prédiction des prix de l’immobilier, prédiction de la demande et prévisions des ventes.

Dans ce tutoriel, vous allez apprendre à :

  • Préparer et comprendre les données
  • Créer un fichier config Model Builder
  • Choisir un scénario
  • Chargement des données
  • Effectuer l’apprentissage du modèle
  • Évaluer le modèle
  • Utiliser le modèle pour les prévisions

Conditions préalables

Pour obtenir la liste des prérequis et les instructions d’installation, consultez le Guide d’installation de Model Builder.

Création d’une application console

  1. Créez une application console .NET Core C# appelée « TaxiFarePrediction ». Vérifiez que l’option Placer la solution et le projet dans le même répertoire n’est pas cochée (VS 2019).

Préparer et comprendre les données

  1. Créez un répertoire nommé Data dans votre projet pour stocker les fichiers du jeu de données.

  2. Le jeu de données utilisé pour l’apprentissage et l’évaluation du modèle de Machine Learning provient à l’origine du jeu de données NYC TLC Taxi Trip.

    1. Pour télécharger le jeu de données, accédez au lien de téléchargement taxi-fare-train.csv.

    2. Lorsque la page se charge, cliquez avec le bouton droit n’importe où sur la page et sélectionnez Enregistrer sous.

    3. Utilisez la boîte de dialogue Enregistrer sous pour enregistrer le fichier dans le dossier Data que vous avez créé à l’étape précédente.

  3. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le fichier taxi-fare-train.csv, puis sélectionnez Propriétés. Sous Avancé, définissez la valeur Copier dans le répertoire de sortie sur Copier si plus récent.

Chaque ligne du jeu de données taxi-fare-train.csv contient les détails de courses effectuées par un taxi.

  1. Ouvrez le jeu de données taxi-fare-train.csv.

    Le jeu de données fourni contient les colonnes suivantes :

    • vendor_id : l’ID du taxi est une fonctionnalité.
    • rate_code : le type de tarif de la course de taxi est une fonctionnalité.
    • passenger_count : le nombre de passagers embarqués est une fonctionnalité.
    • trip_time_in_secs : durée totale de la course. Vous voulez prédire le prix de la course avant de l’effectuer. À ce stade vous ne connaissez pas la durée de la course. Par conséquent, la durée de la course n’est pas une fonctionnalité et vous devez exclure cette colonne du modèle.
    • trip_distance : la distance de la course est une fonctionnalité.
    • payment_type : le mode de paiement (espèces ou carte de crédit) est une fonctionnalité.
    • fare_amount : le prix total payé pour la course est l’étiquette.

label est la colonne à prédire. Quand vous effectuez une tâche de régression, l’objectif est de prédire une valeur numérique. Dans ce scénario de prédiction des prix, c’est le coût d’une course de taxi qui est prédit. Par conséquent, fare_amount est l’étiquette. Les features identifiées sont les entrées que vous fournissez au modèle pour prédire label. Dans ce cas, le reste des colonnes à l’exception de trip_time_in_secs sont utilisées comme composants ou entrées pour prédire le montant du tarif.

Créer un fichier config Model Builder

La première fois que vous ajoutez Model Builder à la solution, il vous invite à créer un fichier mbconfig. Le fichier mbconfig effectue le suivi de toutes les opérations que vous effectuez dans Model Builder pour vous permettre de rouvrir la session.

  1. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le projet TaxiFarePrediction, puis sélectionnez Ajouter>Modèle Machine Learning….
  2. Nommez le projet mbconfigTaxiFarePrediction, puis cliquez sur le bouton Ajouter.

Choisir un scénario

Écran Scénario Model Builder

Pour entraîner votre modèle, vous devez sélectionner dans la liste des scénarios Machine Learning disponibles fournis par Model Builder. Dans ce cas, le scénario est Value prediction.

  1. Dans l’étape de scénario de l’outil Model Builder, sélectionnez le scénario Prédiction de valeur.

Sélectionnez l’environnement.

Model Builder peut exécuter l’entraînement sur différents environnements en fonction du scénario sélectionné.

  1. Vérifiez que l’élément Local (CPU) est sélectionné, puis cliquez sur le bouton Étape suivante.

Chargement des données

Model Builder accepte des données de deux sources : une base de données SQL Server, ou un fichier csv ou tsv local.

  1. Dans l’étape des données de l’outil Model Builder, sélectionnez Fichier dans la sélection du type de sources de données.
  2. Sélectionnez le bouton Parcourir en regard de la zone de texte et utilisez l’Explorateur de fichiers pour parcourir et sélectionner taxi-fare-test.csv dans le répertoire Data
  3. Choisissez fare_amount dans la liste déroulante Colonne à prédire (Étiquette).
  4. Cliquez sur le lien Options de données avancées.
  5. Dans l’onglet Paramètres de colonne, sélectionnez la liste déroulante Fonction pour la colonne trip_time_in_secs , puis sélectionnezIgnorer pour l’exclure en tant que fonctionnalité pendant la formation. Cliquez sur le bouton Enregistrer pour fermer le dialogue.
  6. Cliquez sur le bouton Étape suivante.

Entraîner le modèle

La tâche Machine Learning utilisée pour entraîner le modèle de prédiction des prix de ce tutoriel est la régression. Pendant le processus d’entraînement du modèle, Model Builder entraîne des modèles distincts en utilisant différents algorithmes et paramètres de régression pour trouver le modèle le plus performant pour votre jeu de données.

Le temps nécessaire pour l’entraînement du modèle est proportionnel à la quantité de données. Model Builder sélectionne automatiquement une valeur par défaut pour Temps d’entraînement (secondes) en fonction de la taille de votre source de données.

  1. Conservez la valeur par défaut telle quelle pour Temps d’entraînement (secondes), sauf si vous préférez effectuer l’apprentissage pendant une durée plus longue.
  2. Sélectionnez Commencer l’entraînement.

Tout au long du processus d’entraînement, des données sur la progression s’affichent dans la section Training results de l’étape d’entraînement.

  • Le champ État affiche l’état d’achèvement du processus d’entraînement.
  • Le champ Meilleure précision affiche la précision du modèle le plus performant trouvé jusqu’à présent par Model Builder. Une précision plus élevée signifie que le modèle a prédit plus correctement sur les données de test.
  • Le champ Meilleur algorithme affiche le nom de l’algorithme le plus performant trouvé jusqu’à présent par Model Builder.
  • Le champ Dernier algorithme affiche le nom de l’algorithme le plus récemment utilisé par Model Builder pour entraîner le modèle.

Une fois l’entraînement terminé, le fichier mbconfig aura le modèle généré appelé TaxiFarePrediction.zip après la formation et deux fichiers C# avec celui-ci :

  • TaxiFare.consumption.cs : ce fichier a une méthode publique qui charge le modèle et crée un moteur de prédiction avec celui-ci et retourne la prédiction.
  • TaxiFare.training.cs : ce fichier se compose du pipeline de formation que Model Builder a fourni pour créer le meilleur modèle, y compris les hyperparamètres qu’il a utilisés.

Cliquez sur le bouton Étape suivante pour accéder à l’étape d’évaluation.

Évaluer le modèle

Le résultat de l’étape d’entraînement sera le modèle qui a eu les meilleures performances. Dans l’étape d’évaluation de l’outil Model Builder, la section Meilleur modèle va contenir l’algorithme utilisé par le modèle le plus performant dans l’entrée Modèle ainsi que des métriques pour ce modèle dans RSquared.

En outre, dans la fenêtre Sortie de Visual Studio, il y aura un tableau de résumé contenant les principaux modèles et leurs métriques.

Cette section vous permet également de tester votre modèle en effectuant une prédiction unique. Elle offre des zones de texte pour renseigner des valeurs et vous pouvez cliquer sur le bouton Prédire pour obtenir une prédiction à partir du meilleur modèle. Par défaut, elles seront renseignées par une ligne aléatoire dans votre jeu de données.

Si vous n’êtes pas satisfait de vos métriques de précision, un moyen facile pour améliorer la précision du modèle consiste à augmenter la quantité de temps pour entraîner le modèle ou à utiliser plus de données. Sinon, cliquez sur Étape suivante pour accéder à l’étape de consommation.

(Facultatif) Consommer le modèle

Cette étape aura des modèles de projet que vous pouvez utiliser pour utiliser le modèle. Cette étape est facultative et vous pouvez choisir la méthode qui correspond le mieux à vos besoins sur la façon de servir le modèle.

  • Application console
  • API Web

Application console

Lorsque vous ajoutez une application console à votre solution, vous êtes invité à nommer le projet.

  1. Nommez le projet de console TaxiFare_Console.

  2. Cliquez sur Ajouter à la solution pour ajouter le projet à votre solution actuelle.

  3. Exécutez l’application.

    La sortie générée par le programme doit se présenter comme l’extrait de code ci-dessous :

    Predicted Fare: 15.020833
    

API Web

Lorsque vous ajoutez une API web à votre solution, vous êtes invité à nommer le projet.

  1. Nommez le projet d’API web TaxiFare_API.

  2. Cliquez sur Ajouter à la solution pour ajouter le projet à votre solution actuelle.

  3. Exécutez l’application.

  4. Ouvrez PowerShell et entrez le code suivant, où PORT est le port d’écoute de votre application.

    $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. En cas de réussite, la sortie devrait se présenter ainsi :

    score
    -----
    15.020833
    

Étapes suivantes

Dans ce didacticiel, vous avez appris à :

  • Préparer et comprendre les données
  • Choisir un scénario
  • Chargement des données
  • Effectuer l’apprentissage du modèle
  • Évaluer le modèle
  • Utiliser le modèle pour les prévisions

Ressources supplémentaires

Pour en savoir plus sur les rubriques mentionnées dans ce tutoriel, consultez les ressources suivantes :