Tarefas de machine learning no ML.NET
Uma tarefa de de aprendizado de máquina é um tipo de previsão ou inferência que se baseia em ambos:
- O problema ou a pergunta
- Os dados disponíveis
Por exemplo, a tarefa de classificação atribui dados a categorias e a tarefa de clustering agrupa dados de acordo com a similaridade.
As tarefas de machine learning dependem de padrões nos dados em vez de serem explicitamente programadas.
Este artigo descreve as diferentes tarefas de machine learning que estão disponíveis em ML.NET e alguns casos de uso comuns.
Depois de decidir qual tarefa funciona para seu cenário, você precisará escolher o melhor algoritmo para treinar seu modelo. Os algoritmos disponíveis são listados na seção para cada tarefa.
Tarefas de classificação
Classificação binária
A classificação binária é uma tarefa de de aprendizado de máquina supervisionada usada para prever a qual das exatamente duas classes de (categorias) à qual uma instância de dados pertence. A entrada de um algoritmo de classificação é um conjunto de exemplos rotulados, em que cada rótulo é um inteiro de 0 ou 1. A saída de um algoritmo de classificação binária é um classificador, que você pode usar para prever a classe de novas instâncias sem rótulo. Exemplos de cenários de classificação binária incluem:
- Compreensão do sentimento de comentários do Twitter como "positivo" ou "negativo".
- Diagnosticar se um paciente tem uma determinada doença.
- Tomando a decisão de marcar um email como spam.
- Determinando se uma foto contém um item específico, como um cachorro ou uma fruta.
Para obter mais informações, consulte o artigo Classificação binária na Wikipédia.
Treinadores de classificação binária
Você pode treinar um modelo de classificação binária usando os seguintes algoritmos:
- AveragedPerceptronTrainer
- SdcaLogisticRegressionBinaryTrainer
- SdcaNonCalibratedBinaryTrainer
- SymbolicSgdLogisticRegressionBinaryTrainer
- LbfgsLogisticRegressionBinaryTrainer
- LightGbmBinaryTrainer
- FastTreeBinaryTrainer
- FastForestBinaryTrainer
- GamBinaryTrainer
- FieldAwareFactorizationMachineTrainer
- PriorTrainer
- LinearSvmTrainer
Entradas e saídas de classificação binária
Para obter melhores resultados com classificação binária, os dados de treinamento devem ser equilibrados (ou seja, números iguais de dados de treinamento positivos e negativos). Os valores ausentes devem ser tratados antes do treinamento.
Os dados da coluna de rótulo de entrada devem ser Boolean. Os dados da coluna de recursos de entrada devem ser um vetor de tamanho fixo de Single.
Esses treinadores geram as seguintes colunas:
Nome da coluna de saída | Tipo de coluna | Descrição |
---|---|---|
Score |
Single | A pontuação bruta calculada pelo modelo. |
PredictedLabel |
Boolean | O rótulo previsto com base no sinal da pontuação. Uma pontuação negativa é mapeada para false e uma pontuação positiva é mapeada para true . |
Classificação multiclasse
A classificação multiclasse é uma tarefa de aprendizado de máquina supervisionado que é usada para classificar uma instância de dados em uma das três ou mais classes de (categorias). A entrada de um algoritmo de classificação é um conjunto de exemplos rotulados. Cada rótulo normalmente começa como texto. Em seguida, ele é executado por meio do TermTransform, que o converte no tipo Chave (numérica). A saída de um algoritmo de classificação é um classificador, que você pode usar para prever a classe de novas instâncias sem rótulo. Exemplos de cenários de classificação multiclasse incluem:
- Categorizar voos como "antecipado", "pontual" ou "atrasado".
- Noções básicas sobre críticas de filmes como "positivas", "neutras" ou "negativas".
- Categorizando avaliações de hotéis como "localização", "preço" ou "limpeza", por exemplo.
Para obter mais informações, consulte o artigo Classificação multiclasse na Wikipédia.
Nota
Uma vs todas atualiza quaisquer aprendizes de classificação binária para atuar em conjuntos de dados multiclasse.
Treinadores de classificação multiclasse
Você pode treinar um modelo de classificação multiclasse usando os seguintes algoritmos de treinamento:
- TextClassificationTrainer
- LightGbmMulticlassTrainer
- SdcaMaximumEntropyMulticlassTrainer
- SdcaNonCalibratedMulticlassTrainer
- LbfgsMaximumEntropyMulticlassTrainer
- NaiveBayesMulticlassTrainer
- OneVersusAllTrainer
- PairwiseCouplingTrainer
Saídas e entradas de classificação multiclasse
Os dados da coluna de rótulo de entrada devem ser do tipo chave. A coluna de recursos deve ser um vetor de tamanho fixo de Single.
Este treinador produz o seguinte:
Nome de Saída | Tipo | Descrição |
---|---|---|
Score |
Vetor de Single | As pontuações de todas as classes. Valor mais alto significa maior probabilidade de cair na classe associada. Se o elemento i -th tiver o maior valor, o índice de rótulo previsto será i . Observe que i é um índice baseado em zero. |
PredictedLabel |
chave | O índice do rótulo previsto. Se seu valor for i , o rótulo real será a i ª categoria no tipo de rótulo de entrada com valor de chave. |
Classificação de texto
A classificação de texto é uma subcategoria de classificação multiclasse que lida especificamente com texto bruto. O texto apresenta desafios interessantes porque você precisa considerar o contexto e a semântica em que o texto ocorre. Dessa forma, pode ser difícil codificar o significado e o contexto.
Modelos de de aprendizado profundo surgiram como uma técnica promissora para resolver problemas de linguagem natural. Mais especificamente, um tipo de rede neural conhecida como transformador tornou-se a maneira predominante de resolver problemas de linguagem natural, como classificação de texto, tradução, resumo e resposta a perguntas. Algumas arquiteturas populares de transformador para tarefas de linguagem natural incluem:
- BERT (Representações de codificador bidirecional de transformadores)
- Abordagem de pré-treinamento robustamente otimizada do BERT (RoBERTa)
- GPT (Transformador generativo pré-treinado)
A API de classificação de texto ML.NET é baseada em TorchSharp. TorchSharp é uma biblioteca .NET que fornece acesso à biblioteca que alimenta o PyTorch. TorchSharp contém os blocos de construção para treinar redes neurais do zero no .NET. ML.NET abstrai parte da complexidade de TorchSharp ao nível do cenário. Ele usa uma versão pré-treinada do modelo NAS-BERT e o ajusta finamente com seus dados.
Para obter um exemplo de classificação de texto, consulte Introdução à API de classificação de texto.
Classificação de imagem
A classificação de imagem é uma tarefa de aprendizado de máquina supervisionada usada para prever a classe (categoria) de uma imagem. A entrada é um conjunto de exemplos rotulados. Cada rótulo normalmente começa como texto. Em seguida, ele é executado por meio do TermTransform, que o converte no tipo Chave (numérica). A saída do algoritmo de classificação de imagem é um classificador, que você pode usar para prever a classe de novas imagens. A tarefa de classificação de imagem é um tipo de classificação multiclasse. Exemplos de cenários de classificação de imagem incluem:
- Determinando a raça de um cão como um "Husky Siberiano", "Golden Retriever", "Poodle", etc.
- Determinando se um produto de fabricação está com defeito ou não.
- Determinar quais tipos de flores como "Rosa", "Girassol", etc.
Treinadores de classificação de imagem
Você pode treinar um modelo de classificação de imagem usando os seguintes algoritmos de treinamento:
Entradas e saídas de classificação de imagem
Os dados da coluna de rótulo de entrada devem ser do tipo chave. A coluna de recursos deve ser um vetor de tamanho variável de Byte.
Este treinador gera as seguintes colunas:
Nome de Saída | Tipo | Descrição |
---|---|---|
Score |
Single | As pontuações de todas as classes. Valor mais alto significa maior probabilidade de cair na classe associada. Se o elemento i -th tiver o maior valor, o índice de rótulo previsto será i . (i é um índice baseado em zero.) |
PredictedLabel |
Tipo de chave | O índice do rótulo previsto. Se seu valor for i , o rótulo real será a i ª categoria no tipo de rótulo de entrada com valor de chave. |
Regressão
A regressão é uma tarefa de aprendizado de máquina supervisionada usada para prever o valor da etiqueta a partir de um conjunto de características relacionadas. O rótulo pode ser de qualquer valor real e não é de um conjunto finito de valores como em tarefas de classificação. Algoritmos de regressão modelam a dependência do rótulo em seus recursos relacionados para determinar como o rótulo será alterado conforme os valores dos recursos forem variados. A entrada de um algoritmo de regressão é um conjunto de exemplos com rótulos de valores conhecidos. A saída de um algoritmo de regressão é uma função, que você pode usar para prever o valor do rótulo para qualquer novo conjunto de recursos de entrada. Exemplos de cenários de regressão incluem:
- Prever os preços das casas com base em atributos de casa, como número de quartos, localização ou tamanho.
- Prever os preços futuros das ações com base em dados históricos e tendências atuais do mercado.
- Prever vendas de um produto com base em orçamentos de publicidade.
- Localizando artigos relacionados em uma publicação (similaridade de frase).
Treinadores de regressão
Você pode treinar um modelo de regressão usando os seguintes algoritmos:
- SentenceSimilarityTrainer
- LbfgsPoissonRegressionTrainer
- LightGbmRegressionTrainer
- SdcaRegressionTrainer
- OlsTrainer
- OnlineGradientDescentTrainer
- FastTreeRegressionTrainer
- FastTreeTweedieTrainer
- FastForestRegressionTrainer
- GamRegressionTrainer
Entradas e saídas de regressão
Os dados da coluna de rótulo de entrada devem ser Single.
Os treinadores para esta tarefa produzem a seguinte saída:
Nome de Saída | Tipo | Descrição |
---|---|---|
Score |
Single | A pontuação bruta que foi prevista pelo modelo |
Clustering
Clustering é uma tarefa de aprendizado de máquina não supervisionado que é usada para agrupar instâncias de dados em clusters que contêm características semelhantes. O clustering também pode ser usado para identificar relações em um conjunto de dados que você pode não derivar logicamente por navegação ou observação simples. As entradas e saídas de um algoritmo de clustering dependem da metodologia escolhida. Você pode adotar uma abordagem baseada em distribuição, centroide, conectividade ou densidade. ML.NET atualmente dá suporte a uma abordagem baseada em centroide usando o clustering K-Means. Exemplos de cenários de clustering incluem:
- Noções básicas sobre segmentos de hóspedes de hotéis com base em hábitos e características de opções de hotéis.
- Identificar segmentos de clientes e dados demográficos para ajudar a criar campanhas publicitárias direcionadas.
- Categorizando o inventário com base nas métricas de fabricação.
Treinador de clustering
Você pode treinar um modelo de clustering usando o seguinte algoritmo:
Entradas e saídas de clustering
Os dados de recursos de entrada devem ser Single. Nenhum rótulo é necessário.
Este treinador produz o seguinte:
Nome de Saída | Tipo | Descrição |
---|---|---|
Score |
Vetor de Single | As distâncias do ponto de dados fornecido para todos os centroides do cluster. |
PredictedLabel |
Tipo de chave | O índice do cluster mais próximo previsto pelo modelo. |
Detecção de anomalias
A tarefa de detecção de anomalias cria um modelo de detecção de anomalias usando a PCA (análise de componente principal). A detecção de anomalias baseada em PCA ajuda você a criar um modelo em cenários em que é fácil obter dados de treinamento de uma classe, como transações válidas, mas difícil obter amostras suficientes das anomalias direcionadas.
Uma técnica estabelecida no aprendizado de máquina, a PCA é frequentemente usada na análise de dados exploratórios porque revela a estrutura interna dos dados e explica a variação nos dados. O PCA funciona analisando dados que contêm várias variáveis. Ele procura correlações entre as variáveis e determina a combinação de valores que melhor captura diferenças nos resultados. Esses valores de recurso combinados são usados para criar um espaço de recurso mais compacto chamado componentes principais.
A detecção de anomalias abrange muitas tarefas importantes no aprendizado de máquina:
- Identificando transações potencialmente fraudulentas.
- Padrões de aprendizagem que indicam que ocorreu uma intrusão de rede.
- Encontrando grupos anômalos de pacientes.
- Verificando valores inseridos em um sistema.
Como anomalias são eventos raros por definição, pode ser difícil coletar um exemplo representativo de dados a serem usados para modelagem. Os algoritmos incluídos nessa categoria foram especialmente projetados para enfrentar os principais desafios de criação e treinamento de modelos usando conjuntos de dados desequilibrados.
Treinador de detecção de anomalias
Você pode treinar um modelo de detecção de anomalias usando o seguinte algoritmo:
Entradas e saídas de detecção de anomalias
Os recursos de entrada devem ser um vetor de tamanho fixo de Single.
Este treinador produz o seguinte:
Nome de Saída | Tipo | Descrição |
---|---|---|
Score |
Single | A pontuação não negativa e ilimitada calculada pelo modelo de detecção de anomalias. |
PredictedLabel |
Boolean | true caso a entrada seja uma anomalia ou false se não for. |
Classificação
Uma tarefa de classificação constrói um classificador a partir de um conjunto de exemplos rotulados. Este conjunto de exemplo consiste em grupos de instâncias que podem ser pontuados com determinados critérios. Os rótulos de classificação são { 0, 1, 2, 3, 4 } para cada instância. O classificador é treinado para classificar novos grupos de instâncias com pontuações desconhecidas para cada instância. Os aprendizes de classificação do ML.NET são baseados na classificação de máquinas aprendidas.
Classificação de algoritmos de treinamento
Você pode treinar um modelo de classificação com os seguintes algoritmos:
Classificando entradas e saídas
O tipo de dados de rótulo de entrada deve ser do tipo chave ou Single. O valor do rótulo determina a relevância, em que valores mais altos indicam maior relevância. Se o rótulo for um tipo chave, o índice de chave será o valor de relevância, em que o menor índice é o menos relevante. Se o rótulo for um Single, valores maiores indicarão maior relevância.
Os dados do recurso devem ser um vetor de tamanho fixo de Single e a coluna de grupo de linha de entrada deve ser do tipo chave.
Este treinador produz o seguinte:
Nome de Saída | Tipo | Descrição |
---|---|---|
Score |
Single | A pontuação ilimitada calculada pelo modelo para determinar a predição. |
Recomendação
Uma tarefa de recomendação permite produzir uma lista de produtos ou serviços recomendados. O ML.NET usa a Fatoração matricial (MF), um algoritmo de filtragem colaborativa para as recomendações quando você tem dados históricos de classificação do produto em seu catálogo. Por exemplo, você tem dados históricos de classificação de filmes para seus usuários e deseja recomendar outros filmes que eles provavelmente assistirão em seguida.
Algoritmos de treinamento de recomendação
Você pode treinar um modelo de recomendação com o seguinte algoritmo:
Previsão
A tarefa de previsão usa dados de série temporal anteriores para fazer previsões sobre o comportamento futuro. Os cenários aplicáveis à previsão incluem previsão do tempo, previsões de vendas sazonais e manutenção preditiva.
Treinadores de previsão
Você pode treinar um modelo de previsão com o seguinte algoritmo:
Detecção de objetos
A detecção de objetos é uma tarefa de aprendizado de máquina supervisionada usada para prever a classe (categoria) de uma imagem, mas também fornece uma caixa delimitadora para onde essa categoria está dentro da imagem. Em vez de classificar um único objeto em uma imagem, a detecção de objetos pode detectar vários objetos dentro de uma imagem. Exemplos de detecção de objetos incluem:
- Detectando carros, placas ou pessoas em imagens de uma estrada.
- Detectando defeitos em imagens de produtos.
- Detectando áreas preocupantes em imagens de Raio-X.
Atualmente, o treinamento do modelo de detecção de objetos só está disponível no do Construtor de Modelos usando o Azure Machine Learning.