Tutoriel : Classifier la gravité des violations d’intégrité des restaurants avec Model Builder

Découvrez comment créer un modèle de classification multiclasse à l’aide du Model Builder pour catégoriser le niveau de risque des violations de restaurant détectées lors des inspections d’intégrité.

Dans ce tutoriel, vous allez apprendre à :

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

Prérequis

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

Vue d’ensemble de la classification multiclasse Model Builder

Cet exemple crée une application console C# .NET Core qui catégorise le risque de violations d’intégrité à l’aide d’un modèle Machine Learning créé avec Model Builder. Le code source de ce tutoriel est disponible dans le dépôt GitHub dotnet/machinelearning-samples.

Création d’une application console

  1. Créez une application console C# .NET Core appelée « RestaurantViolations ».

Préparer et comprendre les données

Le jeu de données utilisé pour effectuer l'apprentissage et évaluer le modèle Machine Learning est initialement issu du San Francisco Department of Public Health Restaurant Safety Scores. Pour plus de commodité, le jeu de données a été condensé pour inclure uniquement les colonnes pertinentes pour effectuer l'apprentissage du modèle et effectuer des prédictions. Visitez le site web suivant pour en savoir plus sur le jeu de données.

Téléchargez le jeu de données Restaurant Safety Scores et décompressez-le.

Chaque ligne du jeu de données contient des informations sur les violations observées lors d’une inspection effectuée par le ministère de la Santé et une évaluation des risques liés à la menace que ces violations présentent pour la santé et la sécurité publiques.

InspectionType ViolationDescription RiskCategory
Routine : Non planifié Surfaces de contact alimentaires mal nettoyées ou aseptisées Risque modéré
Nouvelle propriété Infestation de vermine à haut risque Risque élevé
Routine : Non planifié Chiffons non nettoyés ou incorrectement stockés ou désinfecteurs insuffisants Risque faible
  • InspectionType : le type d’inspection. Il peut s’agir d’une première inspection pour un nouvel établissement, d’une inspection de routine, d’une inspection de plainte et de nombreux autres types.
  • ViolationDescription : une description de la violation trouvée lors de l’inspection.
  • RiskCategory : la gravité du risque qu’une violation pose à la santé et à la sécurité publiques.

label est la colonne à prédire. Lors de l’exécution d’une tâche de classification, l’objectif est d’attribuer une catégorie (texte ou numérique). Dans ce scénario de classification, la gravité de la violation est attribuée à la valeur de risque faible, modéré ou élevé. Par conséquent, la RiskCategory est l’étiquette. Les features sont les entrées que vous fournissez au modèle pour prédire la label. Dans ce cas, le InspectionType et la ViolationDescription sont utilisés comme fonctionnalités ou entrées pour prédire la RiskCategory.

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 RestaurantViolations, puis sélectionnez Ajouter>modèle Machine Learning....
  2. Nommez le projet mbconfigRestaurantViolationsPrediction, puis cliquez sur le bouton Ajouter.

Choisir un scénario

Écran Scénario Model Builder

Pour effectuer l'apprentissage de votre modèle, effectuez une sélection dans la liste des scénarios Machine Learning disponibles fournis par Model Builder. Dans ce cas, le scénario est Classification des données.

  1. Pour cet exemple, la tâche est une classification multiclasse. À l’étape Scénario de Model Builder, sélectionnez le scénario Classification des données.

Chargement des données

Model Builder accepte les données d’une base de données SQL Server ou d’un fichier local au format csv, tsvou txt.

  1. Dans l’étape de données de l’outil Model Builder, sélectionnez SQL Server dans la sélection du type de source de données.
  2. Cliquez sur le bouton Choisir une source de données.
    1. Dans la boîte de dialogue Choisir une source de données, sélectionnez Fichier de base de données Microsoft SQL Server.
    2. Décochez la case Toujours utiliser cette sélection, puis cliquez sur Continuer.
    3. Dans la boîte de dialogue Propriétés de connexion, sélectionnez Parcourir et sélectionnez le fichier RestaurantScores.mdf téléchargé.
    4. Sélectionnez OK.
  3. Choisissez Violations dans la liste déroulante Tableau.
  4. Choisissez RiskCategory dans la liste déroulante Colonne à prédire (Étiquette).
  5. Conservez les sélections par défaut dans Options de données avancées.
  6. Cliquez sur le bouton Étape suivante pour passer à l’étape d’apprentissage dans Model Builder.

Entraîner le modèle

La tâche Machine Learning utilisée pour effectuer l’apprentissage du modèle de classification des problèmes dans ce tutoriel est la classification multiclasse. Pendant le processus d’apprentissage du modèle, Model Builder entraîne des modèles distincts en utilisant différents algorithmes et paramètres de classification multiclasse pour trouver le modèle le plus performant pour votre jeu de données.

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

  1. Model Builder définit la valeur Temps d’apprentissage (secondes) sur 60 secondes. Effectuer l’apprentissage sur une période plus longue permet à Model Builder d’explorer un plus grand nombre d’algorithmes et de combinaisons de paramètres pour rechercher le meilleur modèle.
  2. Cliquez sur Démarrer 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 effectuer l’apprentissage du modèle.

Une fois l’apprentissage terminé, le fichier mbconfig va contenir le modèle généré appelé RestaurantViolationsPrediction.zip après l’entraînement et deux fichiers C# l’accompagnent :

  • RestaurantViolationsPrediction.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.
  • RestaurantViolationsPrediction.training.cs : ce fichier se compose du pipeline d’apprentissage que Model Builder a élaboré 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 Exactitude.

En outre, dans la fenêtre Sortie de Visual Studio, un tableau récapitulatif contient les meilleurs 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.

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

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

API Web

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

  1. Nommez le projet d’API web RestaurantViolationsPrediction_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 = @{
        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. Si elle réussit, la sortie doit ressembler au texte ci-dessous. La sortie a la RiskCategory prédite en tant que risque modéré et a les scores de chacune des étiquettes d’entrée : risque faible, risque élevé et risque modéré.

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

Félicitations ! Vous avez créé un modèle Machine Learning pour catégoriser le risque d’atteinte à la santé en utilisant Model Builder. Le code source de ce tutoriel est disponible dans le dépôt GitHub dotnet/machinelearning-samples.

Ressources supplémentaires

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