SdcaNonCalibratedBinaryTrainer 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.
Für IEstimator<TTransformer> die Schulung eines binären Regressionsklassifizierungsmodells mithilfe der stochastischen Dualkoordinaten-Abstiegsmethode.
public sealed class SdcaNonCalibratedBinaryTrainer : Microsoft.ML.Trainers.SdcaBinaryTrainerBase<Microsoft.ML.Trainers.LinearBinaryModelParameters>
type SdcaNonCalibratedBinaryTrainer = class
inherit SdcaBinaryTrainerBase<LinearBinaryModelParameters>
Public NotInheritable Class SdcaNonCalibratedBinaryTrainer
Inherits SdcaBinaryTrainerBase(Of LinearBinaryModelParameters)
- Vererbung
-
SdcaTrainerBase<SdcaBinaryTrainerBase<TModelParameters>.BinaryOptionsBase,BinaryPredictionTransformer<TModelParameters>,TModelParameters>SdcaNonCalibratedBinaryTrainer
Hinweise
Um diesen Trainer zu erstellen, verwenden Sie SdcaNonCalibrated oder SdcaNonCalibrated(Options).
Eingabe- und Ausgabespalten
Die Daten in der Spalte für die Eingabezeichnung müssen Boolean sein. Die Eingabefeatures-Spaltendaten müssen ein bekannter Vektor von Single. Der Trainer gibt folgende Spalten aus:
Name der Ausgabespalte | Spaltentyp | BESCHREIBUNG |
---|---|---|
Score |
Single | Die von dem Modell berechnete ungebundene Bewertung. |
PredictedLabel |
Boolean | Der vorhergesagte Bezeichnung, basierend auf dem Abzeichnen der Bewertung. Eine negative Bewertung wird false und eine positive Bewertung wird true zugeordnet. |
Trainereigenschaften
ML-Aufgabe | Binäre Klassifizierung |
Ist die Normalisierung erforderlich? | Yes |
Ist zwischenspeichern erforderlich? | No |
Erforderliche NuGet zusätzlich zu Microsoft.ML | Keine |
Exportierbar in ONNX | Yes |
Schulungsalgorithmusdetails
Dieser Trainer basiert auf der Stochastic Dual Coordinate Ascent (SDCA)-Methode, einer state-of-the-art-Optimierungstechnik für konvexe Objektivfunktionen. Der Algorithmus kann skaliert werden, da es sich um einen Streamingschulungsalgorithmus 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 Optionen für Verlustfunktionen werden auch bereitgestellt, z. B. Löschverlust und Logistikverlust. Abhängig vom verwendeten Verlust kann das trainierte Modell beispielsweise Vektormaschine oder logistikielle Regression unterstützen. Die SDCA-Methode kombiniert mehrere der besten Eigenschaften, die die Möglichkeit haben, Streaming-Lernvorgänge durchzuführen (ohne den gesamten Datensatz in Ihren Arbeitsspeicher zu passen), ein angemessenes Ergebnis mit einigen Scans des gesamten Datensatzes zu erreichen (z. B. Experimente in diesem Papier) und keine Berechnung auf Nullen in sparse Datentypen.
Beachten Sie, dass SDCA ein stochastisches und Streamingoptimierungsalgorithmus ist. Das Ergebnis hängt von der Reihenfolge der Schulungsdaten ab, da die Toleranz nicht eng genug ist. In der stark konvexen Optimierung ist die optimale Lösung einzigartig und daher erreicht jeder schließlich denselben Ort. Selbst in nicht stark konvexen Fällen erhalten Sie gleich gute Lösungen vom Ausführen bis zur Ausführung. Für reproduzierbare Ergebnisse wird empfohlen, dass ein Wert auf "Shuffle" und "NumThreads" auf 1 festgelegt wird.
Diese Klasse verwendet empirische Risikominimierung (d. h. ERM), um das Optimierungsproblem zu formulieren, das auf gesammelten Daten basiert. Beachten Sie, dass empirisches 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 in $n$-dimensionalen Raum zu trainieren, benötigen wir mindestens $n$-Datenpunkte ), kann das Überpassen geschehen, damit das modell, das von ERM erzeugt wird, gut bei der Beschreibung von Schulungsdaten ist, aber möglicherweise keine korrekten Ergebnisse in nicht verfügbaren Ereignissen vorhergesagt werden können. Die Regularisierung ist eine allgemeine Technik, um ein solches Phänomen zu verringern, indem die Größe (normalerweise durch die Normfunktion) von Modellparametern bestraft wird. Dieser Trainer unterstützt die elastische Net-Regularisierung, die eine lineare Kombination aus L1-Norm (LASSO), $|| \textbf{w}_c || _1$, und L2-Norm (Ridge), $|| \textbf{w}_c || _2^2$ regularizations for $c=1,\dots,m$. L1-Norm- und L2-Norm-Regularisierungen haben unterschiedliche Auswirkungen und Verwendungen, die in bestimmten Aspekten ergänzen.
Zusammen mit dem implementierten Optimierungsalgorithmus kann die L1-Norm-Regularisierung die Sparsität der Modellgewichte, $\textbf{w}_1,\dots,\textbf{w}_m$erhöhen. Wenn Benutzer sorgfältig den Koeffizienten der L1-Norm auswählen, ist es möglich, eine gute Vorhersagequalität mit einem Modell zu erzielen, das nur wenige Nicht-Null-Gewichte (z. B. 1 % der Gesamtmodellgewichte) aufweist, ohne die Vorhersagekraft zu beeinträchtigen. Im Gegensatz dazu kann L2-Norm die Sparsität des trainierten Modells nicht erhöhen, aber dennoch verhindern, dass die Überlastung verhindert wird, indem große Parameterwerte vermieden werden. Manchmal führt die Verwendung von L2-Norm zu einer besseren Vorhersagequalität, sodass Benutzer es noch ausprobieren und die Koeffizienten von L1-Norm und L2-Norm optimieren möchten. Beachten Sie, dass die Verwendung von L1-Norm bedeutet, dass die Verteilung aller Modellparameter eine Laplace-Verteilung ist, während L2-Norm eine Gaussian-Verteilung für sie bedeutet.
Eine aggressive Regularisierung (d. h. große Koeffizienten zu L1-Norm- oder L2-Norm-Regularisierungsbedingungen) kann die Vorhersagekapazität beeinträchtigen, indem wichtige Variablen aus dem Modell ausgeschlossen werden. Beispielsweise kann ein sehr großer L1-Norm-Koeffizient alle Parameter auf Nullen erzwingen und zu einem trivialen Modell führen. Daher ist die Auswahl der richtigen Regularisierungskoeffizienten in der Praxis wichtig.
Weitere Informationen finden Sie unter
- Skalierung des Stochastischen Dual-Koordinaten-Abstiegs.
- Stochastische Dual-Koordinaten-Ascent-Methoden für reguläre Verlustminimisierung.
Überprüfen Sie den Abschnitt "Siehe auch", um Links zu Beispielen der Verwendung zu finden.
Felder
FeatureColumn |
Die Featurespalte, die der Trainer erwartet. (Geerbt von TrainerEstimatorBase<TTransformer,TModel>) |
LabelColumn |
Die Bezeichnungsspalte, die der Trainer erwartet. Kann sein |
WeightColumn |
Die Gewichtsspalte, die der Trainer erwartet.
|
Eigenschaften
Info |
Für IEstimator<TTransformer> die Schulung eines binären Regressionsklassifizierungsmodells mithilfe der stochastischen Dualkoordinaten-Abstiegsmethode. (Geerbt von SdcaBinaryTrainerBase<TModelParameters>) |
Methoden
Fit(IDataView) |
Züge und zurückgeben eine ITransformer. (Geerbt von TrainerEstimatorBase<TTransformer,TModel>) |
GetOutputSchema(SchemaShape) |
Für IEstimator<TTransformer> die Schulung eines binären Regressionsklassifizierungsmodells mithilfe der stochastischen Dualkoordinaten-Abstiegsmethode. (Geerbt von TrainerEstimatorBase<TTransformer,TModel>) |
Erweiterungsmethoden
AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment) |
Fügen Sie einen "Zwischenspeicherpunkt" an die Stimatorkette an. Dadurch wird sichergestellt, dass die nachgelagerten Stimatoren gegen zwischengespeicherte Daten trainiert werden. Es ist hilfreich, einen Cache-Prüfpunkt zu haben, bevor Trainer, die mehrere Daten übergeben. |
WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>) |
Geben Sie aufgrund einer Schätzung ein Umbruchobjekt zurück, das einen Stellvertretung aufruft, sobald Fit(IDataView) er aufgerufen wird. Es ist oft wichtig, dass eine Schätzung Informationen zu dem zurückgibt, was passt, weshalb die Fit(IDataView) Methode ein spezifisches typiertes Objekt zurückgibt, anstatt nur ein allgemeines ITransformer. Gleichzeitig IEstimator<TTransformer> werden jedoch oft Pipelines mit vielen Objekten gebildet, sodass wir möglicherweise eine Kette von EstimatorChain<TLastTransformer> Schätzern erstellen müssen, über 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 einmal aufgerufen wird, wenn die Anpassung aufgerufen wird. |
Gilt für:
Weitere Informationen
- SdcaNonCalibrated(BinaryClassificationCatalog+BinaryClassificationTrainers, String, String, String, ISupportSdcaClassificationLoss, Nullable<Single>, Nullable<Single>, Nullable<Int32>)
- SdcaNonCalibrated(BinaryClassificationCatalog+BinaryClassificationTrainers, SdcaNonCalibratedBinaryTrainer+Options)
- SdcaNonCalibratedBinaryTrainer.Options