MatrixFactorizationTrainer Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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.
- Pour l’implémentation multithread de la méthode de gradient stochastique utilisée, consultez A Fast Parallel Stochastic Gradient Method for Matrix Factorization in Shared Memory Systems.
- Pour le calcul qui se produit à l’intérieur d’un thread unique, consultez A Learning-rate Schedule for Stochastic Gradient Methods to Matrix Factorization.
- Pour la méthode de descente de coordonnées parallèle utilisée et la formule de factorisation de matrice à une classe, consultez Sélection d’exemples négatifs pour la factorisation de matrice à classe unique.
- Pour plus d’informations sur la bibliothèque sous-jacente utilisée, consultez LIBMF: A Library for Parallel Matrix Factorization in Shared-memory Systems.
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) |
|
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. |