Compartilhar via


Tutorial: Prever os preços usando regressão com o Model Builder

Saiba como usar o Construtor de Modelo do ML.NET para criar um modelo de regressão e prever preços. O aplicativo de console do .NET que você desenvolve neste tutorial prevê as tarifas de táxi com base em dados históricos de tarifas de táxi em Nova York.

O modelo de previsão de preço do Construtor de Modelo pode ser usado em qualquer cenário que exija um valor de previsão numérico. Exemplos de cenários incluem: previsão de preço, previsão de demanda e previsão de vendas de casas.

Neste tutorial, você aprenderá a:

  • Preparar e compreender os dados
  • Criar um arquivo de configuração do Model Builder
  • Escolha um cenário
  • Carregar os 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 Modelo.

Criar um aplicativo de console

  1. Crie um Aplicativo de Console do .NET Core de C# chamado “TaxiFarePrediction”. Verifique se a opção Colocar a solução e o projeto no mesmo diretório está desmarcada (VS 2019).

Preparar e compreender os dados

  1. Crie um diretório chamado Data no projeto para armazenar os arquivos do conjunto de dados.

  2. O conjunto de dados usado para treinar e avaliar o modelo de machine learning pertence originalmente ao conjunto de dados Corrida de Táxi da NYC TLC.

    1. Para baixar o conjunto de dados, navegue até o link de download taxi-fare-train.csv.

    2. Quando a página for carregada, clique com o botão direito do mouse em qualquer lugar da página e escolha Salvar como.

    3. Use a opção Salvar como Diálogo para salvar o arquivo na pasta Dados criada na etapa anterior.

  3. No Gerenciador de Soluções, clique com o botão direito do mouse no arquivo taxi-fare-train.csv e selecione Propriedades. Em Avançado, altere o valor de Copiar para Diretório de Saída para Copiar se for mais novo.

Cada linha no conjunto de dados taxi-fare-train.csv contém os detalhes de corridas feitas por um táxi.

  1. Abra o conjunto de dados taxi-fare-train.csv

    O conjunto de dados fornecido contém as seguintes colunas:

    • vendor_id: o ID do taxista é um recurso.
    • rate_code: o tipo de tarifa da viagem de táxi é um recurso.
    • passenger_count: o número de passageiros na viagem é um recurso.
    • trip_time_in_secs: a quantidade de tempo que a viagem levou. Você deseja prever a tarifa da viagem antes de sua conclusão. No momento, você não sabe a duração da viagem. Portanto, o tempo da viagem não é um recurso e você excluirá essa coluna do modelo.
    • trip_distance: a distância da viagem é um recurso.
    • payment_type: o método de pagamento (dinheiro ou cartão de crédito) é um recurso.
    • fare_amount: a tarifa total de táxi paga é o rótulo.

O label é a coluna que você deseja prever. Ao executar uma tarefa de regressão, o objetivo é prever um valor numérico. Nesse cenário de previsão de preço, o custo de uma corrida de táxi está sendo previsto. Portanto, o fare_amount é o rótulo. Os features identificados são as entradas que você atribui ao modelo para prever o label. Nesse caso, o resto das colunas, exceto trip_time_in_secs, é usado como recursos ou entradas para prever o valor da tarifa.

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 TaxiFarePrediction e selecione Adicionar>Modelo de machine learning....
  2. Nomeie o projeto mbconfigTaxiFarePrediction e clique no botão Adicionar.

Escolha um cenário

Tela de cenário do Model Builder

Para treinar seu modelo, você precisa selecionar na lista de cenários disponíveis de aprendizado de máquina fornecidos pelo Construtor de Modelo. Nesse caso, o cenário é Value prediction.

  1. Na etapa de cenário da ferramenta Model Builder, selecione o cenário de Previsão de valor.

Selecione o ambiente

O Model Builder pode executar o treinamento em ambientes diferentes, dependendo do cenário selecionado.

  1. Confirme se o item Local (CPU) está selecionado e clique no botão Próxima etapa.

Carregar os dados

O Construtor de Modelo aceita dados de duas fontes: um banco de dados do SQL Server ou um arquivo local no formato csv ou tsv.

  1. Na etapa de dados da ferramenta Model Builder, selecione Arquivo na seleção do tipo de fonte de dados.
  2. Selecione o botão Procurar ao lado da caixa de texto e use o Explorador de Arquivos para procurar e selecionar o taxi-fare-test.csv no diretório de Dados
  3. Escolha fare_amount na lista suspensa Coluna a ser prevista (Etiqueta).
  4. Clique no link Opções avançadas de dados.
  5. Na guia Configurações da coluna, selecione a lista suspensa Finalidade na coluna trip_time_in_secs e selecione Ignorar para excluí-la como um recurso durante o treinamento. Clique no botão Salvar para fechar a caixa de diálogo.
  6. Clique no botão Próxima etapa.

Treinar o modelo

A tarefa de aprendizado de máquina usada para treinar o modelo de previsão de preço neste tutorial é a regressão. Durante o processo de treinamento de modelo, o Construtor de Modelo treina modelos separados usando algoritmos de regressão diferentes e configurações para localizar o modelo com melhor desempenho para seu conjunto de dados.

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

  1. Deixe o valor padrão como está para o Tempo para treinar (segundos) a menos que você prefira treinar por mais tempo.
  2. Selecione 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 TaxiFarePrediction.zip após o treinamento e dois arquivos C# com ele:

  • TaxiFare.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.
  • TaxiFare.training.cs: esse arquivo consiste no pipeline de treinamento que o Model Builder criou para construir 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 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 junto com as métricas para esse modelo no RSquared.

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 em seu conjunto de dados.

Se você não estiver satisfeito com suas métricas de precisão, algumas maneiras fáceis de experimentar e aprimorar a precisão do modelo serão aumentar a quantidade de tempo para treinar o modelo ou usar mais dados. Caso contrário, clique em Próxima etapa para navegar até a etapa de consumo.

(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ê será solicitado a nomear o projeto.

  1. Nomeie o projeto do console TaxiFare_Console.

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

  3. Executar o aplicativo.

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

    Predicted Fare: 15.020833
    

API Web

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

  1. Nomeie o projeto da API Web TaxiFare_API.

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

  3. Executar o aplicativo.

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

    $body = @{
        Vendor_id="CMT"
        Rate_code=1.0
        Passenger_count=1.0
        Trip_distance=3.8
        Payment_type="CRD"
    }
    
    Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"
    
  5. Se houver êxito, a saída deverá ser semelhante ao texto abaixo:

    score
    -----
    15.020833
    

Próximas etapas

Neste tutorial, você aprendeu a:

  • Preparar e compreender os dados
  • Escolha um cenário
  • Carregar os dados
  • Treinar o modelo
  • Avaliar o modelo
  • Usar o modelo para previsões

Recursos adicionais

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