SdcaLogisticRegressionBinaryTrainer Klasse

Definition

Das IEstimator<TTransformer> zur Schulung eines binären Regressionsklassifizierungsmodells mithilfe der stochastischen Dualkoordinaten-Abstiegsmethode. Das trainierte Modell wird kalibriert und kann Wahrscheinlichkeit erzeugen, indem der Ausgabewert der linearen Funktion in eine gefüttert PlattCalibratorwird.

public sealed class SdcaLogisticRegressionBinaryTrainer : Microsoft.ML.Trainers.SdcaBinaryTrainerBase<Microsoft.ML.Calibrators.CalibratedModelParametersBase<Microsoft.ML.Trainers.LinearBinaryModelParameters,Microsoft.ML.Calibrators.PlattCalibrator>>
type SdcaLogisticRegressionBinaryTrainer = class
    inherit SdcaBinaryTrainerBase<CalibratedModelParametersBase<LinearBinaryModelParameters, PlattCalibrator>>
Public NotInheritable Class SdcaLogisticRegressionBinaryTrainer
Inherits SdcaBinaryTrainerBase(Of CalibratedModelParametersBase(Of LinearBinaryModelParameters, PlattCalibrator))
Vererbung

Hinweise

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

Eingabe- und Ausgabespalten

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

Der Trainer gibt folgende Spalten aus:

Name der Ausgabespalte Spaltentyp BESCHREIBUNG
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 Bezeichnung berechnet wird. Der Wahrscheinlichkeitswert befindet sich im Bereich [0, 1].

Trainereigenschaften

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

Details des Schulungsalgorithmus

Dieser Trainer basiert auf der Stochastic Dual Coordinate Ascent (SDCA)-Methode, einer modernsten Optimierungstechnik für konvexe Objektivfunktionen. Der Algorithmus kann skaliert werden, da es sich um einen Streamingtrainingsalgorithmus wie in einem KDD-besten Papier beschrieben.

Die Konvergenz wird durch regelmäßiges Erzwingen der Synchronisierung zwischen Primal- und Dualvariablen in einem separaten Thread unterschrieben. Verschiedene Auswahlmöglichkeiten von Verlustfunktionen werden auch bereitgestellt, z. B. Hinge-Verlust und Logistikverlust. Je nach verwendetem Verlust kann das trainierte Modell beispielsweise Vektormaschine oder logistische Regression sein. Die SDCA-Methode kombiniert mehrere der besten Eigenschaften, wie z. B. die Fähigkeit zum Streaming-Lernen (ohne die gesamte Datenmenge in Ihren Speicher zu passen), ein angemessenes Ergebnis mit einigen Scans des gesamten Datasets zu erreichen (z. B. Experimente in diesem Papier) und keine Berechnung auf Nullen in sparsamen Datensätzen auszugeben.

Beachten Sie, dass SDCA ein stochastischer und Streamingoptimierungsalgorithmus ist. Das Ergebnis hängt von der Reihenfolge der Schulungsdaten ab, da die Stopptoleranz nicht genug ist. Bei der stark konvexen Optimierung ist die optimale Lösung einzigartig und somit erreicht jeder schließlich denselben Ort. Auch in nicht stark konvexen Fällen erhalten Sie gleich gute Lösungen vom Ausführen bis zur Ausführung. Bei reproduzierbaren Ergebnissen wird empfohlen, dass ein Wert auf "Shuffle" und "NumThreads" auf 1 festgelegt wird.

Diese Klasse verwendet empirische Risikominimierung (z. B. ERM), um das Optimierungsproblem zu formulieren, das auf gesammelten Daten basiert. Beachten Sie, dass das empirische Risiko in der Regel durch Anwenden einer Verlustfunktion auf die Vorhersagen des Modells auf gesammelten Datenpunkten gemessen wird. Wenn die Schulungsdaten nicht genügend Datenpunkte enthalten (z. B. um ein lineares Modell im $n$-dimensionalen Raum zu trainieren, benötigen wir mindestens $n$-Datenpunkte), kann die Übereinpassung passieren, damit das von ERM erstellte Modell gut bei der Beschreibung von Schulungsdaten geeignet ist, aber möglicherweise keine richtigen Ergebnisse in nicht angezeigten Ereignissen vorhersagen kann. Regularisierung ist eine gängige Technik, um ein solches Phänomen zu verringern, indem die Größe (in der Regel durch die Normfunktion) von Modellparametern bestraft wird. Dieser Trainer unterstützt die flexible Net Regularisierung, die eine lineare Kombination aus L1-Norm (LASSO), $|| \textbf{w}_c || _1$, und L2-Norm (Ridge), $|| \textbf{w}_c || _2^2$-Regularisierungen für $c=1,\dots,m$. L1-Norm- und L2-Norm-Regularisierungen haben unterschiedliche Auswirkungen und Verwendungen, die sich in bestimmten Aspekten ergänzen.

Zusammen mit dem implementierten Optimierungsalgorithmus kann die L1-Norm-Regularisierung die Sparsamkeit der Modellgewichte, $\textbf{w}_1,\dots,\textbf{w}_m$, erhöhen. Wenn Benutzer den Koeffizienten der L1-Norm sorgfältig auswählen, ist es möglich, eine gute Vorhersagequalität mit einem Modell zu erzielen, das nur wenige Nicht-Null-Gewichte aufweist (z. B. 1 % der Gesamtmodellgewichte), ohne die Vorhersageleistung zu beeinträchtigen. Im Gegensatz dazu kann L2-Norm die Sparsität des trainierten Modells nicht erhöhen, aber dennoch verhindern, dass die Übereinpassung vermieden wird, indem große Parameterwerte vermieden werden. Manchmal führt die Verwendung von L2-Norm zu einer besseren Vorhersagequalität, sodass Benutzer es trotzdem ausprobieren und die Koeffizienten der L1-Norm und L2-Norm optimieren möchten. Beachten Sie, dass die Verwendung von L1-Norm impliziert, dass die Verteilung aller Modellparameter eine Laplace-Verteilung ist, während L2-Norm eine Gaussian-Verteilung für sie impliziert.

Eine aggressive Regularisierung (d. h. das Zuweisen großer Koeffizienten zu L1-Norm- oder L2-Norm-Regularisierungsbegriffen) kann die Prädiktivkapazität beeinträchtigen, indem wichtige Variablen aus dem Modell ausgeschlossen werden. Beispielsweise kann ein sehr großer L1-Normkoeffizient alle Parameter erzwingen, nullen zu sein und zu einem trivialen Modell führen. Daher ist die Auswahl der richtigen Regularisierungskoeffizienten in der Praxis wichtig.

Weitere Informationen finden Sie unter

Überprüfen Sie den Abschnitt "Siehe auch", um Links zu Beispielen für die Verwendung zu finden.

Felder

FeatureColumn

Die Featurespalte, die der Trainer erwartet.

(Geerbt von TrainerEstimatorBase<TTransformer,TModel>)
LabelColumn

Die Beschriftungsspalte, die der Trainer erwartet. Kann sein null, was angibt, dass bezeichnung nicht für Schulungen verwendet wird.

(Geerbt von TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

Die Gewichtungsspalte, die der Trainer erwartet. Kann sein null, was angibt, dass Gewicht nicht für die Schulung verwendet wird.

(Geerbt von TrainerEstimatorBase<TTransformer,TModel>)

Eigenschaften

Info

Das IEstimator<TTransformer> zur Schulung eines binären Regressionsklassifizierungsmodells mithilfe der stochastischen Dualkoordinaten-Abstiegsmethode. Das trainierte Modell wird kalibriert und kann Wahrscheinlichkeit erzeugen, indem der Ausgabewert der linearen Funktion in eine gefüttert PlattCalibratorwird.

(Geerbt von SdcaBinaryTrainerBase<TModelParameters>)

Methoden

Fit(IDataView)

Züge und gibt einen ITransformer.

(Geerbt von TrainerEstimatorBase<TTransformer,TModel>)
GetOutputSchema(SchemaShape)

Das IEstimator<TTransformer> zur Schulung eines binären Regressionsklassifizierungsmodells mithilfe der stochastischen Dualkoordinaten-Abstiegsmethode. Das trainierte Modell wird kalibriert und kann Wahrscheinlichkeit erzeugen, indem der Ausgabewert der linearen Funktion in eine gefüttert PlattCalibratorwird.

(Geerbt von TrainerEstimatorBase<TTransformer,TModel>)

Erweiterungsmethoden

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

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

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

Wenn sie eine Schätzung erhalten, geben Sie ein Umbruchobjekt zurück, das einen Delegaten aufruft, sobald Fit(IDataView) er aufgerufen wird. Es ist häufig wichtig, dass ein Schätzer Informationen darüber zurückgibt, was passt, weshalb die Fit(IDataView) Methode ein speziell typiertes Objekt zurückgibt, anstatt nur ein allgemeines ITransformerObjekt zurückzugeben. IEstimator<TTransformer> Gleichzeitig werden jedoch häufig Pipelines mit vielen Objekten gebildet, daher müssen wir möglicherweise eine Kette von Schätzern erstellen, über EstimatorChain<TLastTransformer> die der Schätzer, für den wir den Transformator erhalten möchten, irgendwo in dieser Kette begraben wird. Für dieses Szenario können wir über diese Methode eine Stellvertretung anfügen, die aufgerufen wird, sobald sie aufgerufen wird.

Gilt für:

Weitere Informationen