Partager via


MatrixFactorizationTrainer Classe

Définition

pour prédire les IEstimator<TTransformer> éléments d’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

Trois colonnes d’entrée sont requises, une pour les index de ligne de matrice, une pour les index de colonne de matrice et une pour les valeurs (c’est-à-dire les étiquettes) dans la matrice. Ensemble, ils définissent une matrice au format COO . Le type de colonne d’étiquette est un vecteur de Single tandis que les deux autres colonnes sont de type clé scalaire.

Nom de 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 d’apprentissage automatique 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

Arrière-plan

L’idée de base de la factorisation matricielle est de trouver deux matrices de facteurs de bas rang pour se rapprocher de la matrice d’entraînement. Dans ce module, les données d’entraînement attendues (la 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 dans la matrice d’entraînement, de sorte que 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 matricielle, prenons l’exemple de la recommandation musicale. Supposons que les ID d’utilisateur et les ID de musique soient utilisés comme index de ligne et de colonne, respectivement, et que les valeurs de 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. La notation prédite à la $u$-th ligne et la colonne $v$-th dans $R$ seraient le produit interne de la $u$-ième ligne de $P$ et de la $v$-th ligne de $Q$; autrement dit, $R$ est approximatif par le produit de la transpose de $P$ ($P^T$) et $Q$. Notez que $k$ est généralement beaucoup plus petit que $m$ et $n$, de sorte que $P^T Q$ est généralement appelé une approximation de bas rang de $R$.

Ce formateur comprend une méthode de gradient stochastique et une méthode de descente de coordonnées pour trouver $P$ et $Q$ en minimisant la distance entre (partie non manquante de) $R$ et son approximation $P^T Q$. La méthode de descente de coordonnées incluse est spécifiquement pour la factorisation de matrice à 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 à une classe consiste à affecter une perte carrée d’une classe à la fonction de perte lors de l’appel de MatrixFactorization(Options). Consultez la page 6 et la page 28 ici pour une brève introduction à la factorisation de matrice standard et à la factorisation de matrice à classe unique. Le paramètre par défaut induise 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

Info

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

Méthodes

Fit(IDataView) Entraîne et retourne un MatrixFactorizationPredictionTransformer.
Fit(IDataView, IDataView)

Entraîne un à l’aide MatrixFactorizationTrainer des données d’entraînement et de validation, 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 similaire à celui fourni.

S’applique à

Voir aussi