Compartilhar via


Tutorial: Classificar a severidade de violações de condições sanitárias de restaurantes com o Model Builder

Saiba como criar um modelo de classificação multiclasse usando o Construtor de Modelos para categorizar o nível de risco de violações de restaurante encontradas durante inspeções de integridade.

Neste tutorial, você aprenderá como:

  • Preparar e entender os dados
  • Criar um arquivo de configuração do Construtor de Modelos
  • Escolha um cenário
  • Carregar dados de um banco de dados
  • Treinar o modelo
  • Avaliar o modelo
  • Usar o modelo para previsões

Pré-requisitos

Para obter uma lista de pré-requisitos e instruções de instalação, visite o guia de instalação do Construtor de Modelos.

Visão geral da classificação multiclasse do Model Builder

Este exemplo cria um aplicativo de console C# que categoriza o risco de violações de integridade usando um modelo de machine learning criado com o Construtor de Modelos. Você pode encontrar o código-fonte deste tutorial no repositório GitHub do dotnet/machinelearning-samples .

Criar um aplicativo de console

Crie um aplicativo de console C# chamado "RestaurantViolations".

Preparar e entender os dados

O conjunto de dados usado para treinar e avaliar o modelo de machine learning foi obtido originalmente do Departamento de Segurança de Restaurantes de Saúde Pública de São Francisco. Por conveniência, o conjunto de dados foi condensado para incluir apenas as colunas relevantes para treinar o modelo e fazer previsões. Visite o site a seguir para saber mais sobre o conjunto de dados.

Baixe o conjunto de dados Pontuações de Segurança do Restaurante e descompacte-o.

Cada linha no conjunto de dados contém informações sobre violações observadas durante uma inspeção do Departamento de Saúde e uma avaliação de risco da ameaça que essas violações apresentam à saúde e segurança pública.

TipoDeInspeção Descrição da Violação RiskCategory
Rotina – Não agendada Superfícies de contato alimentar inadequadamente limpas ou higienizadas Risco moderado
Nova Propriedade Infestação de vermes de alto risco Alto risco
Rotina – Não agendada Panos de limpeza sujos, armazenados de forma inadequada ou com uso de desinfetante inadequado Baixo risco
  • InspectionType: o tipo de inspeção. Isso pode ser uma inspeção pela primeira vez para um novo estabelecimento, uma inspeção de rotina, uma inspeção de reclamação e muitos outros tipos.
  • ViolationDescription: uma descrição da violação encontrada durante a inspeção.
  • RiskCategory: a gravidade do risco que uma violação representa para a saúde pública e a segurança.

A coluna label é aquela que você deseja prever. Ao executar uma tarefa de classificação, a meta é atribuir uma categoria (texto ou numérico). Nesse cenário de classificação, a gravidade da violação recebe o valor de baixo, moderado ou alto risco. Portanto, RiskCategory é o rótulo. São features as entradas que você dá ao modelo para prever o label. Nesse caso, o InspectionType e o ViolationDescription são usados como recursos ou entradas para prever a RiskCategory.

Criar arquivo de configuração do Construtor de Modelos

Ao adicionar pela primeira vez o Construtor de Modelos à solução, ele solicitará que você crie um mbconfig arquivo. O mbconfig arquivo controla tudo o que você faz no Construtor de Modelos para permitir que você reabra a sessão.

  1. No Gerenciador de Soluções, clique com o botão direito do mouse no projeto RestaurantViolations e selecione Adicionar>Modelo de Machine Learning.
  2. Nomeie o mbconfig projeto RestaurantViolationsPrediction e clique no botão Adicionar .

Escolha um cenário

Tela do cenário do Construtor de Modelos

Para treinar seu modelo, selecione na lista de cenários de machine learning disponíveis fornecidos pelo Construtor de Modelos. Nesse caso, o cenário é a classificação de dados.

  1. Para este exemplo, a tarefa é a classificação multiclasse. Na etapa Cenário do Construtor de Modelos, selecione o cenário de classificação de dados .

Carregar os dados

O Construtor de Modelos aceita dados de um banco de dados do SQL Server ou de um arquivo local em csv, tsvou txt formato.

  1. Na etapa de dados da ferramenta Construtor de Modelos, selecione SQL Server na seleção de tipo de fonte de dados.
  2. Selecione o botão Escolher fonte de dados .
    1. Na caixa de diálogo Escolher Fonte de Dados , selecione Arquivo de Banco de Dados do Microsoft SQL Server.
    2. Desmarque a caixa de seleção Sempre use esta seleção e clique em Continuar.
    3. Na caixa de diálogo Propriedades da Conexão , selecione Procurar e selecione o arquivo de RestaurantScores.mdf baixado.
    4. Selecione OK.
  3. Escolha Violações na lista suspensa Tabela.
  4. Escolha RiskCategory na lista suspensa Coluna a ser prevista (Rótulo).
  5. Deixe as seleções padrão nas opções de dados avançados.
  6. Clique no botão Próxima etapa para ir para a etapa de treinamento no Construtor de Modelos.

Treinar o modelo

A tarefa de machine learning usada para treinar o modelo de classificação de problemas neste tutorial é a classificação multiclasse. Durante o processo de treinamento de modelo, o Construtor de Modelos treina modelos separados usando diferentes algoritmos e configurações de classificação multiclasse para encontrar o modelo de melhor desempenho para seu conjunto de dados.

O tempo necessário para o modelo treinar é proporcional à quantidade de dados. O Model Builder seleciona automaticamente um valor padrão para Tempo para treinar (segundos) com base no tamanho da fonte de dados.

  1. O Construtor de Modelos define o valor de Tempo para treinar (segundos) como 60 segundos. O treinamento por um período mais longo permite que o Construtor de Modelos explore um número maior de algoritmos e uma combinação de parâmetros na pesquisa do melhor modelo.
  2. Clique em Iniciar Treinamento.

Durante todo o processo de treinamento, os dados de progresso são exibidos na Training results seção da etapa de treinamento.

  • O status exibe o status de conclusão do processo de treinamento.
  • A melhor precisão exibe a precisão do modelo com melhor desempenho encontrado pelo Model Builder até o momento. Maior precisão significa que o modelo previu mais corretamente nos dados de teste.
  • O melhor algoritmo exibe o nome do algoritmo de melhor desempenho executado encontrado pelo Construtor de Modelos até agora.
  • O último algoritmo exibe o nome do algoritmo usado mais recentemente pelo Construtor de Modelos para treinar o modelo.

Depois que o treinamento for concluído, o mbconfig arquivo terá o modelo gerado chamado RestaurantViolationsPrediction.zip após o treinamento e dois arquivos C# com ele:

  • RestaurantViolationsPrediction.consumption.cs: esse arquivo tem um método público que carregará o modelo e criará um mecanismo de previsão com ele e retornará a previsão.
  • RestaurantViolationsPrediction.training.cs: esse arquivo consiste no pipeline de treinamento que o Construtor de Modelos criou para criar o melhor modelo, incluindo todos os hiperparâmetros que ele usou.

Clique no botão Próxima etapa para navegar até a etapa de avaliação.

Avaliar o modelo

O resultado da etapa de treinamento será um modelo que teve o melhor desempenho. Na etapa de avaliação da ferramenta Construtor de Modelos, na seção Melhor modelo , conterá o algoritmo usado pelo modelo de melhor desempenho na entrada Modelo , juntamente com métricas para esse modelo em Precisão.

Além disso, na janela Saída do Visual Studio, haverá uma tabela de resumo contendo os principais modelos e suas métricas.

Esta seção também permitirá que você teste seu modelo executando uma única previsão. Ele oferecerá caixas de texto para preencher valores e você poderá clicar no botão Prever para obter uma previsão do melhor modelo. Por padrão, isso será preenchido por uma linha aleatória em seu conjunto de dados.

(Opcional) Consumir o modelo

Esta etapa terá modelos de projeto que você pode usar para consumir o modelo. Esta etapa é opcional e você pode escolher o método que melhor atende às suas necessidades sobre como atender ao modelo.

  • Aplicativo de Console
  • Web API

Aplicativo de Console

Ao adicionar um aplicativo de console à sua solução, você será solicitado a nomear o projeto.

  1. Nomeie o projeto de console RestaurantViolationsPrediction_Console.

  2. Clique em Adicionar à solução para adicionar o projeto à sua solução atual.

  3. Execute o aplicativo.

    A saída gerada pelo programa deve ser semelhante ao snippet abaixo:

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

Web API

Ao adicionar uma API Web à sua solução, você será solicitado a nomear o projeto.

  1. Nomeie o projeto da API Web RestaurantViolationsPrediction_API.

  2. Clique em Adicionar à solução* para adicionar o projeto à sua solução atual.

  3. Execute o aplicativo.

  4. Abra o PowerShell e insira o código a seguir em que PORT é a porta em que seu aplicativo está escutando.

    $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. Se tiver êxito, a saída deverá ser semelhante ao texto abaixo. A saída tem a RiskCategory prevista como Risco Moderado e tem as pontuações de cada um dos rótulos de entrada – Baixo Risco, Alto Risco e Risco Moderado.

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

Parabéns! Você criou com êxito um modelo de machine learning para categorizar o risco de violações de integridade usando o Construtor de Modelos. Você pode encontrar o código-fonte deste tutorial no repositório GitHub do dotnet/machinelearning-samples .

Recursos adicionais

Para saber mais sobre os tópicos mencionados neste tutorial, visite os seguintes recursos: