Tutorial: Vorhersagen von Preisen mithilfe von Regression mit dem Modell-Generator

Hier erfahren Sie, wie Sie mit dem ML.NET-Modellgenerator ein Regressionsmodells für Preisvorhersagen erstellen. Die .NET Konsolenanwendung, die Sie in diesem Tutorial entwickeln, sagt Taxipreise basierend auf historischen Taxipreisdaten aus New York vorher.

Die Preisvorhersagevorlage des Modell-Generators kann für jedes Szenario verwendet werden, das einen numerischen Vorhersagewert erfordert. Beispielszenarien sind: Vorhersagen des Hauspreises oder der Nachfrage und Umsatzprognosen.

In diesem Tutorial lernen Sie, wie die folgenden Aufgaben ausgeführt werden:

  • Vorbereiten und Verstehen der Daten
  • Erstellen einer Model Builder-Konfigurationsdatei
  • Auswählen eines Szenarios
  • Laden der Daten
  • Trainieren des Modells
  • Evaluieren des Modells
  • Verwenden des Modells für Vorhersagen

Voraussetzungen

Eine Liste der Voraussetzungen und Installationsanweisungen finden Sie in der Installationsanleitung für den Modell-Generator.

Erstellen einer Konsolenanwendung

  1. Erstellen Sie eine C# .NET Core-Konsolenanwendung mit dem Namen „TaxiFarePrediction“. Stellen Sie sicher, dass Legen Sie die Projektmappe und das Projekt im selben Verzeichnis abdeaktiviert ist (VS 2019).

Vorbereiten und Verstehen der Daten

  1. Erstellen Sie ein Verzeichnis mit dem Namen Daten in Ihrem Projekt, um die Datasetdateien zu speichern.

  2. Das Dataset zum Trainieren und Bewerten des Machine Learning-Modells stammt ursprünglich aus dem Dataset „NYC TLC Taxi Trip“.

    1. Navigieren Sie zum Herunterladen des Datasets zum Downloadlink für „taxi-fare-train.csv“.

    2. Klicken Sie mit der rechten Maustaste auf die geladene Seite, und wählen Sie Speichern unter aus.

    3. Speichern Sie die Datei über das Dialogfeld Speichern unter im Ordner Daten, den Sie im vorherigen Schritt erstellt haben.

  3. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Datei taxi-fare-train.csv, und wählen Sie Eigenschaften aus. Ändern Sie unter Erweitert den Wert von In Ausgabeverzeichnis kopieren in Kopieren, wenn neuer.

Jede Zeile im Dataset taxi-fare-train.csv enthält Details zu den Fahrten eines Taxis.

  1. Öffnen Sie das Dataset taxi-fare-train.csv.

    Das angegebene Dataset enthält die folgenden Spalten:

    • vendor_id: Die ID des Taxiunternehmers ist ein Feature.
    • rate_code: Der Tariftyp der Taxifahrt ist ein Feature.
    • passenger_count: Die Anzahl der Fahrgäste bei einer Fahrt ist ein Feature.
    • trip_time_in_secs: Die Dauer der Fahrt. Der Fahrpreis soll vorhergesagt werden, bevor die Fahrt abgeschlossen ist. Zu diesem Zeitpunkt wissen Sie noch nicht, wie lange die Fahrt dauert. Deshalb ist die Fahrtzeit kein Feature, und Sie müssen diese Spalte aus dem Modell ausschließen.
    • trip_distance: Die Fahrtstrecke ist ein Feature.
    • payment_type: Die Zahlungsmethode (Bargeld oder Kreditkarte) ist ein Feature.
    • fare_amount: Der gesamte gezahlte Taxifahrtpreis ist die Bezeichnung.

label ist die Spalte, die vorhergesagt werden soll. Das Ziel bei der Durchführung einer Regressionsaufgabe ist die Vorhersage eines numerischen Werts. In diesem Preisvorhersageszenario werden die Kosten für eine Taxifahrt vorhergesagt. Daher lautet die Bezeichnung fare_amount. Die identifizierten features sind die Eingaben, die Sie für das Modell zum Vorhersagen von label bereitstellen. In diesem Fall werden die restlichen Spalten mit Ausnahme von trip_time-in-secs als Features oder Eingaben verwendet, um den Fahrpreis vorherzusagen.

Erstellen einer Model Builder-Konfigurationsdatei

Wenn Sie der Projektmappe Model Builder hinzufügen, werden Sie aufgefordert, eine mbconfig-Datei zu erstellen. Die mbconfig-Datei verfolgt alles, was Sie in Model Builder tun, damit Sie die Sitzung erneut öffnen können.

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt TaxiFarePrediction, und wählen Sie Hinzufügen>Machine Learning-Modell aus.
  2. Nennen Sie das mbconfig-Projekt TaxiFarePrediction, und klicken Sie auf die Schaltfläche Hinzufügen.

Auswählen eines Szenarios

Model Builder-Szenariobildschirm

Um Ihr Modell zu trainieren, wählen Sie ein Szenario aus der Liste der vom Modell-Generator bereitgestellten verfügbaren Machine Learning-Szenarien aus. In diesem Fall handelt es sich um das Szenario Value prediction.

  1. Wählen Sie im Schritt „Szenario“ des Model Builder-Tools das Szenario Value prediction aus.

Auswählen der Umgebung

Model Builder kann das Training je nach ausgewähltem Szenario in verschiedenen Umgebungen ausführen.

  1. Vergewissern Sie sich, dass das Local (CPU)-Element ausgewählt ist, und klicken Sie auf die Schaltfläche Nächster Schritt.

Laden der Daten

Der Modellgenerator akzeptiert Daten aus zwei Quellen: aus einer SQL Server-Datenbank oder aus einer lokalen Datei im CSV- oder TSV-Format.

  1. Wählen Sie im Datenschritt des Model Builder-Tools die Option Datei aus der Datenquellentyp-Auswahl aus.
  2. Wählen Sie die Schaltfläche Durchsuchen neben dem Textfeld aus, und verwenden Sie den Datei-Explorer, um die Datei taxi-fare-test.csv im Verzeichnis Daten zu suchen und auszuwählen.
  3. Wählen Sie in der Dropdownliste Vorherzusagende Spalte (Bezeichnung) die Option fare_amount aus.
  4. Klicken Sie auf den Link Erweiterte Datenoptionen.
  5. Wählen Sie auf der Registerkarte Spalteneinstellungen die Dropdownliste Zweck für die Spalte trip_time_in_secs aus, und wählen Sie Ignorieren aus, um sie während des Trainings als Feature auszuschließen. Klicken Sie auf die Schaltfläche Speichern, um das Dialogfeld zu schließen.
  6. Klicken Sie auf die Schaltfläche Nächster Schritt.

Trainieren des Modells

Die in diesem Tutorial zum Trainieren des Preisvorhersagemodells verwendete Machine Learning-Aufgabe ist die Regression. Während des Modelltrainings trainiert der Modell-Generator einzelne Modelle mit verschiedenen Regressionsalgorithmen und Einstellungen, um das leistungsfähigste Modell für Ihr Dataset zu finden.

Die Zeit, die für das Trainieren des Modells benötigt wird, ist proportional zur Datenmenge. Der Modell-Generator legt automatisch einen Standardwert für Time to train (seconds) (Trainingszeit (Sekunden)) basierend auf der Größe der Datenquelle fest.

  1. Ändern Sie den Standardwert für Time to train (seconds) (Trainingszeit (Sekunden)) nur, wenn Sie eine längere Trainingszeit angeben möchten.
  2. Wählen Sie Training starten aus.

Während des gesamten Trainingsprozesses werden die Fortschrittsdaten im Abschnitt Training results des Schritts „Trainieren“ angezeigt.

  • „Status“ zeigt den Abschlussstatus des Trainingsprozesses an.
  • „Beste Genauigkeit“ zeigt die Genauigkeit des leistungsfähigsten Modells, das bisher vom Model Builder gefunden wurde. Eine höhere Genauigkeit bedeutet, dass die Vorhersage des Modells anhand der Testdaten präziser ist.
  • „Bester Algorithmus“ zeigt den Namen des leistungsfähigsten Algorithmus an, der bisher vom Model Builder gefunden wurde.
  • „Letzter Algorithmus“ zeigt den Namen des Algorithmus an, der zuletzt vom Model Builder zum Trainieren des Modells verwendet wurde.

Sobald das Training abgeschlossen ist, enthält die mbconfig-Datei das nach dem Training generierte Modell namens TaxiFarePrediction.zip und mit ihm zwei C#-Dateien:

  • TaxiFare.consumption.cs: Diese Datei verfügt über eine öffentliche Methode, die das Modell laden, eine Vorhersageengine erstellen und die Vorhersage zurückgeben wird.
  • TaxiFare.training.cs: Diese Datei besteht aus der Trainingspipeline, die Model Builder entwickelt hat, um das beste Modell einschließlich aller verwendeten Hyperparameter zu erstellen.

Klicken Sie auf die Schaltfläche Nächster Schritt, um zum Auswertungsschritt zu navigieren.

Auswerten des Modells

Das Ergebnis des Schritts „Trainieren“ ist ein Modell mit der besten Leistung. Der Auswertungsschritt des Model Builder-Tools enthält im Eintrag Modell des Abschnitts Bestes Modell den Algorithmus, der vom Modell mit der besten Leistung verwendet wird, sowie in RSquared Metriken für dieses Modell.

Darüber hinaus wird im Fenster Ausgabe von Visual Studio eine Zusammenfassungstabelle mit den wichtigsten Modellen und ihren Metriken angezeigt.

In diesem Abschnitt können Sie ihr Modell auch testen, indem Sie eine einzelne Vorhersage ausführen. Zum Eintragen von Werten stehen Textfelder zur Verfügung, und Sie können auf die Schaltfläche Vorhersage klicken, um eine Vorhersage vom besten Modell zu erhalten. Standardmäßig wird dies durch eine zufällige Zeile in Ihrem Dataset ausgefüllt.

Wenn Sie mit Ihren Genauigkeitsmetriken nicht zufrieden sind, gibt es einige einfache Möglichkeiten, die Modellgenauigkeit zu verbessern. Dazu müssen Sie die Zeit für das Training des Modells erhöhen oder mehr Daten verwenden. Klicken Sie andernfalls auf Nächster Schritt, um zum Nutzungsschritt zu navigieren.

(Optional) Nutzen des Modells

Dieser Schritt enthält Projektvorlagen, mit denen Sie das Modell nutzen können. Dieser Schritt ist optional, und Sie können die Methode auswählen, die Ihren Anforderungen, das Modell zu bedienen, am besten entspricht.

  • Konsolen-App
  • Web-API

Konsolen-App

Wenn Sie Ihrer Projektmappe eine Konsolen-App hinzufügen, werden Sie aufgefordert, das Projekt zu benennen.

  1. Nennen Sie das Konsolenprojekt TaxiFare_Console.

  2. Klicken Sie auf Zu Projektmappe hinzufügen, um das Projekt Ihrer aktuellen Projektmappe hinzuzufügen.

  3. Führen Sie die Anwendung aus.

    Die vom Programm generierte Ausgabe sollte wie der folgende Ausschnitt aussehen:

    Predicted Fare: 15.020833
    

Web-API

Wenn Sie Ihrer Projektmappe eine Web-API hinzufügen, werden Sie aufgefordert, das Projekt zu benennen.

  1. Nennen Sie das Web-API-Projekt TaxiFare_API.

  2. Klicken Sie auf Zu Projektmappe hinzufügen*, um das Projekt Ihrer aktuellen Projektmappe hinzuzufügen.

  3. Führen Sie die Anwendung aus.

  4. Öffnen Sie PowerShell, und geben Sie den folgenden Code ein, wobei PORT der Port ist, auf dem Ihre Anwendung lauscht.

    $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. Bei erfolgreicher Ausführung sollte die Ausgabe dem folgenden Text ähneln:

    score
    -----
    15.020833
    

Nächste Schritte

In diesem Tutorial haben Sie Folgendes gelernt:

  • Vorbereiten und Verstehen der Daten
  • Auswählen eines Szenarios
  • Laden der Daten
  • Trainieren des Modells
  • Evaluieren des Modells
  • Verwenden des Modells für Vorhersagen

Zusätzliche Ressourcen

Weitere Informationen zu den in diesem Tutorial erwähnten Themen finden Sie in den folgenden Ressourcen: