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 Model Builder para categorizar o nível de risco de violações de restaurantes encontradas durante inspeções de vigilância sanitária.

Neste tutorial, você aprenderá a:

  • Preparar e compreender os dados
  • Criar um arquivo de configuração do Model Builder
  • 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 ver uma lista de pré-requisitos e instruções de instalação, acesse o guia de instalação do Model Builder.

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

Este exemplo cria um aplicativo de console .NET Core em C# que categoriza o risco de violações de condições sanitárias usando um modelo de machine learning criado com o Model Builder. Encontre o código-fonte deste tutorial no repositório dotnet/machinelearning-samples do GitHub.

Criar um aplicativo de console

  1. Crie um aplicativo de console .NET Core em C# chamado "RestaurantViolations".

Preparar e compreender 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. Para conveniência, o conjunto de dados foi condensado para incluir apenas as colunas relevantes a fim de treinar o modelo e fazer previsões. Acesse o site a seguir para saber mais sobre o conjunto de dados.

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

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

InspectionType ViolationDescription RiskCategory
Rotina – Não agendada Superfícies de contato de alimentos limpas ou higienizadas de maneira inadequada Risco Moderado
Nova Propriedade Infestação de vermes de alto risco Alto Risco
Rotina – Não agendada Panos de limpeza não limpos ou armazenados corretamente ou desinfetante inadequado Baixo Risco
  • InspectionType: o tipo de inspeção. Essa pode ser uma primeira inspeção para um novo estabelecimento, uma inspeção de rotina, uma inspeção devido a uma reclamação e muitos outros tipos.
  • ViolationDescription: uma descrição da violação encontrada durante a inspeção.
  • RiskCategory: a severidade do risco que uma violação representa para a saúde pública e a segurança.

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

Criar um arquivo de configuração do Model Builder

Ao adicionar primeiro o Model Builder à solução, ele solicitará que você crie um arquivo mbconfig. O arquivo mbconfig controla tudo o que você faz no Model Builder 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. Dê ao projeto mbconfig o nome RestaurantViolationsPrediction e clique no botão Adicionar.

Escolha um cenário

Tela de cenário do Model Builder

Para treinar seu modelo, selecione um na lista de cenários disponíveis de machine learning fornecidos pelo Model Builder. Nesse caso, o cenário é Classificação de dados.

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

Carregar os dados

O Model Builder aceita dados de um banco de dados do SQL Server ou de um arquivo local no formato csv, tsv ou txt.

  1. Na etapa de dados da ferramenta Model Builder, selecione SQL Server na seleção do tipo de fonte de dados.
  2. Selecione o botão Escolher fonte de dados.
    1. Na caixa de diálogo Escolher a Fonte de Dados , selecione Arquivo de Banco de Dados do Microsoft SQL Server.
    2. Desmarque a caixa de seleção Sempre usar esta seleção e clique em Continuar.
    3. Na caixa de diálogo Propriedades da Conexão, selecione Procurar e escolha o arquivo 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. Mantenha as seleções padrão em Opções de dados avançadas.
  6. Clique no botão Próxima etapa para ir para a etapa de treinamento no Model Builder.

Treinar o modelo

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

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

  1. O Model Builder define o valor de Tempo de treinamento (segundos) como 60 segundos. O treinamento por um período maior permite que o Model Builder explore um número maior de algoritmos e uma combinação de parâmetros em busca do melhor modelo.
  2. Clique em Iniciar Treinamento.

Durante o processo de treinamento, os dados de progresso são exibidos na seção Training results 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 é previsto mais corretamente nos dados de teste.
  • O melhor algoritmo exibe o nome do algoritmo executado com melhor desempenho que foi encontrado pelo Model Builder até o momento.
  • O último algoritmo exibe o nome do algoritmo usado mais recentemente pelo Model Builder para treinar o modelo.

Depois que o treinamento for concluído, o arquivo mbconfig 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 Model Builder gerou para criar o melhor modelo, incluindo todos os hiperparâmetros usados.

Clique no botão Próxima etapa para ir para a etapa de avaliação.

Avaliar o modelo

O resultado da etapa de treinamento será um modelo que tinha o melhor desempenho. Na etapa de avaliação da ferramenta Model Builder, na seção Melhor modelo, conterá o algoritmo usado pelo modelo com melhor desempenho na entrada Modelo com as métricas desse modelo em Precisão.

Além disso, na Janela de Saída do Visual Studio, haverá uma tabela de resumo contendo os principais modelos e as respectivas 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 no conjunto de dados.

(Opcional) Consumir o modelo

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

  • Aplicativo de Console
  • API Web

Aplicativo de Console

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

  1. Dê ao projeto de console o nome RestaurantViolationsPrediction_Console.

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

  3. Executar o aplicativo.

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

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

API Web

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

  1. Dê ao projeto de API Web o nome RestaurantViolationsPrediction_API.

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

  3. Executar o aplicativo.

  4. Abra o PowerShell e insira o código a seguir, em que PORT é a porta que o seu aplicativo escuta.

    $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 houver sucesso, a saída será semelhante ao texto abaixo. A saída tem a RiskCategory prevista como Risco Moderado e 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 sucesso um modelo de machine learning para categorizar o risco de violações de condições sanitárias usando o Model Builder. Encontre o código-fonte deste tutorial no repositório dotnet/machinelearning-samples do GitHub.

Recursos adicionais

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