MatrixFactorizationTrainer Klasse
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Der IEstimator<TTransformer> , der Elemente in einer Matrix mithilfe der Matrixfaktorisierung vorhersagt (auch bekannt als eine Art der kollaborativen Filterung).
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)
- Vererbung
-
MatrixFactorizationTrainer
- Implementiert
Verwenden Sie MatrixFactorization oder MatrixFactorization(Options), um diesen Trainer zu erstellen.
Es sind drei Eingabespalten erforderlich: eine für Matrixzeilenindizes, eine für Matrixspaltenindizes und eine für Werte (d. h. Bezeichnungen) in der Matrix. Sie definieren zusammen eine Matrix im COO-Format . Der Typ für die Bezeichnungsspalte ist ein Vektor von Single , während die anderen beiden Spalten den Schlüsseltyp skalar sind.
Name der Ausgabespalte | Spaltentyp | BESCHREIBUNG |
---|---|---|
Score |
Single | Der vorhergesagte Matrixwert an der durch Eingabespalten angegebenen Position (Zeilenindexspalte und Spaltenindexspalte). |
ML-Aufgabe | Empfehlungssysteme |
Ist eine Normalisierung erforderlich? | Yes |
Ist Zwischenspeicherung erforderlich? | Yes |
Erforderliche NuGet zusätzlich zu Microsoft.ML | Microsoft.ML.Recommender |
Exportierbar nach ONNX | Nein |
Die Grundidee der Matrixfaktorisierung besteht darin, zwei niedrige Rangfaktormatrizen zu finden, um die Trainingsmatrix zu nähern. In diesem Modul sind die erwarteten Trainingsdaten (die faktorisierte Matrix) eine Liste von Tupeln. Jedes Tupel besteht aus einem Spaltenindex, einem Zeilenindex und dem Wert an der durch die beiden Indizes angegebenen Position. Für eine Beispieldatenstruktur eines Tupels kann folgendes verwendet werden:
// 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;
}
Beachten Sie, dass es nicht erforderlich ist, alle Einträge in der Trainingsmatrix anzugeben, sodass die Matrixfaktorisierung zum Ausfüllen fehlender Werte verwendet werden kann. Dieses Verhalten ist beim Erstellen von Empfehlungssystemen sehr hilfreich.
Um ein besseres Verständnis der praktischen Verwendung der Matrixfaktorisierung zu erhalten, betrachten wir die Musikempfehlung als Beispiel.
Angenommen, Benutzer-IDs und Musik-IDs werden als Zeilen- bzw. Spaltenindizes verwendet, und die Werte der Matrix sind Bewertungen, die von diesen Benutzern bereitgestellt werden.
Das heißt, die Bewertung
Dieser Trainer umfasst eine stochastische Gradientenmethode und eine Koordinatenabstiegsmethode , um
Für Benutzer, die an den mathematischen Details interessiert sind, sehen Sie sich die unten angegebenen Referenzen an.
- Informationen zur Multithreadingimplementierung der verwendeten stochastischen Gradient-Methode finden Sie unter A Fast Parallel Stochastic Gradient Method for Matrix Factorization in Shared Memory Systems.
- Informationen zur Berechnung innerhalb eines einzelnen Threads finden Sie unter A Learning-rate Schedule for Stochastic Gradient Methods to Matrix Factorization.For the computation happening in a single thread, see A Learning-rate Schedule for Stochastic Gradient Methods to Matrix Factorization.
- Die verwendete Parallelkoordinatenabstiegsmethode und die Formel für die Matrixfaktorisierung mit einer Klasse finden Sie unter Auswahl negativer Stichproben für die Einklassenmatrixfaktorisierung.
- Ausführliche Informationen zur zugrunde liegenden Bibliothek finden Sie unter LIBMF: A Library for Parallel Matrix Factorization in Shared-Memory-Systemen.
Im Abschnitt Siehe auch finden Sie Links zu Verwendungsbeispielen.
Info |
Enthält TrainerInfo allgemeine Parameter für diesen Trainer. |
Fit(IData |
|
Fit(IData |
Trainiert eine MatrixFactorizationTrainer mit Trainings- und Validierungsdaten, gibt zurück MatrixFactorizationPredictionTransformer. |
Get |
Schemaverteilung für Transformatoren. Gibt das Ausgabeschema der Daten zurück, wenn das Eingabeschema dem angegebenen entspricht. |
Produkt | Versionen |
---|---|
ML.NET | Preview |