Compartilhar via


SdcaLogisticRegressionBinaryTrainer Classe

Definição

Para IEstimator<TTransformer> treinar um modelo de classificação de regressão logística binária usando o método de ascensão de coordenada dupla estocástica. O modelo treinado é calibrado e pode produzir probabilidade alimentando o valor de saída da função linear para um PlattCalibrator.

public sealed class SdcaLogisticRegressionBinaryTrainer : Microsoft.ML.Trainers.SdcaBinaryTrainerBase<Microsoft.ML.Calibrators.CalibratedModelParametersBase<Microsoft.ML.Trainers.LinearBinaryModelParameters,Microsoft.ML.Calibrators.PlattCalibrator>>
type SdcaLogisticRegressionBinaryTrainer = class
    inherit SdcaBinaryTrainerBase<CalibratedModelParametersBase<LinearBinaryModelParameters, PlattCalibrator>>
Public NotInheritable Class SdcaLogisticRegressionBinaryTrainer
Inherits SdcaBinaryTrainerBase(Of CalibratedModelParametersBase(Of LinearBinaryModelParameters, PlattCalibrator))
Herança

Comentários

Para criar esse treinador, use SdcaLogisticRegression ou SdcaLogisticRegression(Options).

Colunas de entrada e saída

Os dados da coluna de rótulo de entrada devem ser Boolean. 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 calculada pelo modelo.
PredictedLabel Boolean O rótulo previsto com base no sinal da pontuação. Uma pontuação negativa é mapeada para false e uma pontuação positiva é mapeada para true.
Probability Single A probabilidade calculada calibrando a pontuação de ter true como o rótulo. O valor da probabilidade está no intervalo [0, 1].

Características do treinador

Ferramenta de machine learning Classificação binária
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 baseia-se 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 aplicando 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 máquina vetor ou 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 parada não é suficientemente apertada. Na otimização fortemente convexa, a solução ideal é exclusiva e, portanto, todos eventualmente chegam ao mesmo lugar. Mesmo em casos não fortemente convexa, 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 no espaço $n$-dimensional, precisamos de pelo menos $n$ pontos de dados), a sobreajuste pode acontecer para que o modelo produzido pelo ERM seja bom na descrição dos dados de treinamento, mas pode não prever os resultados corretos em eventos não vistos. 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 (L1-norm), $|| \textbf{w}_c || _1$, e L2-norm (ridge), $|| \textbf{w}_c || _2^2$ regularizações para $c=1,\dots, m$. As regularizações L1-norm e L2-norm 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 de alta dimensão e esparsa, 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% do total de pesos 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âmetros 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 de L1-norm e L2-norm. 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 a norma L2 implica uma distribuição gaussiana para eles.

Uma regularização agressiva (ou seja, atribuir coeficientes grandes 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:

Verifique a seção Consulte Também para obter links para exemplos de uso.

Campos

FeatureColumn

A coluna de recursos esperada pelo treinador.

(Herdado de TrainerEstimatorBase<TTransformer,TModel>)
LabelColumn

A coluna de rótulo esperada pelo treinador. Pode ser null, o que indica que o rótulo não é usado para treinamento.

(Herdado de TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

A coluna de peso que o treinador espera. Pode ser null, o que indica que o peso não é usado para treinamento.

(Herdado de TrainerEstimatorBase<TTransformer,TModel>)

Propriedades

Info

Para IEstimator<TTransformer> treinar um modelo de classificação de regressão logística binária usando o método de ascensão de coordenada dupla estocástica. O modelo treinado é calibrado e pode produzir probabilidade alimentando o valor de saída da função linear para um PlattCalibrator.

(Herdado de SdcaBinaryTrainerBase<TModelParameters>)

Métodos

Fit(IDataView)

Treina e retorna um ITransformer.

(Herdado de TrainerEstimatorBase<TTransformer,TModel>)
GetOutputSchema(SchemaShape)

Para IEstimator<TTransformer> treinar um modelo de classificação de regressão logística binária usando o método de ascensão de coordenada dupla estocástica. O modelo treinado é calibrado e pode produzir probabilidade alimentando o valor de saída da função linear para um PlattCalibrator.

(Herdado de TrainerEstimatorBase<TTransformer,TModel>)

Métodos de Extensão

AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

Acrescente um 'ponto de verificação de cache' à cadeia do avaliador. Isso garantirá que os estimadores downstream sejam treinados em relação aos dados armazenados em cache. É útil ter um ponto de verificação de cache antes dos treinadores que levam vários passes de dados.

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

Dado um avaliador, retorne um objeto de encapsulamento que chamará um delegado uma vez Fit(IDataView) que seja chamado. Geralmente, é importante que um avaliador 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 criar uma cadeia de avaliadores por meio EstimatorChain<TLastTransformer> de onde o estimador para o qual queremos obter o transformador está enterrado em algum lugar nesta cadeia. Para esse cenário, podemos por meio desse método anexar um delegado que será chamado assim que o ajuste for chamado.

Aplica-se a

Confira também