LbfgsMaximumEntropyMulticlassTrainer Classe

Definição

O IEstimator<TTransformer> para prever um destino usando um classificador multiclasse de entropia máximo treinado com o método L-BFGS.

public sealed class LbfgsMaximumEntropyMulticlassTrainer : Microsoft.ML.Trainers.LbfgsTrainerBase<Microsoft.ML.Trainers.LbfgsMaximumEntropyMulticlassTrainer.Options,Microsoft.ML.Data.MulticlassPredictionTransformer<Microsoft.ML.Trainers.MaximumEntropyModelParameters>,Microsoft.ML.Trainers.MaximumEntropyModelParameters>
type LbfgsMaximumEntropyMulticlassTrainer = class
    inherit LbfgsTrainerBase<LbfgsMaximumEntropyMulticlassTrainer.Options, MulticlassPredictionTransformer<MaximumEntropyModelParameters>, MaximumEntropyModelParameters>
Public NotInheritable Class LbfgsMaximumEntropyMulticlassTrainer
Inherits LbfgsTrainerBase(Of LbfgsMaximumEntropyMulticlassTrainer.Options, MulticlassPredictionTransformer(Of MaximumEntropyModelParameters), MaximumEntropyModelParameters)
Herança

Comentários

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

Colunas de entrada e saída

Os dados da coluna do rótulo de entrada devem ser do tipo chave e a coluna de recurso deve 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 Vetor de Single As pontuações de todas as classes. Um valor mais alto significa maior probabilidade de se enquadrar na classe associada. Se o elemento iº elemento tiver o maior valor, o índice de rótulo previsto será i. Observe que i é o índice baseado em zero.
PredictedLabel tipo de chave O índice do rótulo previsto. Se seu valor for i, o rótulo real será a iº categoria no tipo de rótulo de entrada com valor de chave.

Características do Treinador

Ferramenta de machine learning Classificação multiclasse
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

Função Pontuação

O modelo máximo de entropia é uma generalização da regressão logística linear. A principal diferença entre o modelo máximo de entropia e a regressão logística é o número de classes com suporte no problema de classificação considerado. A regressão logística é apenas para classificação binária, enquanto o modelo máximo de entropia manipula várias classes. Consulte a Seção 1 neste artigo para obter uma introdução detalhada.

Suponha que o número de classes seja $m$ e o número de recursos seja $n$. O modelo máximo de entropia atribui à classe $c$-th um vetor coeficiente $\textbf{w}_c \in {\mathbb R}^n$ e um viés $b_c \in {\mathbb R}$, por $c=1,\dots,m$. Dado um vetor de recurso $\textbf{x} \in {\mathbb R}^n$, a pontuação da classe $c$-th é $\hat{y}^c = \textbf{w}_c^T \textbf{x} + b_c$. A probabilidade de $\textbf{x}$ pertencer à classe $c$ é definida por $\tilde{P}(c | \textbf{x}) = \frac{ e^{\hat{y}^c} }{ \sum_{c' = 1}^m e^{\hat{y}^{c'}} }$. Deixe $P(c, \textbf{ x})$ denotar a probabilidade conjunta de ver $c$ e $\textbf{x}$. A função de perda minimizada por este treinador é $-\sum_{c = 1}^m P(c, \textbf{ x}) \log \tilde{P}(c | \textbf{x}) $, que é a função negativa de probabilidade de log.

Detalhes do algoritmo de treinamento

A técnica de otimização implementada baseia-se no método L-BFGS (Broyden-Fletcher-Goldfarb-Shanno) de memória limitada. L-BFGS é um método quase newtoniano, que substitui a computação cara da matriz hessiana por uma aproximação, mas ainda desfruta de uma taxa de convergência rápida como o método de Newton , onde a matriz hessiana completa é computada. Como a aproximação L-BFGS usa apenas uma quantidade limitada de estados históricos para calcular a direção da próxima etapa, ela é especialmente adequada para problemas com um vetor de recursos de alta dimensão. O número de estados históricos é um parâmetro especificado pelo usuário, usando um número maior pode levar a uma melhor aproximação da matriz hessiana, mas também a um custo de computação mais alto por etapa.

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.

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 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

O IEstimator<TTransformer> para prever um destino usando um classificador multiclasse de entropia máximo treinado com o método L-BFGS.

(Herdado de LbfgsTrainerBase<TOptions,TTransformer,TModel>)

Métodos

Fit(IDataView, MaximumEntropyModelParameters)

Continua o treinamento de um usando um LbfgsMaximumEntropyMulticlassTrainer já treinado modelParameters e retorna um MulticlassPredictionTransformer<TModel>.

Fit(IDataView)

Treina e retorna um ITransformer.

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

O IEstimator<TTransformer> para prever um destino usando um classificador multiclasse de entropia máximo treinado com o método L-BFGS.

(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.

Aplica-se a

Confira também