SdcaMulticlassTrainerBase<TModel> Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Oggetto IEstimator<TTransformer> per stimare una destinazione usando un modello di classificatore multiclasse lineare sottoposto a training con un metodo di discesa delle coordinate. A seconda della funzione di perdita usata, il modello sottoposto a training può essere, ad esempio, il classificatore di entropia massimo o la macchina a vettori di supporto multiclasse.
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)
Parametri di tipo
- TModel
- Ereditarietà
-
SdcaTrainerBase<SdcaMulticlassTrainerBase<TModel>.MulticlassOptions,MulticlassPredictionTransformer<TModel>,TModel>SdcaMulticlassTrainerBase<TModel>
- Derivato
Commenti
Per creare questo formatore per il classificatore di entropia massimo, usare SdcaMaximumEntropy o SdcaMaximumEntropy(Options). Per creare questo formatore per una funzione di perdita ,ad esempio la perdita della cerniera del vettore di supporto, usare SdcaNonCalibrated o SdcaNonCalibrated(Options).
Colonne di input e output
I dati della colonna dell'etichetta di input devono essere di tipo chiave e la colonna di funzionalità deve essere un vettore di dimensioni note di Single.
Questo formatore restituisce le colonne seguenti:
Nome colonna di output | Tipo di colonna | Descrizione |
---|---|---|
Score |
Vettore di Single | I punteggi di tutte le classi. Valori più alti indicano maggiori probabilità di rientrare nella classe associata. Se l'elemento i-esimo ha il valore più elevato, l'indice delle etichette stimate sarà i. Si noti che i è l'indice a base zero. |
PredictedLabel |
tipo di chiave | L'indice dell'etichetta stimata. Se il valore è i, l'etichetta effettiva potrebbe essere la categoria i-esima nel tipo di etichetta di input con valori key. |
Caratteristiche del formatore
Attività di Machine Learning | Classificazione multiclasse |
La normalizzazione è necessaria? | Sì |
La memorizzazione nella cache è necessaria? | No |
NuGet richiesto oltre a Microsoft.ML | Nessuno |
Esportabile in ONNX | Sì |
Funzione di assegnazione dei punteggi
Questo esegue il training del modello lineare per risolvere i problemi di classificazione multiclasse. Si supponga che il numero di classi sia $m$ e che il numero di funzionalità sia $n$. Assegna alla classe $c$-th un vettore di coefficiente $\textbf{w}_c \in {\mathbb R}^n$ e una distorsione $b_c \in {\mathbb R}$, per $c=1,\dots,m$. Dato un vettore di funzionalità $\textbf{x} \in {\mathbb R}^n$, il punteggio della classe $c$-th sarà $\hat{y}^c = \textbf{w}_c^T \textbf{x} + b_c$. Se $\textbf{x}$ appartiene alla classe $c$, $\hat{y}^c$ deve essere molto più grande di 0. Al contrario, un $\hat{y}^c$ molto più piccolo di 0 indica che l'etichetta desiderata non deve essere $c$.
Se e solo se il modello sottoposto a training è un classificatore di entropia massimo, è possibile interpretare il vettore del punteggio di output come probabilità della classe stimata perché la funzione softmax può essere applicata ai punteggi di tutte le classi post-process. In particolare, la probabilità di $\textbf{x}$ appartenente alla classe $c$ viene calcolata da $\tilde{P}( c | \textbf{x} ) = \frac{ e^{\hat{y}^c} }{ \sum_{c' = 1}^m e^{\hat{y}^{c'}} }$ e archiviare l'elemento $c$-th nel vettore di punteggio. In altri casi, il vettore del punteggio di output è solo $[\hat{y}^1, \dots, \hat{y}^m]$.
Dettagli algoritmo di training
L'algoritmo di ottimizzazione è un'estensione di un metodo di discesa delle coordinate che segue un percorso simile proposto in un documento precedente. In genere è molto più veloce rispetto a L-BFGS e ai metodi Newton troncati per set di dati di grandi dimensioni e sparse.
Questa classe usa la riduzione al minimo dei rischi empirici (ad esempio ERM) per formulare il problema di ottimizzazione basato sui dati raccolti. Si noti che il rischio empirico viene in genere misurato applicando una funzione di perdita alle stime del modello sui punti dati raccolti. Se i dati di training non contengono punti dati sufficienti ,ad esempio per eseguire il training di un modello lineare nello spazio $n$dimensionale, è necessario almeno $n$ punti dati, l'overfitting può verificarsi in modo che il modello prodotto da ERM sia utile per descrivere i dati di training, ma potrebbe non riuscire a prevedere i risultati corretti in eventi non visualizzati. La regolarizzazione è una tecnica comune per alleviare tale fenomeno penalizzando la grandezza (in genere misurata dalla funzione norm) dei parametri del modello. Questo formatore supporta la regolarizzazione della rete elastica, che penalizza una combinazione lineare di L1-norm (LASSO), $|| \textbf{w}_c || _1$, e L2-norm (ridge), $|| \textbf{w}_c || _2^2$ regolarizzazioni per $c=1,\dots,m$. Le regolarizzazioni L1-norm e L2-norm hanno effetti e usi diversi che sono complementari in determinati aspetti.
Insieme all'algoritmo di ottimizzazione implementato, la regolarizzazione della norma L1 può aumentare la spaziatura dei pesi del modello, $\textbf{w}_1,\dots,\textbf{w}_m$. Per i set di dati ad alta dimensione e sparse, se gli utenti selezionano attentamente il coefficiente della norma L1, è possibile ottenere una buona qualità di stima con un modello con pochi pesi diversi da zero (ad esempio, 1% dei pesi totali del modello) senza influire sulla potenza di stima. Al contrario, L2-norm non può aumentare la spaziatura del modello sottoposto a training, ma può comunque impedire l'overfitting evitando valori di parametri di grandi dimensioni. A volte, l'uso della norma L2 porta a una migliore qualità di stima, quindi gli utenti potrebbero comunque voler provare e ottimizzare i coefficienti di L1-norm e L2-norm. Si noti che concettualmente, l'uso di L1-norm implica che la distribuzione di tutti i parametri del modello è una distribuzione Laplace mentre L2-norm implica una distribuzione gaussiana per loro.
Una regolarizzazione aggressiva (ovvero l'assegnazione di coefficienti di grandi dimensioni ai termini di regolarizzazione L1-norm o L2) può danneggiare la capacità predittiva escludendo le variabili importanti dal modello. Ad esempio, un coefficiente L1-norm molto grande può forzare tutti i parametri a essere zeri e portare a un modello semplice. Pertanto, scegliere i coefficienti di regolarizzazione corretti è importante in pratica.
Vedere la sezione Vedere anche i collegamenti agli esempi di utilizzo.
Campi
FeatureColumn |
Colonna di funzionalità prevista dal formatore. (Ereditato da TrainerEstimatorBase<TTransformer,TModel>) |
LabelColumn |
Colonna dell'etichetta prevista dal formatore. Può essere |
WeightColumn |
Colonna di peso prevista dal formatore. Può essere |
Proprietà
Info |
Oggetto IEstimator<TTransformer> per stimare una destinazione usando un modello di classificatore multiclasse lineare sottoposto a training con un metodo di discesa delle coordinate. A seconda della funzione di perdita usata, il modello sottoposto a training può essere, ad esempio, il classificatore di entropia massimo o la macchina a vettori di supporto multiclasse. (Ereditato da StochasticTrainerBase<TTransformer,TModel>) |
Metodi
Fit(IDataView) |
Esegue il training e restituisce un oggetto ITransformer. (Ereditato da TrainerEstimatorBase<TTransformer,TModel>) |
GetOutputSchema(SchemaShape) |
Oggetto IEstimator<TTransformer> per stimare una destinazione usando un modello di classificatore multiclasse lineare sottoposto a training con un metodo di discesa delle coordinate. A seconda della funzione di perdita usata, il modello sottoposto a training può essere, ad esempio, il classificatore di entropia massimo o la macchina a vettori di supporto multiclasse. (Ereditato da TrainerEstimatorBase<TTransformer,TModel>) |
Metodi di estensione
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
Aggiungere un "checkpoint di memorizzazione nella cache" alla catena di stima. Ciò garantisce che gli estimatori downstream vengano sottoposti a training in base ai dati memorizzati nella cache. È utile avere un checkpoint di memorizzazione nella cache prima che i formatori eseseguono più passaggi di dati. |
WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
Dato un estimator, restituire un oggetto wrapping che chiamerà un delegato una volta Fit(IDataView) chiamato. È spesso importante che uno strumento di stima restituisca informazioni sull'adattamento, motivo per cui il Fit(IDataView) metodo restituisce un oggetto tipizzato in modo specifico, anziché solo un oggetto generale ITransformer. Tuttavia, allo stesso tempo, IEstimator<TTransformer> vengono spesso formati in pipeline con molti oggetti, quindi potrebbe essere necessario creare una catena di estimatori tramite EstimatorChain<TLastTransformer> dove lo strumento di stima per il quale si vuole ottenere il trasformatore è sepolto in una posizione in questa catena. Per questo scenario, è possibile collegare un delegato che verrà chiamato una volta chiamato fit. |
Si applica a
Vedi anche
- 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