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 |