Partager via


SdcaNonCalibratedBinaryTrainer Classe

Définition

Pour IEstimator<TTransformer> entraîner un modèle de classification de régression logistique binaire à l’aide de la méthode d’ascente de double coordonnée stochastique.

public sealed class SdcaNonCalibratedBinaryTrainer : Microsoft.ML.Trainers.SdcaBinaryTrainerBase<Microsoft.ML.Trainers.LinearBinaryModelParameters>
type SdcaNonCalibratedBinaryTrainer = class
    inherit SdcaBinaryTrainerBase<LinearBinaryModelParameters>
Public NotInheritable Class SdcaNonCalibratedBinaryTrainer
Inherits SdcaBinaryTrainerBase(Of LinearBinaryModelParameters)
Héritage

Remarques

Pour créer ce formateur, utilisez SdcaNonCalibrated ou SdcaNonCalibrated(Options).

Colonnes d’entrée et de sortie

Les données de la colonne d’étiquettes d’entrée doivent être Boolean. Les données de colonne des caractéristiques d’entrée doivent ê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 Single Score non lié calculé par le modèle.
PredictedLabel Boolean Étiquette prédite, en fonction du signe du score. Un score négatif est mappé à false, tandis qu’un score positif est mappé à true.

Caractéristiques de l’entraîneur

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

Détails de l’algorithme d’apprentissage

Ce formateur est basé sur la méthode Stochastic Dual Coordinate Ascent (SDCA), une technique d’optimisation de pointe pour les fonctions d’objectif convex. L’algorithme peut être mis à l’échelle, car il s’agit d’un algorithme d’entraînement de diffusion en continu, comme décrit dans un meilleur document KDD.

La convergence est remplacée par l’application périodique de la synchronisation entre les variables primal et double dans un thread distinct. Plusieurs choix de fonctions de perte sont également fournis, tels que la perte de charnière et la perte logistique. Selon la perte utilisée, le modèle entraîné peut être, par exemple, prendre en charge la machine vectorielle ou la régression logistique. La méthode SDCA combine plusieurs des meilleures propriétés, telles que la possibilité d’effectuer un apprentissage en streaming (sans ajuster l’ensemble du jeu de données dans votre mémoire), en atteignant un résultat raisonnable avec quelques analyses de l’ensemble du jeu de données (par exemple, voir les expériences de ce document) et de dépenser aucun calcul sur zéros dans les jeux de données éparses.

Notez que SDCA est un algorithme d’optimisation stochastique et de streaming. Le résultat dépend de l’ordre des données d’apprentissage, car la tolérance d’arrêt n’est pas suffisante. Dans l’optimisation fortement convexe, la solution optimale est unique et donc tout le monde finit par atteindre le même endroit. Même dans les cas non fortement convex, vous obtiendrez des solutions égales de l’exécution à l’exécution. Pour les résultats reproductibles, il est recommandé de définir « Shuffle » sur False et « NumThreads » sur 1.

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’apprentissage ne contiennent pas suffisamment de points de données (par exemple, pour entraîner un modèle linéaire dans un espace $n$, nous avons besoin d’au moins $n$ de points de données), le surajustement peut se produire afin que le modèle produit par ERM soit bon pour décrire les données d’entraînement, mais qu’il peut échouer à prédire des résultats corrects dans des événements invisibles. La régularisation 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 du modèle. Ce formateur prend en charge la régularisation nette élastique, qui pénalise une combinaison linéaire de L1-norm (LASSO), $|| \textbf{w}_c || _1$, et L2-norm (crête), $|| \textbf{w}_c || _2^2$ de régularisations pour $c=1,\dots,m$. Les régularisations L1-norm et L2-norm ont des effets et des utilisations différents qui sont complémentaires à certains égards.

Avec l’algorithme d’optimisation implémenté, la normalisation L1 peut augmenter l’éparsité des pondérations du modèle, $\textbf{w}_1,\dots,\textbf{w}_m$. Pour les jeux de données à grande 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 pondérations totales du modèle) sans affecter sa puissance de prédiction. En revanche, la norme L2 ne peut pas augmenter l’éparse du modèle entraîné, mais peut toujours empêcher le surajustement en évitant les valeurs de paramètres volumineuses. Parfois, l’utilisation de la norme L2 conduit à une meilleure qualité de prédiction, de sorte que les utilisateurs peuvent toujours vouloir l’essayer et ajuster 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 eux.

Une régularisation agressive (autrement dit, l’affectation de grands coefficients aux termes de normalisation L1 ou L2-norm) 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.

Pour plus d'informations, consultez les pages suivantes :

Consultez la section Voir aussi 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 l’entraîneur. 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> entraîner un modèle de classification de régression logistique binaire à l’aide de la méthode d’ascente de double coordonnée stochastique.

(Hérité de SdcaBinaryTrainerBase<TModelParameters>)

Méthodes

Fit(IDataView)

Effectue l’apprentissage et retourne un ITransformer.

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

Pour IEstimator<TTransformer> entraîner un modèle de classification de régression logistique binaire à l’aide de la méthode d’ascente de double coordonnée stochastique.

(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 restrictions qui appellera un délégué une fois Fit(IDataView) appelé. Il est souvent important qu’un estimateur retourne des informations sur ce qui était 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 par EstimatorChain<TLastTransformer> le biais de 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