Partager via


SdcaMulticlassTrainerBase<TModel> Classe

Définition

Pour IEstimator<TTransformer> prédire une cible à l’aide d’un modèle de classifieur multiclasse linéaire entraîné avec une méthode de descente de coordonnées. Selon la fonction de perte utilisée, le modèle entraîné peut être, par exemple, un classifieur d’entropie maximal ou une machine à vecteurs de prise en charge 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)

Paramètres de type

TModel
Héritage
Dérivé

Remarques

Pour créer ce formateur pour un classifieur d’entropie maximal, utilisez SdcaMaximumEntropy ou SdcaMaximumEntropy(Options). Pour créer cet entraîneur pour une fonction de perte (par exemple, prendre en charge la perte de charnière de la machine vectorielle) de votre choix, utilisez SdcaNonCalibrated ou SdcaNonCalibrated(Options).

Colonnes d’entrée et de sortie

Les données de colonne d’étiquette d’entrée doivent être de type clé et la colonne de caractéristique doit être un vecteur de taille connue de Single.

Ce formateur génère les colonnes suivantes :

Nom de colonne de sortie Type de colonne Description
Score Vecteur de Single Les scores de toutes les classes. Une valeur supérieure signifie une plus forte probabilité d’appartenir à la classe associée. Si l’i-ème élément a la plus grande valeur, l’index de l’étiquette prédite est i. Notez que i est l’index de base zéro.
PredictedLabel type de clé Index de l’étiquette prédite. Si sa valeur est i, l’étiquette réelle est la i-ème catégorie dans le type d’étiquette d’entrée avec une valeur de clé.

Caractéristiques de l’entraîneur

Tâche d’apprentissage automatique Classification multiclasse
La normalisation est-elle requise ? Oui
La mise en cache est-elle requise ? Non
NuGet requis en plus de Microsoft.ML Aucun
Exportable vers ONNX Oui

Fonction de scoring

Cela entraîne le modèle linéaire pour résoudre les problèmes de classification multiclasse. Supposons que le nombre de classes est $m$ et que le nombre de fonctionnalités est $n$. Il affecte à la classe $c$-th un vecteur de coefficient $\textbf{w}_c \in {\mathbb R}^n$ et un biais $b_c \in {\mathbb R}$, pour $c=1,\dots,m$. Étant donné un vecteur de fonctionnalité $\textbf{x} \in {\mathbb R}^n$, le score de la $c$-th classe serait $\hat{y}^c = \textbf{w}_c^T \textbf{x} + b_c$. Si $\textbf{x}$ appartient à la classe $c$, $\hat{y}^c$ doit être beaucoup plus grand que 0. En revanche, un $\hat{y}^c$ beaucoup plus petit que 0 signifie que l’étiquette souhaitée ne doit pas être $c$.

Si et uniquement si le modèle entraîné est un classifieur d’entropie maximal, vous pouvez interpréter le vecteur de score de sortie comme probabilités de classe prédites, car la fonction softmax peut être appliquée aux scores de toutes les classes après le traitement. Plus précisément, la probabilité de $\textbf{x}$ appartenant à la classe $c$ est calculée par $\tilde{P}( c | \textbf{x} ) = \frac{ e^{\hat {y}^c} }{ \sum_{c'= 1}^m e^{\hat{y}^{c'}} }$ et stocker au $c$-th élément dans le vecteur de score. Dans d’autres cas, le vecteur de score de sortie est juste $[\hat{y}^1, \dots, \hat{y}^m]$.

Détails de l’algorithme d’apprentissage

L’algorithme d’optimisation est une extension d’une méthode de descente de coordonnées suivant un chemin similaire proposé dans un document précédent. Il est généralement beaucoup plus rapide que les méthodes L-BFGS et Newton tronquées pour les jeux de données à grande échelle et éparses.

Cette classe utilise la minimisation des risques empiriques (par exemple, ERM) pour formuler le problème d’optimisation basé sur les données collectées. Notez que le risque empirique est généralement mesuré en appliquant une fonction de perte sur les prédictions du modèle sur les points de données collectés. Si les données d’entraînement ne contiennent pas suffisamment de points de données (par exemple, pour entraîner un modèle linéaire dans $n$-dimensionnel, nous avons besoin d’au moins $n$ de points de données), le surfichage peut se produire afin que le modèle produit par ERM soit bon pour décrire les données d’entraînement, mais peut ne pas prédire les résultats corrects dans des événements invisibles. La normalisation est une technique courante pour atténuer ce phénomène en pénalisant l’ampleur (généralement mesurée par la fonction de norme) des paramètres de modèle. Ce formateur prend en charge la normalisation de net élastique, ce qui pénalise une combinaison linéaire de la norme L1 (LASSO), $|| \textbf{w}_c || _1$, et L2-norm (crête), $|| \textbf{w}_c || _2^2$ de normalisation pour $c=1,\dots,m$. Les normalisations L1 et L2 ont des effets différents et des utilisations complémentaires à certains égards.

Avec l’algorithme d’optimisation implémenté, la normalisation L1 peut augmenter la sparsité des poids du modèle, $\textbf{w}_1,\dots,\textbf{w}{w}_m$. Pour les jeux de données à haute dimension et éparses, si les utilisateurs sélectionnent soigneusement le coefficient de la norme L1, il est possible d’obtenir une bonne qualité de prédiction avec un modèle qui n’a que quelques poids non nuls (par exemple, 1 % des poids totaux du modèle) sans affecter sa puissance de prédiction. En revanche, la norme L2 ne peut pas augmenter la sparsité du modèle entraîné, mais peut toujours empêcher le surfichage en évitant les valeurs de paramètres volumineuses. Parfois, l’utilisation de la norme L2 conduit à une meilleure qualité de prédiction, afin que les utilisateurs puissent toujours essayer et affiner les coefficients de la norme L1 et de la norme L2. Notez que conceptuellement, l’utilisation de la norme L1 implique que la distribution de tous les paramètres de modèle est une distribution Laplace tandis que la norme L2 implique une distribution gaussienne pour elles.

Une normalisation agressive (autrement dit, l’attribution de coefficients volumineux aux termes de normalisation L1 ou L2-norme) peut nuire à la capacité prédictive en excluant les variables importantes du modèle. Par exemple, un coefficient de norme L1 très volumineux peut forcer tous les paramètres à être zéros et conduire à un modèle trivial. Par conséquent, le choix des coefficients de régularisation appropriés est important dans la pratique.

Consultez la section Voir également pour obtenir des liens vers des exemples d’utilisation.

Champs

FeatureColumn

Colonne de caractéristique attendue par l’entraîneur.

(Hérité de TrainerEstimatorBase<TTransformer,TModel>)
LabelColumn

Colonne d’étiquette attendue par le formateur. Peut être null, ce qui indique que l’étiquette n’est pas utilisée pour l’entraînement.

(Hérité de TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

Colonne de poids attendue par l’entraîneur. Peut être null, ce qui indique que le poids n’est pas utilisé pour l’entraînement.

(Hérité de TrainerEstimatorBase<TTransformer,TModel>)

Propriétés

Info

Pour IEstimator<TTransformer> prédire une cible à l’aide d’un modèle de classifieur multiclasse linéaire entraîné avec une méthode de descente de coordonnées. Selon la fonction de perte utilisée, le modèle entraîné peut être, par exemple, un classifieur d’entropie maximal ou une machine à vecteurs de prise en charge multiclasse.

(Hérité de StochasticTrainerBase<TTransformer,TModel>)

Méthodes

Fit(IDataView)

Entraîne et retourne un ITransformer.

(Hérité de TrainerEstimatorBase<TTransformer,TModel>)
GetOutputSchema(SchemaShape)

Pour IEstimator<TTransformer> prédire une cible à l’aide d’un modèle de classifieur multiclasse linéaire entraîné avec une méthode de descente de coordonnées. Selon la fonction de perte utilisée, le modèle entraîné peut être, par exemple, un classifieur d’entropie maximal ou une machine à vecteurs de prise en charge multiclasse.

(Hérité de TrainerEstimatorBase<TTransformer,TModel>)

Méthodes d’extension

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

Ajoutez un « point de contrôle de mise en cache » à la chaîne d’estimateur. Cela garantit que les estimateurs en aval seront entraînés par rapport aux données mises en cache. Il est utile d’avoir un point de contrôle de mise en cache avant les formateurs qui prennent plusieurs passes de données.

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

Étant donné un estimateur, retournez un objet de création de package de package qui appellera un délégué une fois Fit(IDataView) appelé. Il est souvent important pour un estimateur de retourner des informations sur ce qui a été adapté, c’est pourquoi la Fit(IDataView) méthode retourne un objet spécifiquement typé, plutôt que simplement un général ITransformer. Toutefois, en même temps, IEstimator<TTransformer> sont souvent formés en pipelines avec de nombreux objets. Nous pouvons donc avoir besoin de créer une chaîne d’estimateurs via EstimatorChain<TLastTransformer> laquelle l’estimateur pour lequel nous voulons obtenir le transformateur est enterré quelque part dans cette chaîne. Pour ce scénario, nous pouvons par le biais de cette méthode attacher un délégué qui sera appelé une fois l’ajustement appelé.

S’applique à

Voir aussi