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 |