Como escolher um algoritmo ML.NET

Para cada tarefa ML.NET, há vários algoritmos de treinamento para escolher. Qual escolher depende do problema que você está tentando resolver, das características dos seus dados e dos recursos de computação e armazenamento disponíveis. É importante notar que treinar um modelo de aprendizado de máquina é um processo iterativo. Pode ser necessário experimentar vários algoritmos para encontrar o que funciona melhor.

Os algoritmos operam em recursos. As funcionalidades são valores numéricos calculados a partir dos seus dados de entrada. Eles são entradas ideais para algoritmos de aprendizado de máquina. Você transforma seus dados de entrada brutos em recursos usando uma ou mais transformações de dados. Por exemplo, os dados de texto são transformados em um conjunto de contagens de palavras e contagens de combinação de palavras. Uma vez que os recursos tenham sido extraídos de um tipo de dados brutos usando transformações de dados, eles são chamados de featurizados. Por exemplo, texto featurizado ou dados de imagem featurizados.

Treinador = Algoritmo + Tarefa

Um algoritmo é a matemática que executa para produzir um modelo. Diferentes algoritmos produzem modelos com características diferentes.

Com ML.NET, o mesmo algoritmo pode ser aplicado a diferentes tarefas. Por exemplo, a Ascensão de Coordenadas Duplas Estocásticas pode ser usada para Classificação Binária, Classificação Multiclasse e Regressão. A diferença está em como a saída do algoritmo é interpretada para corresponder à tarefa.

Para cada combinação de algoritmo/tarefa, ML.NET fornece um componente que executa o algoritmo de treinamento e faz a interpretação. Esses componentes são chamados de treinadores. Por exemplo, o SdcaRegressionTrainer usa o algoritmo StochasticDualCoordinatedAscent aplicado à tarefa Regression .

Algoritmos lineares

Os algoritmos lineares produzem um modelo que calcula pontuações a partir de uma combinação linear dos dados de entrada e um conjunto de pesos. Os pesos são parâmetros do modelo estimados durante o treino.

Algoritmos lineares funcionam bem para recursos que são linearmente separáveis.

Antes de treinar com um algoritmo linear, as características devem ser normalizadas. Isso evita que um recurso tenha mais influência sobre o resultado do que outros.

Em geral, os algoritmos lineares são escaláveis, rápidos, baratos de treinar e baratos de prever. Eles são dimensionados pelo número de recursos e aproximadamente pelo tamanho do conjunto de dados de treinamento.

Algoritmos lineares fazem várias passagens sobre os dados de treinamento. Se o conjunto de dados couber na memória, adicionar um ponto de verificação de cache ao pipeline de ML.NET antes de anexar o instrutor tornará o treinamento mais rápido.

Perceptron médio

Melhor para classificação de texto.

Formador Task ONNX Exportável
AveragedPerceptronTrainer Classificação binária Sim

Subida coordenada dupla estocástica

O ajuste não é necessário para um bom desempenho padrão.

Formador Task ONNX Exportável
SdcaLogisticRegressionBinaryTrainer Classificação binária Sim
SdcaNonCalibratedBinaryTrainer Classificação binária Sim
SdcaMaximumEntropyMulticlassTrainer Classificação multiclasse Sim
SdcaNonCalibratedMulticlassTrainer Classificação multiclasse Sim
SdcaRegressionTrainer Regressão Sim

L-BFGS

Use quando o número de recursos for grande. Produz estatísticas de treinamento de regressão logística, mas não escala tão bem quanto o AveragedPerceptronTrainer.

Formador Task ONNX Exportável
LbfgsLogisticRegressionBinaryTrainer Classificação binária Sim
LbfgsMaximumEntropyMulticlassTrainer Classificação multiclasse Sim
LbfgsPoissonRegressionTrainer Regressão Sim

Descida simbólica do gradiente estocástico

Treinador de classificação binária linear mais rápido e preciso. Dimensiona bem com o número de processadores.

Formador Task ONNX Exportável
SymbolicSgdLogisticRegressionBinaryTrainer Classificação binária Sim

Descida de gradiente online

Implementa a descida de gradiente estocástico padrão (sem lote), com uma escolha de funções de perda e uma opção para atualizar o vetor de peso usando a média dos vetores vistos ao longo do tempo.

Formador Task ONNX Exportável
OnlineGradientDescentTrainer Regressão Sim

Algoritmos da árvore de decisão

Os algoritmos da árvore de decisão criam um modelo que contém uma série de decisões: efetivamente um fluxograma através dos valores de dados.

Os recursos não precisam ser linearmente separáveis para usar esse tipo de algoritmo. E os recursos não precisam ser normalizados, porque os valores individuais no vetor de recurso são usados independentemente no processo de decisão.

Os algoritmos da árvore de decisão são geralmente muito precisos.

Com exceção dos modelos aditivos generalizados (GAMs), os modelos de árvore podem não ter explicabilidade quando o número de recursos é grande.

Os algoritmos da árvore de decisão tomam mais recursos e não escalam tão bem quanto os lineares. Eles têm um bom desempenho em conjuntos de dados que podem caber na memória.

Árvores de decisão impulsionadas são um conjunto de pequenas árvores onde cada árvore pontua os dados de entrada e passa a pontuação para a próxima árvore para produzir uma pontuação melhor, e assim por diante, onde cada árvore no conjunto melhora em relação à anterior.

Máquina impulsionada por gradiente leve

Mais rápido e preciso dos treinadores de árvore de classificação binária. Altamente sintonizável.

Formador Task ONNX Exportável
LightGbmBinaryTrainer Classificação binária Sim
LightGbmMulticlassTrainer Classificação multiclasse Sim
LightGbmRegressionTrainer Regressão Sim
LightGbmRankingTrainer Classificação Não

Árvore rápida

Use para dados de imagem featurizados. Resiliente a dados desequilibrados. Altamente sintonizável.

Formador Task ONNX Exportável
FastTreeBinaryTrainer Classificação binária Sim
FastTreeRegressionTrainer Regressão Sim
FastTreeTweedieTrainer Regressão Sim
FastTreeRankingTrainer Classificação Não

Floresta rápida

Funciona bem com dados barulhentos.

Formador Task ONNX Exportável
FastForestBinaryTrainer Classificação binária Sim
FastForestRegressionTrainer Regressão Sim

Modelo aditivo generalizado (GAM)

Ideal para problemas que funcionam bem com algoritmos de árvore, mas onde a explicabilidade é uma prioridade.

Formador Task ONNX Exportável
GamBinaryTrainer Classificação binária Não
GamRegressionTrainer Regressão Não

Fatoração matricial

Fatoração matricial

Usado para filtragem colaborativa em recomendação.

Formador Task ONNX Exportável
MatrixFactorizationTrainer Recomendação Não

Máquina de fatoração com reconhecimento de campo

Ideal para dados categóricos esparsos, com grandes conjuntos de dados.

Formador Task ONNX Exportável
FieldAwareFactorizationMachineTrainer Classificação binária Não

Meta algoritmos

Estes formadores criam um treinador multiclasse a partir de um treinador binário. Use com AveragedPerceptronTrainer, LbfgsLogisticRegressionBinaryTrainer, SymbolicSgdLogisticRegressionBinaryTrainer, , LightGbmBinaryTrainer, FastForestBinaryTrainerFastTreeBinaryTrainer, GamBinaryTrainer.

Um contra todos

Este classificador multiclasse treina um classificador binário para cada classe, o que distingue essa classe de todas as outras classes. É limitado em escala pelo número de classes a categorizar.

Formador Task ONNX Exportável
OneVersusAllTrainer Classificação multiclasse Sim

Acoplamento em pares

Este classificador multiclasse treina um algoritmo de classificação binária em cada par de classes. É limitado em escala pelo número de classes, pois cada combinação de duas classes deve ser treinada.

Formador Task ONNX Exportável
PairwiseCouplingTrainer Classificação multiclasse Não

K-Meios

Usado para clustering.

Formador Task ONNX Exportável
KMeansTrainer Clustering Sim

Análise de componentes principais

Usado para deteção de anomalias.

Formador Task ONNX Exportável
RandomizedPcaTrainer Deteção de anomalias Não

Naive Bayes

Use esse algoritmo de classificação de várias classes quando os recursos forem independentes e o conjunto de dados de treinamento for pequeno.

Formador Task ONNX Exportável
NaiveBayesMulticlassTrainer Classificação multiclasse Sim

Formador Prévio

Use este algoritmo de classificação binária para avaliar o desempenho de outros treinadores. Para ser eficaz, as métricas dos outros treinadores devem ser melhores do que as do treinador anterior.

Formador Task ONNX Exportável
PriorTrainer Classificação binária Sim

Máquinas vetoriais de suporte

As máquinas vetoriais de suporte (SVMs) são uma classe extremamente popular e bem pesquisada de modelos de aprendizagem supervisionada, que podem ser usados em tarefas de classificação linear e não linear.

Pesquisas recentes se concentraram em maneiras de otimizar esses modelos para escalar eficientemente para conjuntos de treinamento maiores.

Linear SVM

Prediz um destino usando um modelo de classificação binária linear treinado sobre dados rotulados booleanos. Alterna entre etapas de descida de gradiente estocástico e etapas de projeção.

Formador Task ONNX Exportável
LinearSvmTrainer Classificação binária Sim

SVM profundo local

Prediz um destino usando um modelo de classificação binária não linear. Reduz o custo do tempo de previsão; O custo de previsão cresce logaritmicamente com o tamanho do conjunto de treinamento, em vez de linearmente, com uma perda tolerável na precisão da classificação.

Formador Task ONNX Exportável
LdSvmTrainer Classificação binária Sim

Mínimos quadrados ordinários

Os mínimos quadrados ordinários (OLS) são uma das técnicas mais utilizadas na regressão linear.

Os mínimos quadrados ordinários referem-se à função de perda, que calcula o erro como a soma do quadrado da distância entre o valor real e a linha prevista, e se ajusta ao modelo minimizando o erro quadrado. Este método assume uma forte relação linear entre as entradas e a variável dependente.

Formador Task ONNX Exportável
OlsTrainer Regressão Sim