MatrixFactorizationTrainer Klasse

Definition

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

Hinweise

Verwenden Sie MatrixFactorization oder MatrixFactorization(Options), um diesen Trainer zu erstellen.

Eingabe- und Ausgabespalten

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).

Trainermerkmale

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

Hintergrund

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 $r$ bei Zeile $u$ und Spalte $v$ bedeutet, dass Der Benutzer $u$ $r$ an element $v$ gibt. Eine unvollständige Matrix ist sehr häufig, da nicht alle Benutzer ihr Feedback zu allen Produkten geben können (z. B. kann niemand zehn Millionen Songs bewerten). Angenommen, $R\in{\mathbb R}^{m\times n}$ ist eine m-by-n-Bewertungsmatrix und der Rang der beiden Faktormatrizen sind $P\in {\mathbb R}^{k\times m}$ und $Q\in {\mathbb R}^{k\times n}$, wobei $k$ der Näherungsrang ist. Die vorhergesagte Bewertung in der $u$-ten Zeile und der $v$-ten Spalte in $R$ wäre das innere Produkt der $u$-ten Zeile von $P$ und der $v$-ten Zeile von $Q$; das heißt, $R$ wird durch das Produkt der Transponenz von $P$ ($P^T$) und $Q$ angenähert. Beachten Sie, dass $k$ in der Regel viel kleiner ist als $m$ und $n$, sodass $P^T Q$ in der Regel als niedrigwertige Näherung von $R$ bezeichnet wird.

Dieser Trainer umfasst eine stochastische Gradientenmethode und eine Koordinatenabstiegsmethode , um $P$ und $Q$ zu finden, indem der Abstand zwischen (nicht fehlendem Teil von) $R$ und dessen Näherung $P^T Q$ minimiert wird. Die eingeschlossene Koordinatenabstiegsmethode ist speziell für die Matrixfaktorisierung mit einer Klasse vorgesehen, bei der alle beobachteten Bewertungen positive Signale sind (d. a. alle Bewertungswerte sind 1). Beachten Sie, dass die einzige Möglichkeit zum Aufrufen der 1-Klassen-Matrix-Factorisierung darin besteht, beim Aufrufen von MatrixFactorization(Options) der Verlustfunktioneinen Klassenquadratverlust zuzuweisen. Auf Seite 6 und Seite 28 finden Sie hier eine kurze Einführung in die Standardmatrixfaktorisierung und die Einklassenmatrixfaktorisierung. Die Standardeinstellung induziert die Standardmatrix-Factorisierung. Die zugrunde liegende Bibliothek, die in ML.NET Matrixfaktorisierung verwendet wird, finden Sie in einem GitHub-Repository.

Für Benutzer, die an den mathematischen Details interessiert sind, sehen Sie sich die unten angegebenen Referenzen an.

Im Abschnitt Siehe auch finden Sie Links zu Verwendungsbeispielen.

Eigenschaften

Info

Enthält TrainerInfo allgemeine Parameter für diesen Trainer.

Methoden

Fit(IDataView) Trainiert und gibt zurück MatrixFactorizationPredictionTransformer.
Fit(IDataView, IDataView)

Trainiert eine MatrixFactorizationTrainer mit Trainings- und Validierungsdaten, gibt zurück MatrixFactorizationPredictionTransformer.

GetOutputSchema(SchemaShape)

Schemaverteilung für Transformatoren. Gibt das Ausgabeschema der Daten zurück, wenn das Eingabeschema dem angegebenen entspricht.

Gilt für:

Weitere Informationen