Como escolher um algoritmo do ML.NET

Para cada tarefa do ML.NET, há vários algoritmos de treinamento para escolher. Qual escolher depende do problema que você está tentando resolver, das características de seus dados e dos recursos de computação e armazenamento disponíveis. É importante observar que o treinamento de um modelo de machine learning é um processo iterativo. Você talvez precise experimentar vários algoritmos para encontrar aquele que funciona melhor.

Algoritmos operam em recursos. Recursos são valores numéricos calculados usando seus dados de entrada. Eles são entradas ideais para algoritmos de machine learning. Você transforma seus dados brutos de entrada em recursos usando uma ou mais transformações de dados. Por exemplo, dados de texto são transformados em um conjunto de contagens de palavras e contagens de combinação de palavras. Depois que os recursos tiverem sido extraídos de um tipo de dados brutos usando transformações de dados, eles serão denominados personalizados. Por exemplo, texto personalizado ou dados de imagem personalizados.

Treinador = Algoritmo + Tarefa

Um algoritmo é o cálculo executado para produzir um modelo. Diferentes algoritmos produzem modelos com características diferentes.

Com o do ML.NET, o mesmo algoritmo pode ser aplicado para tarefas diferentes. Por exemplo, o ascendente estocástico de coordenada dupla pode ser usado para classificação binária, classificação multiclasse e regressão. A diferença está em como a saída do algoritmo é interpretada de acordo com a tarefa.

Para cada combinação de algoritmo/tarefa, o 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 Regressão.

Algoritmos lineares

Algoritmos lineares produzem um modelo que calcula pontuações de uma combinação linear de dados de entrada e um conjunto de pesos. Os pesos são os parâmetros do modelo estimado durante o treinamento.

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

Antes do treinamento com um algoritmo linear, os recursos devem ser normalizados. 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 e baratos para treinar e 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 do ML.NET antes de anexar o treinador fará com que o treinamento seja executado mais rapidamente.

Perceptron médio

Melhor para classificação de texto.

Treinador Tarefa Exportável do ONNX
AveragedPerceptronTrainer Classificação binária Sim

Ascendente de coordenada dupla estocástico

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

Treinador Tarefa Exportável do ONNX
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.

Treinador Tarefa Exportável do ONNX
LbfgsLogisticRegressionBinaryTrainer Classificação binária Sim
LbfgsMaximumEntropyMulticlassTrainer Classificação multiclasse Sim
LbfgsPoissonRegressionTrainer Regressão Sim

Descendente de gradiente estocástico simbólico

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

Treinador Tarefa Exportável do ONNX
SymbolicSgdLogisticRegressionBinaryTrainer Classificação binária Sim

Gradiente descendente online

Implementa o gradiente descendente estocástico padrão (não em lote), com opções 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.

Treinador Tarefa Exportável do ONNX
OnlineGradientDescentTrainer Regressão Sim

Algoritmos de árvore de decisão

Algoritmos de árvore de decisão criam um modelo que contém uma série de decisões: efetivamente um fluxograma pelos valores de dados.

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

Algoritmos de árvore de decisão geralmente são muito precisos.

Exceto por GAMs (Modelos Aditivos Generalizados), modelos de árvore podem carecer da capacidade de explicação quando o número de recursos é grande.

Algoritmos de árvore de decisão consomem mais recursos e não são dimensionados tão bem quanto os lineares. Eles têm um bom desempenho em conjuntos de dados que cabem na memória.

Árvores de decisão aprimoradas são um conjunto de árvores de pequenas em que cada árvore pontua os dados de entrada e passa a pontuação para a árvore seguinte para produzir uma pontuação melhor, e assim por diante, em que cada árvore no conjunto melhora a anterior.

Computador aprimorado com gradiente de luz

Mais rápido e mais preciso entre os treinadores da árvore de classificação binária. Altamente ajustável.

Treinador Tarefa Exportável do ONNX
LightGbmBinaryTrainer Classificação binária Sim
LightGbmMulticlassTrainer Classificação multiclasse Sim
LightGbmRegressionTrainer Regressão Sim
LightGbmRankingTrainer Classificação No

Árvore rápida

Use para dados de imagem destacados. Resiliente a dados desbalanceados. Altamente ajustável.

Treinador Tarefa Exportável do ONNX
FastTreeBinaryTrainer Classificação binária Sim
FastTreeRegressionTrainer Regressão Sim
FastTreeTweedieTrainer Regressão Sim
FastTreeRankingTrainer Classificação No

Floresta rápida

Funciona bem com dados ruidosos.

Treinador Tarefa Exportável do ONNX
FastForestBinaryTrainer Classificação binária Sim
FastForestRegressionTrainer Regressão Sim

GAM (modelo generalizado aditivo)

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

Treinador Tarefa Exportável do ONNX
GamBinaryTrainer Classificação binária No
GamRegressionTrainer Regressão No

Fatoração de matriz

Fatoração de matriz

Usado para filtragem colaborativa na recomendação.

Treinador Tarefa Exportável do ONNX
MatrixFactorizationTrainer Recomendação No

Computador de fatoração com reconhecimento de campo

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

Treinador Tarefa Exportável do ONNX
FieldAwareFactorizationMachineTrainer Classificação binária No

Meta-algoritmos

Esses treinadores criam um treinador multiclasse com base em um treinador binário. Use com AveragedPerceptronTrainer, LbfgsLogisticRegressionBinaryTrainer, SymbolicSgdLogisticRegressionBinaryTrainer, LightGbmBinaryTrainer, FastTreeBinaryTrainer, FastForestBinaryTrainer, GamBinaryTrainer.

Um versus todos

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

Treinador Tarefa Exportável do ONNX
OneVersusAllTrainer Classificação multiclasse Sim

Acoplamento por pares

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

Treinador Tarefa Exportável do ONNX
PairwiseCouplingTrainer Classificação multiclasse No

K-Means

Usado para clustering.

Treinador Tarefa Exportável do ONNX
KMeansTrainer Clustering Sim

Análise de componente principal

Usado para detecção de anomalias.

Treinador Tarefa Exportável do ONNX
RandomizedPcaTrainer Detecção de anomalias No

Naive Bayes

Use este algoritmo de classificação multiclasse quando os recursos forem independentes e o conjunto de dados de treinamento for pequeno.

Treinador Tarefa Exportável do ONNX
NaiveBayesMulticlassTrainer Classificação multiclasse Sim

Treinador anterior

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

Treinador Tarefa Exportável do ONNX
PriorTrainer Classificação binária Sim

Computador de vetor de suporte

As SVMs (máquinas de vetores de suporte) são uma classe de modelos de aprendizado supervisionado extremamente popular e bem pesquisada, que pode ser usada em tarefas de classificação linear e não linear.

Uma pesquisa recente se concentrou em maneiras de otimizar esses modelos para dimensionar com eficiência para conjuntos de treinamento maiores.

SVM linear

Prevê um destino usando um modelo de classificação binária linear treinado com dados rotulados boolianos. Alterna entre etapas de gradiente descendente estocástico e etapas de projeção.

Treinador Tarefa Exportável do ONNX
LinearSvmTrainer Classificação binária Sim

SVM local profunda

Prevê 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.

Treinador Tarefa Exportável do ONNX
LdSvmTrainer Classificação binária Sim

Mínimos quadrados ordinários

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

Os quadrados mínimos comuns se referem à 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 ao quadrado. Este método assume que há uma relação linear muito forte entre as entradas e a variável dependente.

Treinador Tarefa Exportável do ONNX
OlsTrainer Regressão Sim