SdcaMulticlassTrainerBase<TModel> 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.
A IEstimator<TTransformer> previsão de um destino usando um modelo de classificador multiclasse linear treinado com um método de descida de coordenadas. Dependendo da função de perda usada, o modelo treinado pode ser, por exemplo, o classificador máximo de entropia ou o computador vetor de suporte de várias classes.
public abstract class SdcaMulticlassTrainerBase<TModel> : Microsoft.ML.Trainers.SdcaTrainerBase<Microsoft.ML.Trainers.SdcaMulticlassTrainerBase<TModel>.MulticlassOptions,Microsoft.ML.Data.MulticlassPredictionTransformer<TModel>,TModel> where TModel : class
type SdcaMulticlassTrainerBase<'Model (requires 'Model : null)> = class
inherit SdcaTrainerBase<SdcaMulticlassTrainerBase<'Model>.MulticlassOptions, MulticlassPredictionTransformer<'Model>, 'Model (requires 'Model : null)>
Public MustInherit Class SdcaMulticlassTrainerBase(Of TModel)
Inherits SdcaTrainerBase(Of SdcaMulticlassTrainerBase(Of TModel).MulticlassOptions, MulticlassPredictionTransformer(Of TModel), TModel)
Parâmetros de tipo
- TModel
- Herança
-
SdcaTrainerBase<SdcaMulticlassTrainerBase<TModel>.MulticlassOptions,MulticlassPredictionTransformer<TModel>,TModel>SdcaMulticlassTrainerBase<TModel>
- Derivado
Comentários
Para criar esse treinador para o classificador máximo de entropia, use SdcaMaximumEntropy ou SdcaMaximumEntropy(Options). Para criar esse treinador para uma função de perda (como a perda de dobradiça do computador vetor de suporte) de sua escolha, use SdcaNonCalibrated ou SdcaNonCalibrated(Options).
Colunas de entrada e saída
Os dados da coluna de 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 Score
Isso treina o modelo linear para resolver problemas de classificação multiclasse. Suponha que o número de classes seja $m$ e o número de recursos seja $n$. Ele atribui à classe $c$-th um vetor coeficiente $\textbf{w}_c \in {\mathbb R}^n$ e um viés $b_c \in {\mathbb R}$, para $c=1,\dots,m$. Dado um vetor de recurso $\textbf{x} \in {\mathbb R}^n$, a pontuação da classe $c$-th seria $\hat{y}^c = \textbf{w}_c^T \textbf{x} + b_c$. Se $\textbf{x}$ pertencer à classe $c$, $\hat{y}^c$ deverá ser muito maior que 0. Por outro lado, um $\hat{y}^c$ muito menor que 0 significa que o rótulo desejado não deve ser $c$.
Se e somente se o modelo treinado for um classificador máximo de entropia, você poderá interpretar o vetor de pontuação de saída como as probabilidades de classe previstas porque a função softmax pode ser aplicada a pontuações de todas as classes pós-processo. Mais especificamente, a probabilidade de $\textbf{x}$ pertencer à classe $c$ é calculada por $\tilde{P}( c | \textbf{x} ) = \frac{ e^{\hat{y}} }{ \sum_{c' = 1}^m e^{\hat{y}^{c'}} }$ e armazene no elemento $c$-th no vetor de pontuação. Em outros casos, o vetor de pontuação de saída é apenas $[\hat{y}^1, \dots, \hat{y}^m]$.
Detalhes do algoritmo de treinamento
O algoritmo de otimização é uma extensão de um método de descida de coordenadas seguindo um caminho semelhante proposto em um artigo anterior. Geralmente é muito mais rápido do que l-BFGS e métodos Newton truncados para conjuntos de dados esparsos e em grande escala.
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.
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 |
WeightColumn |
A coluna de peso que o treinador espera. Pode ser |
Propriedades
Info |
A IEstimator<TTransformer> previsão de um destino usando um modelo de classificador multiclasse linear treinado com um método de descida de coordenadas. Dependendo da função de perda usada, o modelo treinado pode ser, por exemplo, o classificador máximo de entropia ou o computador vetor de suporte de várias classes. (Herdado de StochasticTrainerBase<TTransformer,TModel>) |
Métodos
Fit(IDataView) |
Treina e retorna um ITransformer. (Herdado de TrainerEstimatorBase<TTransformer,TModel>) |
GetOutputSchema(SchemaShape) |
A IEstimator<TTransformer> previsão de um destino usando um modelo de classificador multiclasse linear treinado com um método de descida de coordenadas. Dependendo da função de perda usada, o modelo treinado pode ser, por exemplo, o classificador máximo de entropia ou o computador vetor de suporte de várias classes. (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
- SdcaNonCalibrated(MulticlassClassificationCatalog+MulticlassClassificationTrainers, SdcaNonCalibratedMulticlassTrainer+Options)
- SdcaNonCalibrated(MulticlassClassificationCatalog+MulticlassClassificationTrainers, String, String, String, ISupportSdcaClassificationLoss, Nullable<Single>, Nullable<Single>, Nullable<Int32>)
- SdcaNonCalibratedMulticlassTrainer.Options
- SdcaMaximumEntropy(MulticlassClassificationCatalog+MulticlassClassificationTrainers, SdcaMaximumEntropyMulticlassTrainer+Options)
- SdcaMaximumEntropy(MulticlassClassificationCatalog+MulticlassClassificationTrainers, String, String, String, Nullable<Single>, Nullable<Single>, Nullable<Int32>)
- SdcaMaximumEntropyMulticlassTrainer.Options