Partager via


FieldAwareFactorizationMachineTrainer Classe

Définition

Pour IEstimator<TTransformer> prédire une cible à l’aide d’un modèle de machine de factorisation prenant en compte les champs entraîné à l’aide d’une méthode de dégradé stochastique.

public sealed class FieldAwareFactorizationMachineTrainer : Microsoft.ML.IEstimator<Microsoft.ML.Trainers.FieldAwareFactorizationMachinePredictionTransformer>
type FieldAwareFactorizationMachineTrainer = class
    interface IEstimator<FieldAwareFactorizationMachinePredictionTransformer>
Public NotInheritable Class FieldAwareFactorizationMachineTrainer
Implements IEstimator(Of FieldAwareFactorizationMachinePredictionTransformer)
Héritage
FieldAwareFactorizationMachineTrainer
Implémente

Remarques

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.
Probability Single Probabilité calculée en calibrant le score d’avoir la valeur true comme étiquette. La valeur de probabilité est comprise dans la plage [0, 1].

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

Contrairement à d’autres classifieurs binaires, qui ne peuvent prendre en charge qu’une seule colonne de fonctionnalité, la machine de factorisation prenant en charge les champs peut consommer plusieurs colonnes de caractéristiques. Chaque colonne est vue comme un conteneur de certaines fonctionnalités et un tel conteneur est appelé champ. Notez que toutes les colonnes de caractéristique doivent être des vecteurs flottants, mais leurs dimensions peuvent être différentes. La motivation du fractionnement des caractéristiques en différents champs consiste à modéliser les caractéristiques de différentes distributions indépendamment. Par exemple, dans le magasin de jeux en ligne, les fonctionnalités créées à partir du profil utilisateur et celles du profil de jeu peuvent être affectées à deux champs différents.

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 Non

Arrière-plan

La famille de machines de factorisation est un groupe de modèles puissant pour les problèmes d’apprentissage supervisés. Il a été introduit pour la première fois dans le document Steffen Rendle’s Factorization Machines en 2010. Plus tard, l’une de ses versions généralisées, la machine de factorisation prenant en charge les champs, est devenue un module prédictif important dans les systèmes de recommandation récents et les concours de prédiction de taux de clics. Pour obtenir des exemples, consultez les solutions gagnantes dans steffen Rendle’s KDD-Cup 2012 (Track 1 et Track 2), Criteo’s, Avazu’s et Outbrain’s click prediction challenges on Kaggle.

Les machines de factorisation sont particulièrement puissantes lorsque les conjonctions de fonctionnalités sont extrêmement corrélées au signal que vous souhaitez prédire. Un exemple de paires de fonctionnalités qui peuvent former des conjonctions importantes est l’ID utilisateur et l’ID de musique dans la recommandation musicale. Lorsqu’un jeu de données se compose uniquement de caractéristiques numériques denses, l’utilisation de la machine de factorisation n’est pas recommandée ou certaines caractérisations doivent être effectuées.

Fonction de scoring

La machine de factorisation prenant en charge les champs est une fonction de scoring qui mappe les vecteurs de caractéristiques de différents champs à un score scalaire. Supposons que toutes les colonnes de caractéristiques $m$ soient concaténées en un long vecteur de caractéristique $\textbf{x} \in {\mathbb R}^n$ et ${\mathcal F}(j)$ désigne le retrait de champ de la $j$-ième fonctionnalité. Le score correspondant est $\hat{y}(\textbf{x}) = \langle \textbf{w}, \textbf{x} \rangle + \sum_{j = 1}^n \sum_{j'= j + 1}^n \langle \textbf{v}_{j, {\mathcal F}(j')}, \textbf{v}_{j', {\mathcal F}(j)} \rangle x_j x_{j'}$, où $\langle \cdot, \cdot \rangle$ est l’opérateur de produit interne, $\textbf{w} \in {\mathbb R}^n$ stocke les coefficients linéaires, et $\textbf{v}_{j, f}\in {\mathbb R}^k$ est la représentation de la $j$-ième fonctionnalité dans l’espace latent du champ $f$-th. Notez que $k$ est la dimension latente spécifiée par l’utilisateur.

L’étiquette prédite est le signe de $\hat{y}$. Si $\hat{y} > 0$, ce modèle prédit true. Sinon, elle prédit false.

Pour une introduction systématique à la machine de factorisation prenant en charge les domaines, consultez ce document

Détails de l’algorithme d’apprentissage

L’algorithme implémenté est FieldAwareFactorizationMachineTrainer basé sur une méthode de dégradé stochastique. Les détails de l’algorithme sont décrits dans Algorithme 3 dans ce document en ligne. La fonction de perte réduite est une perte logistique, de sorte que le modèle entraîné peut être considéré comme une régression logistique non linéaire.

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

Méthodes

Fit(IDataView)

Effectue l’apprentissage et retourne un FieldAwareFactorizationMachinePredictionTransformer.

Fit(IDataView, IDataView, FieldAwareFactorizationMachineModelParameters)

Poursuit l’apprentissage d’une FieldAwareFactorizationMachineTrainer utilisation d’une donnée déjà formée modelParameters et/ou de validation, et retourne un FieldAwareFactorizationMachinePredictionTransformer.

GetOutputSchema(SchemaShape)

Propagation de schéma pour les transformateurs. Retourne le schéma de sortie des données, si le schéma d’entrée est semblable à celui fourni.

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