Tutorial: Klassifizieren des Schweregrads von Integritätsverletzungen in Restaurants mit dem Modell-Generator

Informieren Sie sich, wie Sie mithilfe des Modell-Generators ein Multiklassenklassifizierungsmodell zum Kategorisieren der Risikostufe von Verstößen in Restaurants erstellen, die bei Integritätsprüfungen festgestellt wurden.

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 von Daten aus einer Datenbank
  • 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.

Übersicht über die Multiklassenklassifizierung des Modell-Generators

In diesem Beispiel wird eine C# .NET Core-Konsolenanwendung erstellt, die mithilfe eines mit dem Modell-Generator erstellten Machine Learning-Modells das Risiko von Integritätsverstößen kategorisiert. Sie finden den Quellcode für dieses Tutorial im GitHub-Repository dotnet/machinelearning-samples.

Erstellen einer Konsolenanwendung

  1. Erstellen Sie eine C# .NET Core-Konsolenanwendung mit dem Namen „RestaurantViolations“.

Vorbereiten und Verstehen der Daten

Das Dataset, das zum Trainieren und Auswerten des Machine Learning-Modells verwendet wird, stammt ursprünglich vom San Francisco Department of Public Health für Integritätsbewertungen von Restaurants. Aus Gründen der Benutzerfreundlichkeit wurde das Dataset so komprimiert, dass nur die Spalten enthalten sind, die zum Trainieren des Modells und zum Treffen von Vorhersagen relevant sind. Weitere Informationen zum Dataset finden Sie auf der folgenden Website.

Laden Sie das Dataset „Restaurant Safety Scores“ herunter, und entpacken Sie es.

Jede Zeile im Dataset enthält Informationen zu Verstößen, die im Rahmen einer Untersuchung des Gesundheitsamts festgestellt wurden, sowie eine Risikobewertung der aus diesen Verstößen resultierenden Gefahren für die öffentliche Gesundheit und Sicherheit.

InspectionType ViolationDescription RiskCategory
Routinekontrolle (nicht angekündigt) Unzureichend gesäuberte oder desinfizierte Oberflächen Mittleres Risiko
Neuer Besitzer Hohes Risiko durch Schädlingsbefall Hohes Risiko
Routinekontrolle (nicht angekündigt) Klamotten nicht bzw. nicht ordnungsgemäß gelagert und gewaschen Geringes Risiko
  • InspectionType: Dies entspricht der Art der Überprüfung. Dabei kann es sich um eine erstmalige Überprüfung eines neuen Ladens, eine Routineüberprüfung, eine Überprüfung infolge einer Beschwerde usw. handeln.
  • ViolationDescription: Dies ist eine Beschreibung des während der Überprüfung festgestellten Verstoßes.
  • RiskCategory: Dies beschreibt den Schweregrad des Verstoßes, den dieser für die öffentliche Gesundheit und Sicherheit darstellt.

label ist die Spalte, die vorhergesagt werden soll. Beim Ausführen einer Klassifizierungsaufgabe ist es das Ziel, eine Kategorie zuzuweisen (Text oder numerisch). In diesem Klassifizierungsszenario entspricht der Schweregrad des Verstoßes den Werten „geringes Risiko“, „mittleres Risiko“ oder „hohes Risiko“. Daher ist RiskCategory die Bezeichnung. Die features sind die Eingaben, die Sie dem Modell zum Vorhersagen von label bereitstellen. In diesem Fall werden InspectionType und ViolationDescription als Features oder Eingaben verwendet, um RiskCategory 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 RestaurantViolations und wählen Sie Hinzufügen>Machine Learning Model... .
  2. Nennen Sie das mbconfig-Projekt RestaurantViolationsPrediction, und klicken Sie auf die Schaltfläche Hinzufügen.

Auswählen eines Szenarios

Modell-Generator-Szenariobildschirm

Wählen Sie aus der vom Modell-Generator bereitgestellten Liste der verfügbaren Machine Learning-Szenarios ein Szenario aus, um Ihr Modell zu trainieren. In diesem Fall lautet das Szenario Datenklassifizierung.

  1. Bei diesem Beispiel handelt es sich um eine Multiklassen-Klassifizierung. Wählen Sie im Schritt Szenario des Model Builder das Szenario Datenklassifizierung.

Laden der Daten

Model Builder akzeptiert Daten aus einer SQL Server-Datenbank oder aus einer lokalen Datei im csv-, tsv- oder txt-Format.

  1. Wählen Sie im Schritt „Daten“ des Model Builder-Tools in der Datenquellentyp-Auswahl SQL Server aus.
  2. Wählen Sie die Schaltfläche Datenquelle auswählen aus.
    1. Wählen Sie im Dialogfeld Datenquelle auswählen die Option Microsoft SQL Server-Datenbankdatei aus.
    2. Deaktivieren Sie das Kontrollkästchen Immer diese Auswahl verwenden, und klicken Sie auf Weiter.
    3. Klicken Sie im Dialogfeld Verbindungseigenschaften auf Durchsuchen, und klicken Sie auf die heruntergeladene Datei RestaurantScores.mdf.
    4. Klicken Sie auf OK.
  3. Wählen Sie in der Dropdownliste Tabelle die Option Violations (Verstöße) aus.
  4. Wählen Sie RiskCategory in der Dropdown-Liste Column to predict (Label) .
  5. Behalten Sie unter Erweiterte Datenoptionen die Standardauswahl bei.
  6. Klicken Sie auf die Schaltfläche Nächster Schritt, um in Model Builder zum Trainingsschritt zu gelangen.

Trainieren des Modells

Die in diesem Tutorial zum Trainieren des Klassifizierungsmodells für Issues verwendete Machine Learning-Aufgabe ist eine Multiklassenklassifizierung. Während des Modelltrainings trainiert der Modell-Generator einzelne Modelle mit verschiedenen Algorithmen und Einstellungen für Multiklassenklassifizierungen, 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. Model Builder legt den Wert von Trainingszeit (Sekunden) auf 60 Sekunden fest. Ein längeres Training ermöglicht es dem Modell-Generator, eine größere Anzahl von Algorithmen und Kombinationen von Parametern auf der Suche nach dem besten Modell zu untersuchen.
  2. Klicken Sie auf Training starten.

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 Modell-Generator 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 Modell-Generator gefunden wurde.
  • „Letzter Algorithmus“ zeigt den Namen des Algorithmus an, der zuletzt vom Modell-Generator zum Trainieren des Modells verwendet wurde.

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

  • RestaurantViolationsPrediction.consumption.cs: Diese Datei verfügt über eine öffentliche Methode, die das Modell laden, eine Vorhersageengine erstellen und die Vorhersage zurückgeben wird.
  • RestaurantViolationsPrediction.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 Genauigkeit 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.

(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 RestaurantViolationsPrediction_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:

    InspectionType: Routine - Unscheduled
    ViolationDescription: Moderate risk food holding temperature
    
    Predicted RiskCategory: Moderate Risk
    

Web-API

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

  1. Nennen Sie das Web-API-Projekt RestaurantViolationsPrediction_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 = @{
        InspectionType="Reinspection/Followup"
        ViolationDescription="Inadequately cleaned or sanitized food contact surfaces"
    }
    
    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. Die Ausgabe hat die vorhergesagte RiskCategory (Risikokategorie) Moderate Risk (Mittleres Risiko) und die Auswertungen der einzelnen Eingabebezeichnungen: Low Risk (Niedriges Risiko), High Risk (Hohes Risiko) und Moderate Risk (Mittleres Risiko).

    prediction    score
    ----------    -----
    Moderate Risk {0.055566575, 0.058012854, 0.88642055}
    

Herzlichen Glückwunsch! Sie haben mithilfe des Modell-Generators erfolgreich ein Machine Learning-Modell zum Kategorisieren des Risikos von Integritätsverstößen erstellt. Sie finden den Quellcode für dieses Tutorial im GitHub-Repository dotnet/machinelearning-samples.

Zusätzliche Ressourcen

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