Udostępnij za pomocą


Samouczek: klasyfikowanie ważności naruszeń kondycji restauracji za pomocą narzędzia Model Builder

Dowiedz się, jak utworzyć model klasyfikacji wieloklasowej przy użyciu narzędzia Model Builder do kategoryzowania poziomu ryzyka naruszeń restauracji znalezionych podczas inspekcji kondycji.

W tym poradniku nauczysz się, jak:

  • Przygotowywanie i zrozumienie danych
  • Tworzenie pliku konfiguracji konstruktora modelu
  • Wybór scenariusza
  • Ładowanie danych z bazy danych
  • Trenowanie modelu
  • Ocena modelu
  • Korzystanie z modelu na potrzeby przewidywań

Wymagania wstępne

Aby uzyskać listę wymagań wstępnych i instrukcji dotyczących instalacji, zapoznaj się z przewodnikiem instalacji narzędzia Model Builder.

Omówienie klasyfikacji wieloklasowej konstruktora modeli

W tym przykładzie tworzona jest aplikacja konsolowa w języku C#, która kategoryzuje ryzyko naruszeń kondycji przy użyciu modelu uczenia maszynowego utworzonego za pomocą narzędzia Model Builder. Kod źródłowy tego samouczka można znaleźć w repozytorium dotnet/machinelearning-samples GitHub.

Tworzenie aplikacji konsolowej

Utwórz aplikację konsolową języka C# o nazwie "RestaurantViolations".

Przygotowywanie i zrozumienie danych

Zestaw danych używany do trenowania i oceniania modelu uczenia maszynowego pochodzi z Departamentu Bezpieczeństwa Restauracji Zdrowia Publicznego w San Francisco. Dla wygody zestaw danych został skondensowany tak, aby zawierał tylko kolumny istotne do wytrenowania modelu i przewidywania. Odwiedź następującą witrynę internetową, aby dowiedzieć się więcej o zestawie danych.

Pobierz zestaw danych Scores bezpieczeństwa restauracji i rozpakuj go.

Każdy wiersz w zestawie danych zawiera informacje dotyczące naruszeń zaobserwowanych podczas inspekcji departamentu zdrowia i oceny ryzyka zagrożenia, które są obecne dla zdrowia i bezpieczeństwa publicznego.

Typ inspekcji Opis naruszenia RiskCategory
Rutynowe — nieplanowane Niewłaściwie oczyszczone lub zdezynfekowane powierzchnie kontaktu z żywnością Umiarkowane ryzyko
Nowa własność Inwazja szkodników o wysokim ryzyku Wysokie ryzyko
Rutynowe — nieplanowane Ścierki nie są czyste, prawidłowo przechowywane lub odpowiednio dezynfekowane. Niskie ryzyko
  • Typ inspekcji: typ inspekcji. Może to być inspekcja po raz pierwszy dla nowego zakładu, rutynowa inspekcja, inspekcja na skutek skargi, i wiele innych rodzajów inspekcji.
  • ViolationDescription: opis naruszenia znaleziony podczas inspekcji.
  • RiskCategory: stopień zagrożenia, jakie naruszenie stanowi dla zdrowia i bezpieczeństwa publicznego.

label to kolumna, którą chcesz przewidzieć. Podczas wykonywania zadania klasyfikacji celem jest przypisanie kategorii (tekstowej lub liczbowej). W tym scenariuszu klasyfikacji dotkliwość naruszenia jest przypisana do poziomu niskiego, umiarkowanego lub wysokiego ryzyka. Dlatego RiskCategory jest etykietą. Dane wejściowe features, które przekazujesz modelowi, aby przewidzieć label. W takim przypadku elementy InspectionType i ViolationDescription są używane jako funkcje lub dane wejściowe do przewidywania kategorii ryzyka.

Tworzenie pliku konfiguracji narzędzia Model Builder

Podczas pierwszego dodawania konstruktora modelu do rozwiązania zostanie wyświetlony monit o utworzenie mbconfig pliku. Plik mbconfig śledzi wszystko, co robisz w narzędziu Model Builder, aby umożliwić ponowne otwarcie sesji.

  1. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt RestaurantViolations i wybierz pozycję Dodaj>model uczenia maszynowego.
  2. Nadaj projektowi mbconfig nazwę RestaurantViolationsPrediction, a następnie kliknij przycisk Dodaj .

Wybór scenariusza

Ekran scenariusza kreatora modeli

Aby wytrenować model, wybierz z listy dostępnych scenariuszy uczenia maszynowego dostarczonych przez narzędzie Model Builder. W takim przypadku scenariusz to Klasyfikacja danych.

  1. W tym przykładzie zadanie to klasyfikacja wieloklasowa. W kroku Scenariusz w narzędziu Model Builder wybierz scenariusz klasyfikacji danych .

Ładowanie danych

Program Model Builder akceptuje dane z bazy danych programu SQL Server lub pliku lokalnego w formacie csv, tsvlub txt .

  1. W kroku danych narzędzia Model Builder wybierz pozycję SQL Server z wybranego typu źródła danych.
  2. Wybierz przycisk Wybierz źródło danych .
    1. W oknie dialogowym Wybieranie źródła danych wybierz pozycję Plik bazy danych programu Microsoft SQL Server.
    2. Usuń zaznaczenie pola wyboru Zawsze używaj tego zaznaczenia i kliknij przycisk Kontynuuj.
    3. W oknie dialogowym Właściwości połączenia wybierz pozycję Przeglądaj i wybierz pobrany plik RestaurantScores.mdf .
    4. Kliknij przycisk OK.
  3. Wybierz pozycję Naruszenia z listy rozwijanej Tabela .
  4. Wybierz RiskCategory (Kategoria ryzyka) na liście rozwijanej kolumna do przewidywania (Etykieta).
  5. Pozostaw domyślne opcje w obszarze Zaawansowane opcje danych.
  6. Kliknij przycisk Dalej, aby przejść do etapu trenowania w narzędziu Model Builder.

Trenowanie modelu

Zadanie uczenia maszynowego używane do trenowania modelu klasyfikacji zagadnień w tym samouczku to klasyfikacja wieloklasowa. Podczas procesu trenowania modelu konstruktor modeli szkoli oddzielne modele przy użyciu różnych algorytmów klasyfikacji wieloklasowej i ustawień w celu znalezienia najlepszego modelu dla zestawu danych.

Czas wymagany do trenowania modelu jest proporcjonalny do ilości danych. Konstruktor modelu automatycznie wybiera wartość domyślną czasu trenowania (w sekundach) na podstawie rozmiaru źródła danych.

  1. Konstruktor modelu ustawia wartość Czas trenowania (w sekundach) na 60 sekund. Trenowanie przez dłuższy czas umożliwia konstruktorowi modelu eksplorowanie większej liczby algorytmów i kombinacji parametrów w wyszukiwaniu najlepszego modelu.
  2. Kliknij przycisk Rozpocznij szkolenie.

W całym procesie trenowania dane postępu są wyświetlane w Training results sekcji kroku trenowania.

  • Stan wyświetla stan ukończenia procesu trenowania.
  • Najlepsza dokładność przedstawia dokładność najlepszego modelu znalezionego przez Model Builder dotychczas. Wyższa dokładność oznacza, że model przewidywał bardziej poprawnie na danych testowych.
  • Najlepszy algorytm wyświetla nazwę najlepiej działającego algorytmu znalezionego przez konstruktora modeli do tej pory.
  • Ostatni algorytm wyświetla nazwę algorytmu ostatnio używanego przez konstruktora modeli do trenowania modelu.

Po zakończeniu trenowania plik mbconfig będzie miał wygenerowany model o nazwie RestaurantViolationsPrediction.zip oraz dwa pliki C# będą z nim:

  • RestaurantViolationsPrediction.consumption.cs: Ten plik ma publiczną metodę, która załaduje model, utworzy silnik predykcji z modelem i zwróci prognozę.
  • RestaurantViolationsPrediction.training.cs: ten plik składa się z potoku trenowania, który Model Builder opracował, aby zbudować najlepszy model, w tym wszelkie używane hiperparametry.

Kliknij przycisk Dalej, aby przejść do kroku oceny.

Ocena modelu

Wynikiem kroku trenowania będzie jeden model, który miał najlepszą wydajność. W kroku oceny w narzędziu Model Builder, sekcja Najlepszy model zawiera algorytm używany przez najlepiej działający model we wpisie Model oraz metryki dotyczące tego modelu w sekcji Dokładność.

Ponadto w oknie Dane wyjściowe programu Visual Studio będzie dostępna tabela podsumowania zawierająca najważniejsze modele i ich metryki.

Ta sekcja umożliwia również przetestowanie modelu przez wykonanie pojedynczego przewidywania. Spowoduje to utworzenie pól tekstowych w celu wypełnienia wartości i kliknięcie przycisku Predict (Przewidywanie ), aby uzyskać przewidywanie z najlepszego modelu. Domyślnie będzie to wypełniane przez losowy wiersz w zestawie danych.

(Opcjonalne) Wykorzystanie modelu

Ten krok będzie zawierać szablony projektów, których można użyć do korzystania z modelu. Ten krok jest opcjonalny i możesz wybrać metodę najlepiej dopasowaną do potrzeb dotyczących sposobu obsługi modelu.

  • Aplikacja konsolowa
  • Internetowe API

Aplikacja konsolowa

Podczas dodawania aplikacji konsolowej do rozwiązania zostanie wyświetlony monit o nadenie nazwy projektu.

  1. Nadaj projektowi konsoli nazwę RestaurantViolationsPrediction_Console.

  2. Kliknij pozycję Dodaj do rozwiązania, aby dodać projekt do bieżącego rozwiązania.

  3. Uruchom aplikację.

    Dane wyjściowe wygenerowane przez program powinny wyglądać podobnie do poniższego fragmentu kodu:

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

Internetowe API

Podczas dodawania internetowego interfejsu API do rozwiązania zostanie wyświetlony monit o nadenie nazwy projektu.

  1. Nadaj projektowi internetowego interfejsu API nazwę RestaurantViolationsPrediction_API.

  2. Kliknij pozycję Dodaj do rozwiązania*, aby dodać projekt do bieżącego rozwiązania.

  3. Uruchom aplikację.

  4. Otwórz program PowerShell i wprowadź następujący kod, gdzie PORT to port, na którym nasłuchuje twoja aplikacja.

    $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. W przypadku powodzenia dane wyjściowe powinny wyglądać podobnie do poniższego tekstu. Dane wyjściowe mają przewidywaną kategorię RiskCategory jako Umiarkowane ryzyko i mają wyniki każdej z etykiet wejściowych — niskie ryzyko, wysokie ryzyko i umiarkowane ryzyko.

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

Gratulacje! Udało Ci się utworzyć model uczenia maszynowego w celu kategoryzowania ryzyka naruszeń kondycji przy użyciu narzędzia Model Builder. Kod źródłowy tego samouczka można znaleźć w repozytorium dotnet/machinelearning-samples GitHub.

Dodatkowe zasoby

Aby dowiedzieć się więcej o tematach wymienionych w tym samouczku, odwiedź następujące zasoby: