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

Saiba como utilizar o ML.NET Model Builder para criar um modelo de regressão para prever preços. A aplicação de consola .NET que desenvolve neste tutorial prevê tarifas de táxi com base em dados históricos de tarifas de táxi de Nova Iorque.

O modelo de predição de preços do Model Builder pode ser utilizado para qualquer cenário que exija um valor de predição numérica. Os cenários de exemplo incluem: predição do preço das casas, predição da procura e previsão de vendas.

Neste tutorial, ficará a saber como:

  • Preparar e compreender os dados
  • Criar um ficheiro de Configuração do Model Builder
  • Escolher um cenário
  • Carregar os dados
  • Preparar o modelo
  • Avaliar o modelo
  • Utilizar o modelo para predições

Pré-requisitos

Para obter uma lista de pré-requisitos e instruções de instalação, visite o Guia de instalação do Model Builder.

Criar uma aplicação de consola

  1. Crie uma Aplicação de Consola C# .NET Core denominada "TaxiFarePrediction". Certifique-se de que Colocar a solução e o projeto no mesmo diretório está desmarcado (VS 2019).

Preparar e compreender os dados

  1. Crie um diretório com o nome Dados no seu projeto para armazenar os ficheiros do conjunto de dados.

  2. O conjunto de dados utilizado para preparar e avaliar o modelo de machine learning é originalmente do conjunto de dados Viagem de Táxi TLC de NYC.

    1. Para transferir o conjunto de dados, navegue para a ligação de transferênciataxi-fare-train.csv.

    2. Quando a página for carregada, clique com o botão direito do rato em qualquer parte da página e selecione Guardar como.

    3. Utilize a Caixa de Diálogo Guardar Como para guardar o ficheiro na pasta Dados que criou no passo anterior.

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

Cada linha no taxi-fare-train.csv conjunto de dados contém detalhes das viagens efetuadas por um táxi.

  1. Abrir o conjunto de dadostaxi-fare-train.csv

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

    • vendor_id: O ID do fornecedor de táxis é uma funcionalidade.
    • rate_code: O tipo de tarifa da viagem de táxi é uma característica.
    • passenger_count: O número de passageiros na viagem é uma característica.
    • trip_time_in_secs: O tempo que a viagem demorou. Quer prever a tarifa da viagem antes de a viagem estar concluída. Naquele momento, não sabes quanto tempo demoraria a viagem. Assim, o tempo de viagem não é uma funcionalidade e irá excluir esta coluna do modelo.
    • trip_distance: A distância da viagem é uma característica.
    • payment_type: O método de pagamento (dinheiro ou cartão de crédito) é uma funcionalidade.
    • fare_amount: A tarifa total de táxi paga é a etiqueta.

É label a coluna que pretende prever. Ao realizar uma tarefa de regressão, o objetivo é prever um valor numérico. Neste cenário de predição de preços, está a ser previsto o custo de uma viagem de táxi. Por conseguinte, a fare_amount é a etiqueta. As identificadas features são as entradas que dá ao modelo para prever o label. Neste caso, o resto das colunas com exceção de trip_time_in_secs são utilizadas como funcionalidades ou entradas para prever o montante da tarifa.

Criar Ficheiro de Configuração do Model Builder

Quando adicionar o Model Builder pela primeira vez à solução, irá pedir-lhe para criar um mbconfig ficheiro. O mbconfig ficheiro controla tudo o que faz no Model Builder para permitir que reabra a sessão.

  1. Em Explorador de Soluções, clique com o botão direito do rato no projeto TaxiFarePrediction e selecioneAdicionar>Modelo de Machine Learning....
  2. Atribua um nome ao mbconfig projeto TaxiFarePrediction e clique no botão Adicionar .

Escolher um cenário

Ecrã de Cenário do Model Builder

Para preparar o modelo, tem de selecionar a partir da lista de cenários de machine learning disponíveis fornecidos pelo Model Builder. Neste caso, o cenário é Value prediction.

  1. No passo do cenário da ferramenta Model Builder, selecione Cenário de predição de valor .

Selecione o ambiente

O Model Builder pode executar a preparação em diferentes ambientes, consoante o cenário selecionado.

  1. Confirme que o Local (CPU) item está selecionado e clique no botão Passo seguinte .

Carregar os dados

O Model Builder aceita dados de duas origens, uma base de dados SQL Server ou um ficheiro local no formato csv ou tsv.

  1. No passo de dados da ferramenta Model Builder, selecione Ficheiro na seleção do tipo de origem de dados.
  2. Selecione o botão Procurar junto à caixa de texto e utilize Explorador de Ficheiros para procurar e selecionar o taxi-fare-test.csv no diretório Dados
  3. Selecione fare_amount na lista pendente Coluna a prever (Etiqueta).
  4. Clique na ligação Opções de dados avançadas .
  5. No separador Definições da coluna, selecione a lista pendente Objetivos da coluna trip_time_in_secs e selecione Ignorar para a excluir como uma funcionalidade durante a preparação. Clique no botão Guardar para fechar a caixa de diálogo.
  6. Clique no botão Passo seguinte .

Preparar o modelo

A tarefa de machine learning utilizada para preparar o modelo de predição de preços neste tutorial é a regressão. Durante o processo de preparação do modelo, o Model Builder prepara modelos separados através de diferentes algoritmos e definições de regressão para encontrar o modelo com melhor desempenho para o seu conjunto de dados.

O tempo necessário para o modelo ser preparado é proporcional à quantidade de dados. O Model Builder seleciona automaticamente um valor predefinido para Time to train (seconds) com base no tamanho da sua origem de dados.

  1. Deixe o valor predefinido tal como para Tempo para preparar (segundos), a menos que prefira preparar durante mais tempo.
  2. Selecione Iniciar Formação.

Ao longo do processo de preparação, os dados de progresso são apresentados na Training results secção do passo de preparação.

  • O estado apresenta o estado de conclusão do processo de preparação.
  • A melhor precisão apresenta a precisão do modelo com melhor desempenho encontrado até agora pelo Model Builder. Maior precisão significa que o modelo previu mais corretamente os dados de teste.
  • O melhor algoritmo apresenta o nome do algoritmo de melhor desempenho executado até agora pelo Model Builder.
  • O último algoritmo apresenta o nome do algoritmo utilizado mais recentemente pelo Model Builder para preparar o modelo.

Assim que a preparação estiver concluída, o mbconfig ficheiro terá o modelo gerado chamado TaxiFarePrediction.zip após a preparação e dois ficheiros C# com o mesmo:

  • TaxiFare.consumption.cs: este ficheiro tem um método público que irá carregar o modelo e criar um motor de predição com o mesmo e devolver a predição.
  • TaxiFare.training.cs: este ficheiro consiste no pipeline de preparação que o Model Builder criou para criar o melhor modelo, incluindo os hiperparâmetros que utilizou.

Clique no botão Passo seguinte para navegar para o passo de avaliação.

Avaliar o modelo

O resultado do passo de preparação será um modelo que teve o melhor desempenho. No passo de avaliação da ferramenta Model Builder, na secção Melhor modelo , irá conter o algoritmo utilizado pelo modelo de melhor desempenho na entrada Modelo juntamente com as métricas desse modelo em RSquared.

Além disso, na janela Saída do Visual Studio, existirá uma tabela de resumo que contém os principais modelos e as respetivas métricas.

Esta secção também lhe permitirá testar o modelo ao realizar uma única predição. Irá oferecer caixas de texto para preencher valores e pode clicar no botão Prever para obter uma predição do melhor modelo. Por predefinição, esta ação será preenchida por uma linha aleatória no conjunto de dados.

Se não estiver satisfeito com as métricas de precisão, algumas formas fáceis de tentar melhorar a precisão do modelo são aumentar a quantidade de tempo para preparar o modelo ou utilizar mais dados. Caso contrário, clique em Passo seguinte para navegar para o passo de consumo.

(Opcional) Consumir o modelo

Este passo terá modelos de projeto que pode utilizar para consumir o modelo. Este passo é opcional e pode escolher o método mais adequado às suas necessidades sobre como servir o modelo.

  • Aplicação de Consola
  • API Web

Aplicação de Consola

Ao adicionar uma aplicação de consola à sua solução, ser-lhe-á pedido para atribuir um nome ao projeto.

  1. Atribua o nome TaxiFare_Console projeto da consola.

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

  3. Execute a aplicação.

    O resultado gerado pelo programa deve ter um aspeto semelhante ao fragmento abaixo:

    Predicted Fare: 15.020833
    

API Web

Ao adicionar uma API Web à sua solução, ser-lhe-á pedido que atribua um nome ao projeto.

  1. Dê o nome TaxiFare_API ao projeto da API Web.

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

  3. Execute a aplicação.

  4. Abra o PowerShell e introduza o seguinte código em que PORT é a porta em que a sua aplicação está a escutar.

    $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 for bem-sucedido, o resultado deverá ter um aspeto semelhante ao texto abaixo:

    score
    -----
    15.020833
    

Passos Seguintes

Neste tutorial, ficou a saber como:

  • Preparar e compreender os dados
  • Escolher um cenário
  • Carregar os dados
  • Preparar o modelo
  • Avaliar o modelo
  • Utilizar o modelo para predições

Recursos Adicionais

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