FieldAwareFactorizationMachineTrainer Klasse
Definition
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.
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 |
| 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
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, String, String, String)
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, String[], String, String)
- FieldAwareFactorizationMachine(BinaryClassificationCatalog+BinaryClassificationTrainers, FieldAwareFactorizationMachineTrainer+Options)
- FieldAwareFactorizationMachineTrainer.Options