FieldAwareFactorizationMachineTrainer Klasse

Definition

Das IEstimator<TTransformer> Ziel mithilfe eines feldfähigen Faktorisierungsmaschinenmodells, das mithilfe einer stochastischen Farbverlaufsmethode trainiert wird.

public sealed class FieldAwareFactorizationMachineTrainer : Microsoft.ML.IEstimator<Microsoft.ML.Trainers.FieldAwareFactorizationMachinePredictionTransformer>
type FieldAwareFactorizationMachineTrainer = class
    interface IEstimator<FieldAwareFactorizationMachinePredictionTransformer>
Public NotInheritable Class FieldAwareFactorizationMachineTrainer
Implements IEstimator(Of FieldAwareFactorizationMachinePredictionTransformer)
Vererbung
FieldAwareFactorizationMachineTrainer
Implementiert

Hinweise

Eingabe- und Ausgabespalten

Die Daten in der Spalte für die Eingabezeichnung müssen Boolean sein. Die Spaltendaten der Eingabefeatures müssen ein Vektor mit bekannter Größe sein Single.

Der Trainer gibt folgende Spalten aus:

Name der Ausgabespalte Spaltentyp Description
Score Single Die ungebundene Bewertung, die vom Modell berechnet wurde.
PredictedLabel Boolean Der vorhergesagte Bezeichnung, basierend auf dem Abzeichnen der Bewertung. Eine negative Bewertung wird false und eine positive Bewertung wird true zugeordnet.
Probability Single Die Wahrscheinlichkeit, die durch die Kalibrierung des Werts "true" als Beschriftung berechnet wird. Der Wahrscheinlichkeitswert liegt im Bereich [0, 1].

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

Im Gegensatz zu anderen binären Klassifizierern, die nur eine Featurespalte unterstützen können, kann der Computer für die Feldfunktionsfaktorisierung mehrere Featurespalten verwenden. Jede Spalte wird als Container einiger Features betrachtet, und ein solcher Container wird als Feld bezeichnet. Beachten Sie, dass alle Featurespalten Float-Vektoren sein müssen, ihre Dimensionen können jedoch unterschiedlich sein. Die Motivation, Features in verschiedene Felder aufzuteilen, besteht darin, Features aus unterschiedlichen Verteilungen unabhängig voneinander zu modellieren. Beispielsweise können im Online-Spielspeicher Features, die aus dem Benutzerprofil erstellt wurden, und denen aus dem Spielprofil zwei verschiedenen Feldern zugewiesen werden.

Trainermerkmale

Machine Learning-Aufgabe Binäre Klassifizierung
Ist normalisierung erforderlich? Yes
Ist zwischenspeichern erforderlich? No
Erforderliches NuGet zusätzlich zu Microsoft.ML Nichts
Exportierbar in ONNX No

Hintergrund

Factorization Machine Family ist eine leistungsstarke Modellgruppe für überwachte Lernprobleme. Sie wurde 2010 erstmals in Steffen Rendles Factorization Machines Papier eingeführt. Später wurde eine seiner generalisierten Versionen, feldbewusste Factorisierungsmaschine, zu einem wichtigen Prädiktivmodul in den letzten Empfehlungssystemen und Klick-through-Vorhersage-Wettbewerben. Beispiele hierfür finden Sie in den KDD-Cup 2012 von Steffen Rendle (Track 1 und Track 2), Criteo's, Avazus und Outbrains Klickvorhersage-Herausforderungen auf Kaggle.

Factorization Machines sind besonders leistungsfähig, wenn Funktionskonjunktionen extrem mit dem Signal korreliert sind, das Sie vorhersagen möchten. Ein Beispiel für Featurepaare, die wichtige Konjunktionen bilden können, ist die Benutzer-ID und Musik-ID in der Musikempfehlung. Wenn ein Dataset nur aus dichten numerischen Features besteht, wird die Verwendung der Factorisierungsmaschine nicht empfohlen, oder einige Featurisierungen sollten ausgeführt werden.

Bewertungsfunktion

Feldfähige Factorisierungsmaschine ist eine Bewertungsfunktion, die Featurevektoren aus verschiedenen Feldern zu einer Skalarbewertung ordnet. Gehen Sie davon aus, dass alle $m$-Featurespalten in einem langen Featurevektor $\textbf{x} in {\mathbb R}^n$ und ${\mathcal F}(j)$ verkettet werden, der den Feldeinzug des $j$-th-Features angibt. Die entsprechende Bewertung lautet $\hat{y}(\textbf{x}) = \langle \textbf{w}, \textbf{x} \rangle + \sum_{j = 1}^n \sum_{j' = j + 1}^n \langle \textbf{v}_{j, {\mathcal F}(j')}, \textbf{v}_{j', {\mathcal F}(j)} \rWinkel x_j x_{j'}$, wobei $\langle \cdot, \cdot \rangle$ der innere Produktoperator ist$\textbf{w} \in {\mathbb R}^n$ die linearen Koeffizienten speichert, und $\textbf{v}_{j, f}\in {\mathbb R}^k$ ist die $j$-th-Funktion in der latenten Fläche des $f$-th-Felds. Beachten Sie, dass $k$ die latente Dimension ist, die vom Benutzer angegeben wird.

Die vorhergesagte Bezeichnung ist das Zeichen $\hat{y}$. Wenn $\hat{y} > 0$, prognostiziert dieses Modell "true". Andernfalls wird "false" vorhergesagt.

Eine systematische Einführung in die feldfähige Factorisierungsmaschine finden Sie in diesem Dokument.

Details des Schulungsalgorithmus

Der in FieldAwareFactorizationMachineTrainer implementierte Algorithmus basiert auf einer stochastischen Farbverlaufsmethode. Algorithmusdetails werden in Algorithmus 3 in diesem Onlinedokument beschrieben. Die minimierte Verlustfunktion ist logistischer Verlust, sodass das trainierte Modell als nicht lineare logistische Regression betrachtet werden kann.

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

Methoden

Name Beschreibung
Fit(IDataView, IDataView, FieldAwareFactorizationMachineModelParameters)

Setzt die Schulung einer FieldAwareFactorizationMachineTrainer bereits trainierten modelParameters und/oder Validierungsdaten fort und gibt eine FieldAwareFactorizationMachinePredictionTransformer.

Fit(IDataView)

Züge und Gibt einen FieldAwareFactorizationMachinePredictionTransformer.

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