O que é o Construtor de Modelo e como ele funciona?

O Construtor de Modelo do ML.NET é uma extensão gráfica do Visual Studio intuitiva para criar, treinar e implantar modelos de aprendizado de máquina personalizados. Ele usa AutoML (machine learning automatizado) para explorar diferentes algoritmos e configurações de machine learning e ajudar você a encontrar aquele que se encaixa melhor em seu cenário.

Não é necessário ter experiência de aprendizado de máquina para usar o Construtor de Modelo. Você só precisa de um problema para resolver e alguns dados. O Construtor de Modelo gera o código para adicionar o modelo em seu aplicativo .NET.

Tela de cenário do Model Builder

Criar um projeto do Model Builder

Quando você inicia o Model Builder pela primeira vez, ele solicita que você dê um nome ao projeto e, em seguida, cria um arquivo de configuração mbconfig dentro do projeto. O arquivo mbconfig controla tudo o que você faz no Model Builder para permitir que você reabra a sessão.

Após o treinamento, três arquivos são gerados no arquivo *.mbconfig:

  • Model.consumption.cs: esse arquivo contém os esquemas ModelInput e ModelOutput, bem como a função Predict gerada para consumir o modelo.
  • Model.training.cs: esse arquivo contém o pipeline de treinamento (transformações de dados, algoritmo, hiperparâmetros de algoritmo) escolhido pelo Model Builder para treinar o modelo. Você pode usar esse pipeline para treinar novamente seu modelo.
  • Model.zip: esse é um arquivo zip serializado que representa o modelo de ML.NET treinado.

Ao criar seu arquivo mbconfig, você será solicitado a obter um nome. Esse nome é aplicado aos arquivos de consumo, treinamento e modelo. Nesse caso, o nome usado é Model.

Cenário

Você pode trazer vários cenários diferentes para o Construtor de Modelo para gerar um modelo de machine learning para seu aplicativo.

Um cenário é uma descrição do tipo de previsão que você deseja fazer usando seus dados. Por exemplo:

  • Preveja o volume de vendas futuras do produto com base em dados históricos de vendas.
  • Classifique sentimentos como positivos ou negativos com base nas avaliações dos cliente.
  • Detecte se uma transação bancária é fraudulenta.
  • Encaminhe problemas de comentários dos clientes para a equipe correta em sua empresa.

Cada cenário é mapeado para uma tarefa de aprendizado de máquina diferente, que inclui:

Tarefa Cenário
Classificação binária Classificação de dados
Classificação multiclasse Classificação de dados
Classificação de imagens Classificação de imagens
Classificação de texto Classificação de texto
Regressão Previsão de valor
Recomendação Recomendação
Previsão Previsão

Por exemplo, o cenário de classificação de sentimentos como positivos ou negativos se enquadraria na tarefa de classificação binária.

Para mais informações sobre as diferentes Tarefas de ML compatíveis com ML.NET, confira Tarefas de machine learning no ML.NET.

Qual cenário do aprendizado de máquina é adequado para mim?

No Model Builder, é necessário selecionar um cenário. O tipo de cenário depende de qual tipo de previsão você está tentando fazer.

Tabular

Classificação de dados

A classificação é usada para categorizar os dados.

Entrada de Exemplo

Saída de exemplo

SepalLength SepalWidth Comprimento da pétala Largura da Pétala Espécie
5.1 3,5 1.4 0,2 setosa
Espécies previstas
setosa
Previsão de valor

A previsão de valor, que se enquadra na tarefa de regressão, é usada para prever números.

Diagrama mostrando exemplos de regressão, como a previsão de preços, a previsão de vendas e a manutenção preditiva

Entrada de Exemplo

Saída de exemplo

vendor_id rate_code passenger_count trip_time_in_secs trip_distance payment_type fare_amount
CMT 1 1 1271 3.8 CRD 17.5
Taxa prevista
4.5

Recomendação

O cenário de recomendação prevê uma lista de itens sugeridos para um usuário específico com base no grau de semelhança de seus gostos com os de outros usuários".

Você poderá usar o cenário de recomendação quando tiver um conjunto de usuários e um conjunto de "produtos", como itens para compra, filmes, livros ou programas de TV, além de um conjunto de "classificações" dos usuários desses produtos.

Entrada de Exemplo

Saída de exemplo

UserId ProductId Classificação
1 2 4.2
Classificação prevista
4.5
Previsão

O cenário de previsão usa dados históricos com uma série temporal ou componente sazonal para ele.

Você pode usar o cenário de previsão para prever a demanda ou a venda de um produto.

Entrada de Exemplo

Saída de exemplo

Data SaleQty
1/1/1970 1000
Previsão de 3 dias
[1000,1001,1002]

Pesquisa Visual Computacional

Classificação de imagens

A classificação de imagem é usada para identificar imagens de diferentes categorias. Por exemplo, diferentes tipos de terreno, animais ou defeitos de fabricação.

Você pode usar o cenário de classificação de imagem se tiver um conjunto de imagens e quiser classificar as imagens em diferentes categorias.

Entrada de Exemplo

Saída de exemplo

Exibição de perfil do pug em pé

Rótulo previsto
Cachorro
Detecção de objetos

A detecção de objetos é usada para localizar e categorizar entidades dentro de imagens. Por exemplo, localizar e identificar carros e pessoas em uma imagem.

Use a detecção de objetos quando as imagens contiverem vários objetos de tipos diferentes.

Entrada de Exemplo

Saída de exemplo

Exibição de perfil do pug em pé

Exibição de perfil de pug em pé com caixa delimitadora e rótulo de cachorro

Processamento de linguagem natural

Classificação de texto

A classificação de texto categoriza a entrada de texto bruto.

Você pode usar o cenário de classificação de texto se tiver um conjunto de documentos ou comentários e você deseja classificá-los em diferentes categorias.

Entrada de exemplo

Exemplo de saída

Revisão
Gosto muito deste bife!
Sentimento
Positivo

Ambiente

Você pode treinar seu modelo de machine learning localmente em seu computador ou na nuvem no Azure, dependendo do cenário.

Ao treinar localmente, você trabalha dentro das restrições dos recursos do computador (CPU, memória e disco). Ao treinar na nuvem, você pode escalar verticalmente seus recursos para atender às demandas do seu cenário, em especial para grandes conjuntos de dados.

Cenário CPU local GPU local Azure
Classificação de dados ✔️
Previsão de valor ✔️
Recomendação ✔️
Previsão ✔️
Classificação de imagens ✔️ ✔️ ✔️
Detecção de objetos ✔️
Classificação de texto ✔️ ✔️

Dados

Depois de escolher seu tipo de cenário, o Model Builder solicita que você forneça um conjunto de dados. Os dados são usados para treinar, avaliar e escolher o melhor modelo para seu cenário.

Diagrama mostrando as etapas do Construtor de Modelos

O Model Builder dá suporte a conjuntos de dados nos formatos de banco de dados SQL, .tsv, .csv e .txt. Se você tiver um arquivo .txt, as colunas deverão ser separadas com ,, ; ou \t.

Se o conjunto de dados for composto por imagens, os tipos de arquivo com suporte serão .jpg e .png.

Para mais informações, confira Carregar dados de treinamento no Model Builder.

Escolha a saída para prever (rótulo)

Um conjunto de dados é uma tabela de linhas de exemplos de treinamento e colunas de atributos. Cada linha tem:

  • um rótulo (o atributo que você deseja prever)
  • recursos (atributos que são usados como entradas para prever o rótulo)

Para o cenário de previsão do preço das casas, os recursos podem ser:

  • Os metros quadrados da casa.
  • O número de quartos e banheiros.
  • O código postal.

O rótulo é o preço histórico de casas para essa linha de valores de metro quadrado, quarto e banheiro e código postal.

Tabela mostrando linhas e colunas de dados de preços de casas com recursos que consistem em quartos de tamanho de código postal e etiqueta de preço

Conjuntos de dados de amostra

Se você ainda não tiver seus próprios dados, experimente um desses conjuntos de dados:

Cenário Exemplo Dados Rótulo Recursos
classificação Prever anomalias de vendas dados de vendas do produto Vendas do Produto Mês
Prever o sentimento dos comentários do site dados de comentário do site Rótulo (0 quando o sentimento é negativo, 1 quando é positivo) Comentário, ano
Prever transações fraudulentas de cartão de crédito dados do cartão de crédito Classe (1 quando fraudulenta, caso contrário, 0) Quantidade, V1-V28 (recursos anônimos)
Prever o tipo de problema em um repositório GitHub dados de problema do GitHub Área Título, Descrição
Previsão de valor Prever o preço da tarifa de táxi dados de tarifas de táxi Tarifa Tempo da corrida, distância
Classificação de imagens Prever a categoria de uma flor imagens de flores O tipo de flor: margarida, dente-de-leão, rosas, girassóis, tulipas Os dados da imagem em si
Recomendação Prever filmes que alguém vai gostar classificações de filmes Usuários, filmes Classificações

Treinar

Depois de selecionar seu cenário, ambiente, dados e rótulo, o Model Builder treina o modelo.

O que é o treinamento?

O treinamento é um processo automático pelo qual Construtor de Modelo ensina seu modelo a responder perguntas para seu cenário. Depois de treinado, seu modelo pode fazer previsões com dados de entrada não vistos antes. Por exemplo, se estiver prevendo preços de casas e uma nova casa for oferecida no mercado, você poderá prever o preço de venda.

Como o Construtor de Modelo usa aprendizado de máquina automatizado (AutoML), ele não requer nenhuma entrada ou ajuste de você durante o treinamento.

Por quanto tempo devo treinar?

O Model Builder usa o AutoML para explorar vários modelos para encontrar o modelo de melhor desempenho.

Períodos de treinamento mais longos permitem que o AutoML explore mais modelos com uma variedade maior de configurações.

A tabela a seguir resume o tempo médio gasto para obter um bom desempenho para um conjunto de conjuntos de dados de exemplo em um computador local.

Tamanho do conjunto de dados Tempo médio para treinar
0 a 10 MB 10 s
10 a 100 MB 10 min
100 a 500 MB 30 min
500 a 1 GB 60 min
Mais de 1 GB Mais de 3 horas

Esses números são apenas um guia. A duração exata do treinamento depende:

  • O número de recursos (colunas) usados como entrada para o modelo.
  • Do tipo de colunas.
  • A tarefa de ML.
  • O desempenho da CPU, do disco e da memória do computador usados para treinamento.

Geralmente, é recomendável que você use mais de 100 linhas como conjuntos de dados; menos do que isso pode não produzir resultados.

Avaliar

A avaliação é o processo de medir o quão bom é o modelo. O Model Builder usa o modelo treinado para fazer previsões com novos dados de teste e, em seguida, medir quão boas são as previsões.

O Construtor de Modelo divide os dados de treinamento em um conjunto de treinamento e um conjunto de teste. Os dados de treinamento (80%) são usados para treinar seu modelo e os dados de teste (20%) são retidos para avaliar seu modelo.

Como posso entender o desempenho do meu modelo?

Um cenário é mapeado para uma tarefa de machine learning. Cada tarefa de ML tem um conjunto próprio de métricas de avaliação.

Previsão de valor

A métrica padrão para problemas de previsão de valor é RSquared, o valor de intervalos RSquared entre 0 e 1. 1 é o melhor valor possível ou, em outras palavras, quanto mais próximo o valor de RSquared de 1, melhor o desempenho do modelo.

Outras métricas relatadas, como perda absoluta, perda quadrada e perda de RMS, são métricas adicionais, que podem ser usadas para entender como seu modelo está se saindo e compará-lo com outros modelos de previsão de valor.

Classificação (2 categorias)

A métrica padrão para problemas de classificação é a precisão. A precisão define a proporção de previsões corretas feitas pelo seu modelo sobre o conjunto de dados de teste. Quanto mais próximo de 100% ou 1,0, melhor.

Outras métricas relatadas, como AUC (Área sob a curva), que mede a taxa de verdadeiros positivos versus a taxa de falsos positivos, devem ser maiores que 0,50 para que os modelos sejam aceitáveis.

Métricas adicionais, como a medida F1, podem ser usadas para controlar o equilíbrio entre Precisão e Recall.

Classificação (mais de três categorias)

A métrica padrão para classificação de várias classes é a microprecisão. Quanto mais perto a microprecisão for de 100%. ou 1,0, melhor será.

Outra métrica importante para classificação de várias classes é a macroprecisão; semelhante à microprecisão, quanto mais perto de 1,0, melhor. Uma boa maneira de pensar sobre esses dois tipos de precisão é:

  • Microprecisão: com que frequência um tíquete de entrada é classificado para a equipe certa?
  • Macroprecisão: para uma equipe de média, com que frequência um tíquete de entrada é correto para sua equipe?

Mais informações sobre métricas de avaliação

Para obter mais informações, consulte métricas de avaliação de modelo.

Aprimorar

Se a sua pontuação de desempenho do modelo não for tão boa quanto deseja, você poderá:

  • Treinar por um período maior de tempo. Com mais tempo, o mecanismo de machine learning automatizado experimenta com mais algoritmos e configurações.

  • Adicionar mais dados. Às vezes, a quantidade de dados não é suficiente para treinar um modelo de machine learning de alta qualidade. Isso é especialmente verdadeiro com conjuntos de dados que têm um pequeno número de exemplos.

  • Balancear seus dados. Para tarefas de classificação, certifique-se de que o conjunto de treinamento esteja equilibrado nas categorias. Por exemplo, se você tiver quatro classes para 100 exemplos de treinamento e as duas primeiras classes (tag1 e tag2) forem usadas para 90 registros, mas as outras duas (tag3 e tag4) forem usadas apenas nos 10 registros restantes, a falta de dados balanceados poderá fazer com que seu modelo tenha dificuldades para prever corretamente o tag3 ou o tag4.

Consumir

Após a fase de avaliação, o Construtor de Modelo gera um arquivo de modelo e o código que você pode usar para adicionar o modelo ao seu aplicativo. Modelos do ML.NET são salvos como um arquivo zip. O código para carregar e usar o modelo é adicionado como um novo projeto em sua solução. O Construtor de Modelo também adiciona um aplicativo de console de exemplo que você pode executar para ver seu modelo em ação.

Além disso, o Model Builder oferece a opção de criar projetos que consomem seu modelo. Atualmente, o Model Builder criará os seguintes projetos:

  • Aplicativo de console: cria um aplicativo de console .NET para fazer previsões do modelo.
  • API Web: cria uma API Web do ASP.NET Core que permite consumir seu modelo pela Internet.

O que vem a seguir?

Instale a extensão do Visual Studio do Model Builder.

Experimente a previsão de preço ou qualquer cenário de regressão.