MatrixFactorizationTrainer Klasse

Definition

Die IEstimator<TTransformer> zu prognostizierenden Elemente in einer Matrix mithilfe der Matrixfaktorisierung (auch als Typ der gemeinsamen Filterung bezeichnet).

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

Um diesen Trainer zu erstellen, verwenden Sie MatrixFactorization oder MatrixFactorization(Options).

Eingabe- und Ausgabespalten

Es sind drei Eingabespalten erforderlich, eine für Matrixzeilenindizes, eine für Matrixspaltenindizes und eine für Werte (d. h. Beschriftungen) in der Matrix. Sie definieren gemeinsam eine Matrix im COO-Format . Der Typ für die Beschriftungsspalte ist ein VektorSingle, während die anderen beiden Spalten schlüsseltypskaler sind.

Name der Ausgabespalte Spaltentyp Description
Score Single Der vorhergesagte Matrixwert an der durch Eingabespalten angegebenen Position (Zeilenindexspalte und Spaltenindexspalte).

Trainermerkmale

Machine Learning-Aufgabe Empfehlungssysteme
Ist normalisierung erforderlich? Yes
Ist zwischenspeichern erforderlich? Yes
Erforderliches NuGet zusätzlich zu Microsoft.ML Microsoft.ML.Recommender
Exportierbar in ONNX No

Hintergrund

Die Grundidee der Matrixfaktorisierung besteht darin, zwei Matrixmatrizen mit niedriger Rangfolge zu finden, um die Trainingsmatrix anzunähern. In diesem Modul sind die erwarteten Schulungsdaten (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 Schulungsmatrix anzugeben, sodass die Matrixfaktorisierung verwendet werden kann, um fehlende Werte auszufüllen. Dieses Verhalten ist beim Erstellen von Empfehlungssystemen sehr hilfreich.

Um ein besseres Verständnis der praktischen Verwendung der Matrixfaktorisierung zu bieten, betrachten wir die Musikempfehlung als Beispiel. Gehen Sie davon aus, dass Benutzer-IDs und Musik-IDs als Zeilen- bzw. Spaltenindizes verwendet werden, und die Werte der Matrix sind Bewertungen, die von diesen Benutzern bereitgestellt werden. Das heißt, die Bewertung $r$ an Zeile $u$ und Spalte $v$ bedeutet, dass der Benutzer $u$ $r$ $v$ an element $v$ vergeben. Eine unvollständige Matrix ist sehr häufig, da nicht alle Benutzer ihr Feedback an alle Produkte senden können (z. B. niemand kann zehn Millionen Songs bewerten). Angenommen, $R\in{\mathbb R}^{m\times n}$ ist eine m-by-n-Bewertungsmatrix und der Rang der beiden Faktormatrizen $P\in {\mathbb R}^{k\times m}$ und $Q\in {\mathbb R}^{k\times n}$, wobei $k$ der Annäherungsrang ist. Die vorhergesagte Bewertung in der zeile $u$-th und die spalte $v$-th in $R$ wäre das innere Produkt der zeile $u$-th zeile von $P$ und der $v$-th Zeile von $Q$; das heißt, $R$ wird durch das Produkt der Transponieren von $P$ ($P^T$) und $Q$angenähert. Beachten Sie, dass $k$ in der Regel viel kleiner als $m$ und $n$ist, sodass $P^T Q$ in der Regel eine Annäherung von $R$ mit niedriger Rangfolge bezeichnet wird.

Dieser Trainer umfasst eine stochastische Farbverlaufsmethode und eine Koordinatenabstiegsmethode zum Auffinden von $P$ und $Q$ durch Minimierung des Abstands zwischen (nicht fehlendem Teil) $R$ und seiner Annäherung $P^T Q$. Die eingeschlossene Koordinatenabstiegsmethode richtet sich speziell an die Matrixfaktorisierung einer Klasse, bei der alle beobachteten Bewertungen positive Signale sind (d. a. alle Bewertungswerte sind 1). Beachten Sie, dass beim Aufrufen von MatrixFactorization(Options)die einzige Möglichkeit zum Aufrufen der Matrixfaktorisierung die 1-Klassen-Quadrat-Verlustfunktion zu Verlustfunktion zugewiesen wird. Auf Seite 6 und Seite 28 finden Sie hier eine kurze Einführung in die Standardmatrixfaktorisierung und die Matrixfaktorisierung mit einer Klasse. Die Standardeinstellung führt zur Standardmatrixfaktorisierung. 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, finden Sie die nachstehenden Referenzen.

Im Abschnitt "Siehe auch" finden Sie Links zu Verwendungsbeispielen.

Eigenschaften

Name Beschreibung
Info

Dies TrainerInfo enthält allgemeine Parameter für diesen Trainer.

Methoden

Name Beschreibung
Fit(IDataView, IDataView)

Trainiert eine MatrixFactorizationTrainer Verwendung von Schulungs- und Validierungsdaten, gibt eine MatrixFactorizationPredictionTransformer.

Fit(IDataView) Züge und Gibt einen MatrixFactorizationPredictionTransformer.
GetOutputSchema(SchemaShape)

Schemaverteilung für Transformatoren. Gibt das Ausgabeschema der Daten zurück, wenn das Eingabeschema wie die bereitgestellte ist.

Erweiterungsmethoden

Name Beschreibung
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

Fügen Sie einen "Zwischenspeicherungsprüfpunkt" an die Schätzkette an. Dadurch wird sichergestellt, dass die nachgeschalteten Schätzer anhand zwischengespeicherter Daten trainiert werden. Es ist hilfreich, einen Zwischenspeicherprüfpunkt vor Trainern zu haben, die mehrere Datendurchläufe übernehmen.

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

Geben Sie bei einer Schätzung ein Wrapping-Objekt zurück, das eine Stellvertretung aufruft, sobald Fit(IDataView) sie aufgerufen wird. Es ist häufig wichtig, dass ein Schätzer Informationen zu dem, was passt, zurückgeben, weshalb die Fit(IDataView) Methode ein speziell typiertes Objekt und nicht nur ein allgemeines ITransformerObjekt zurückgibt. IEstimator<TTransformer> Gleichzeitig werden jedoch oft in Pipelines mit vielen Objekten gebildet, daher müssen wir möglicherweise eine Kette von Schätzern bauen, über EstimatorChain<TLastTransformer> die der Schätzer, für den wir den Transformator erhalten wollen, irgendwo in dieser Kette begraben wird. Für dieses Szenario können wir über diese Methode einen Delegat anfügen, der aufgerufen wird, sobald "Fit" aufgerufen wird.

Gilt für:

Weitere Informationen