SdcaRegressionTrainer Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Para IEstimator<TTransformer> treinar um modelo de regressão usando o método de ascento de coordenada dupla estocástica.
public sealed class SdcaRegressionTrainer : Microsoft.ML.Trainers.SdcaTrainerBase<Microsoft.ML.Trainers.SdcaRegressionTrainer.Options,Microsoft.ML.Data.RegressionPredictionTransformer<Microsoft.ML.Trainers.LinearRegressionModelParameters>,Microsoft.ML.Trainers.LinearRegressionModelParameters>
type SdcaRegressionTrainer = class
inherit SdcaTrainerBase<SdcaRegressionTrainer.Options, RegressionPredictionTransformer<LinearRegressionModelParameters>, LinearRegressionModelParameters>
Public NotInheritable Class SdcaRegressionTrainer
Inherits SdcaTrainerBase(Of SdcaRegressionTrainer.Options, RegressionPredictionTransformer(Of LinearRegressionModelParameters), LinearRegressionModelParameters)
- Herança
Comentários
Para criar esse treinador, use Sdca ou Sdca(Options).
Colunas de entrada e saída
Os dados da coluna de rótulo de entrada devem ser Single. Os dados da coluna de recursos de entrada devem ser um vetor de tamanho conhecido de Single.
Este treinador gera as seguintes colunas:
Nome da Coluna de Saída | Tipo de coluna | Descrição |
---|---|---|
Score |
Single | A pontuação não associada prevista pelo modelo. |
Características do Treinador
Ferramenta de machine learning | Regressão |
A normalização é necessária? | Sim |
O cache é necessário? | No |
NuGet necessário além de Microsoft.ML | Nenhum |
Exportável para ONNX | Sim |
Detalhes do algoritmo de treinamento
Esse treinador se baseia no método SDCA (Stochastic Dual Coordinate Ascent), uma técnica de otimização de última geração para funções de objetivo convexa. O algoritmo pode ser dimensionado porque é um algoritmo de treinamento de streaming, conforme descrito em um melhor artigo do KDD.
A convergência é subscrita impondo periodicamente a sincronização entre variáveis primitivas e duplas em um thread separado. Várias opções de funções de perda também são fornecidas, como perda de dobradiça e perda logística. Dependendo da perda usada, o modelo treinado pode ser, por exemplo, compatível com o computador vetor ou a regressão logística. O método SDCA combina várias das melhores propriedades, como a capacidade de fazer o aprendizado de streaming (sem ajustar todo o conjunto de dados em sua memória), alcançar um resultado razoável com algumas verificações de todo o conjunto de dados (por exemplo, ver experimentos neste artigo) e não gastar nenhuma computação em zeros em conjuntos de dados esparsos.
Observe que o SDCA é um algoritmo de otimização de streaming e estocástico. O resultado depende da ordem dos dados de treinamento porque a tolerância de interrupção não é suficientemente apertada. Na otimização fortemente convexa, a solução ideal é exclusiva e, portanto, todos eventualmente atingem o mesmo lugar. Mesmo em casos não fortemente convexos, você obterá soluções igualmente boas de execução para execução. Para resultados reproduzíveis, é recomendável que um defina 'Shuffle' como False e 'NumThreads' como 1.
Essa classe usa minimização de risco empírico (ou seja, ERM) para formular o problema de otimização criado com base nos dados coletados. Observe que o risco empírico geralmente é medido aplicando uma função de perda nas previsões do modelo em pontos de dados coletados. Se os dados de treinamento não contiverem pontos de dados suficientes (por exemplo, para treinar um modelo linear em $n espaço$dimensional, precisamos de pelo menos $n$ pontos de dados), a sobreajuste pode acontecer para que o modelo produzido pelo ERM seja bom em descrever dados de treinamento, mas pode não prever resultados corretos em eventos invisíveis. A regularização é uma técnica comum para aliviar esse fenômeno penalizando a magnitude (geralmente medida pela função norma) dos parâmetros de modelo. Este treinador dá suporte à regularização de rede elástica, que penaliza uma combinação linear de LASSO (norma L1), $|| \textbf{w}_c || _1$, e L2-norm (ridge), $|| \textbf{w}_c || _2^2$ regularizações para $c=1,\dots, m$. As regularizações de norma L1 e L2 têm efeitos e usos diferentes complementares em determinados aspectos.
Junto com o algoritmo de otimização implementado, a regularização de norma L1 pode aumentar a moderação dos pesos do modelo, $\textbf{w}_1,\dots,\textbf{w}_m$. Para conjuntos de dados altamente dimensionais e esparsos, se os usuários selecionarem cuidadosamente o coeficiente da norma L1, é possível obter uma boa qualidade de previsão com um modelo que tenha apenas alguns pesos não zero (por exemplo, 1% dos pesos totais do modelo) sem afetar seu poder de previsão. Por outro lado, a norma L2 não pode aumentar a moderação do modelo treinado, mas ainda pode impedir a sobreajuste evitando valores de parâmetro grandes. Às vezes, o uso da norma L2 leva a uma melhor qualidade de previsão, portanto, os usuários ainda podem querer experimentá-la e ajustar os coeficientes da norma L1 e da norma L2. Observe que, conceitualmente, o uso da norma L1 implica que a distribuição de todos os parâmetros de modelo é uma distribuição Laplace , enquanto l2-norm implica uma distribuição gaussiana para eles.
Uma regularização agressiva (ou seja, atribuir grandes coeficientes a termos de regularização L1-norm ou L2-norm) pode prejudicar a capacidade preditiva excluindo variáveis importantes do modelo. Por exemplo, um coeficiente L1-norm muito grande pode forçar todos os parâmetros a serem zeros e levar a um modelo trivial. Portanto, escolher os coeficientes de regularização corretos é importante na prática.
Para obter mais informações, consulte:
- Escalando verticalmente a ascento de coordenada dupla estocástica.
- Métodos de ascensão de coordenadas duplas estocásticas para minimização de perda regularizada.
Verifique a seção Consulte Também para obter links para exemplos de uso.
Campos
FeatureColumn |
A coluna de recursos que o treinador espera. (Herdado de TrainerEstimatorBase<TTransformer,TModel>) |
LabelColumn |
A coluna de rótulo que o treinador espera. Pode ser |
WeightColumn |
A coluna de peso que o treinador espera. Pode ser |
Propriedades
Info |
Para IEstimator<TTransformer> treinar um modelo de regressão usando o método de ascento de coordenada dupla estocástica. (Herdado de StochasticTrainerBase<TTransformer,TModel>) |
Métodos
Fit(IDataView) |
Treina e retorna um ITransformer. (Herdado de TrainerEstimatorBase<TTransformer,TModel>) |
GetOutputSchema(SchemaShape) |
Para IEstimator<TTransformer> treinar um modelo de regressão usando o método de ascento de coordenada dupla estocástica. (Herdado de TrainerEstimatorBase<TTransformer,TModel>) |
Métodos de Extensão
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
Acrescente um "ponto de verificação de cache" à cadeia de estimativas. Isso garantirá que os estimadores downstream serão treinados em relação aos dados armazenados em cache. É útil ter um ponto de verificação de cache antes dos treinadores que fazem várias passagens de dados. |
WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
Dado um estimador, retorne um objeto de encapsulamento que chamará um delegado uma vez Fit(IDataView) chamado. Geralmente, é importante que um estimador retorne informações sobre o que estava em forma, e é por isso que o Fit(IDataView) método retorna um objeto especificamente tipado, em vez de apenas um geral ITransformer. No entanto, ao mesmo tempo, IEstimator<TTransformer> muitas vezes são formados em pipelines com muitos objetos, portanto, talvez seja necessário construir uma cadeia de estimadores por meio EstimatorChain<TLastTransformer> de onde o estimador para o qual queremos que o transformador seja enterrado em algum lugar nesta cadeia. Para esse cenário, podemos por meio desse método anexar um delegado que será chamado quando fit for chamado. |