MatrixFactorizationTrainer Classe

Définition

Pour IEstimator<TTransformer> prédire des éléments dans une matrice à l’aide de la factorisation de matrice (également appelée type de filtrage collaboratif).

public sealed class MatrixFactorizationTrainer : Microsoft.ML.IEstimator<Microsoft.ML.Trainers.Recommender.MatrixFactorizationPredictionTransformer>, Microsoft.ML.Trainers.ITrainerEstimator<Microsoft.ML.Trainers.Recommender.MatrixFactorizationPredictionTransformer,Microsoft.ML.Trainers.Recommender.MatrixFactorizationModelParameters>
type MatrixFactorizationTrainer = class
    interface ITrainerEstimator<MatrixFactorizationPredictionTransformer, MatrixFactorizationModelParameters>
    interface IEstimator<MatrixFactorizationPredictionTransformer>
Public NotInheritable Class MatrixFactorizationTrainer
Implements IEstimator(Of MatrixFactorizationPredictionTransformer), ITrainerEstimator(Of MatrixFactorizationPredictionTransformer, MatrixFactorizationModelParameters)
Héritage
MatrixFactorizationTrainer
Implémente

Remarques

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

Colonnes d’entrée et de sortie

Il existe trois colonnes d’entrée requises, une pour les index de ligne de matrice, une pour les index de colonne de matrice et une pour les valeurs (par exemple, les étiquettes) dans la matrice. Ils définissent ensemble une matrice au format COO . Le type de colonne d’étiquette est un vecteur de Single tandis que les deux autres colonnes sont scalaires de type clé .

Nom de la colonne de sortie Type de colonne Description
Score Single Valeur de matrice prédite à l’emplacement spécifié par les colonnes d’entrée (colonne d’index de ligne et colonne d’index de colonne).

Caractéristiques de l’entraîneur

Tâche Machine Learning systèmes de recommandation.
La normalisation est-elle nécessaire ? Oui
La mise en cache est-elle requise ? Oui
NuGet requis en plus de Microsoft.ML Microsoft.ML.Recommender
Exportable vers ONNX Non

Background

L’idée de base de la factorisation de matrice consiste à trouver deux matrices de facteurs de bas rang pour estimer la matrice d’entraînement. Dans ce module, les données d’entraînement attendues (matrice factorisée) sont une liste de tuples. Chaque tuple se compose d’un index de colonne, d’un index de ligne et de la valeur à l’emplacement spécifié par les deux index. Pour obtenir un exemple de structure de données d’un tuple, vous pouvez utiliser :

// The following variables defines the shape of a m-by-n matrix. Indexes start with 0; that is, our indexing system
// is 0-based.
const int m = 60;
const int n = 100;

// A tuple of row index, column index, and rating. It specifies a value in the rating matrix.
class MatrixElement
{
    // Matrix column index starts from 0 and is at most n-1.
    [KeyType(n)]
    public uint MatrixColumnIndex;
    // Matrix row index starts from 0 and is at most m-1.
    [KeyType(m)]
    public uint MatrixRowIndex;
    // The rating at the MatrixColumnIndex-th column and the MatrixRowIndex-th row.
    public float Value;
}

Notez qu’il n’est pas nécessaire de spécifier toutes les entrées de la matrice d’entraînement. Par conséquent, la factorisation de matrice peut être utilisée pour remplir les valeurs manquantes. Ce comportement est très utile lors de la création de systèmes de recommandation.

Pour mieux comprendre les utilisations pratiques de la factorisation de matrice, prenons l’exemple de recommandation musicale. Supposons que les ID utilisateur et les ID de musique sont utilisés comme index de ligne et de colonne, respectivement, et que les valeurs de la matrice sont des évaluations fournies par ces utilisateurs. Autrement dit, l’évaluation $r$ à la ligne $u$ et la colonne $v$ signifie que l’utilisateur $u$ donne $r$ à l’élément $v$. Une matrice incomplète est très courante, car tous les utilisateurs ne peuvent pas fournir leurs commentaires à tous les produits (par exemple, personne ne peut évaluer dix millions de chansons). Supposons que $R\in{\mathbb R}^{m\times n}$ est une matrice d’évaluation m-by-n et que le rang des deux matrices de facteurs est $P\in {\mathbb R}^{k\times m}$ et $Q\in {\mathbb R}^{k\times n}$, où $k$ est le rang d’approximation. L’évaluation prédite à la $u$-ième ligne et la $v$-ième colonne dans $R$ serait le produit interne de la $u$-ième ligne de $P$ et la $v$-ième ligne de $Q$ ; autrement dit, $R$ est approximatif par le produit de la transposer de $P$ ($P^T$) et $Q$. Notez que $k$ est généralement beaucoup plus petit que $m$ et $n$, donc $P^T Q$ est généralement appelé une approximation de faible rang de $R$.

Ce formateur comprend une méthode de dégradé stochastique et une méthode de descente de coordonnées pour trouver $P$ et $Q$ via la réduction de la distance entre (partie non manquante) $R$ et son approximation $P^T Q$. La méthode de descente de coordonnées incluse est spécifiquement pour la factorisation de matrice d’une classe où toutes les évaluations observées sont des signaux positifs (autrement dit, toutes les valeurs d’évaluation sont 1). Notez que la seule façon d’appeler la factorisation de matrice d’une classe consiste à affecter une perte carrée à uneclasse à la fonction de perte lors de l’appel de MatrixFactorization(Options). Consultez la page 6 et la page 28 ici pour une brève présentation de la factorisation de matrice standard et de la factorisation à une seule classe. Le paramètre par défaut induit la factorisation de matrice standard. La bibliothèque sous-jacente utilisée dans ML.NET factorisation de matrice se trouve sur un dépôt Github.

Pour les utilisateurs intéressés par les détails mathématiques, consultez les références ci-dessous.

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

Propriétés

Nom Description
Info

Contient TrainerInfo des paramètres généraux pour cet entraîneur.

Méthodes

Nom Description
Fit(IDataView, IDataView)

Effectue l’apprentissage à MatrixFactorizationTrainer l’aide de données d’entraînement et de validation, retourne un MatrixFactorizationPredictionTransformer.

Fit(IDataView) Effectue l’apprentissage et retourne un MatrixFactorizationPredictionTransformer.
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

Nom Description
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>)

En fonction d’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 pour un estimateur de retourner 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 devrons peut-être construire 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