Gewusst wie: Auswählen eines ML.NET-Algorithmus
Für jede ML.NET-Aufgabe stehen mehrere Trainingsalgorithmen zur Auswahl. Welchen Sie auswählen, hängt von dem Problem ab, das Sie zu lösen versuchen, den Merkmalen Ihrer Daten und den Compute- und Speicherressourcen, die Ihnen zur Verfügung stehen. Beachten Sie unbedingt, dass das Trainieren von Machine Learning-Modellen ein iterativer Prozess ist. Sie müssen möglicherweise mehrere Algorithmen ausprobieren, um den am besten geeigneten herauszufinden.
Algorithmen arbeiten mit Features. Features sind numerische Werte, die aus Ihren Eingabedaten berechnet werden. Sie sind optimale Eingaben für Machine Learning-Algorithmen. Ihre Eingaberohdaten transformieren Sie mit einer oder mehreren Datentransformationen in Features. Beispielsweise werden Textdaten in einen Satz von Wortzahlen und Wortkombinationszahlen umgewandelt. Sobald die Features mithilfe von Datentransformationen aus einem Rohdatentyp extrahiert worden sind, werden sie als featureextrahiert bezeichnet. Beispielsweise featureextrahierter Text, oder featureextrahierte Bilddaten.
Trainer = Algorithmus + Aufgabe
Ein Algorithmus ist die Berechnung, die ausgeführt wird, um ein Modell zu erzeugen. Verschiedene Algorithmen schaffen Modelle mit unterschiedlichen Eigenschaften.
Mit ML.NET kann der gleiche Algorithmus für verschiedene Aufgaben angewendet werden. Beispielsweise kann die Stochastic Dual Coordinate Ascent-Methode für Binärklassifizierung, Multiklassenklassifizierung und Regression verwendet werden. Der Unterschied besteht darin, wie die Ausgabe des Algorithmus interpretiert wird, um der Aufgabe zu entsprechen.
Für jede Kombination von Algorithmus und Aufgabe bietet ML.NET eine Komponente, die den Trainingsalgorithmus und die Interpretation ausführt. Diese Komponenten werden als Trainer bezeichnet. SdcaRegressionTrainer verwendet z.B. den StochasticDualCoordinatedAscent-Algorithmus, der auf die Regression-Aufgabe angewendet wird.
Lineare Algorithmen
Lineare Algorithmen erzeugen ein Modell, das Bewertungen aus einer linearen Kombination der Eingabedaten und einem Satz von Gewichtungen berechnet. Die Gewichtungen sind Parameter des während des Trainings geschätzten Modells.
Lineare Algorithmen eignen sich gut für Features, die linear separierbar sind.
Vor dem Training mit einem linearen Algorithmus sollten die Features normalisiert werden. Dies verhindert, dass ein Feature größeren Einfluss auf das Ergebnis hat als andere.
Im Allgemeinen sind lineare Algorithmen skalierbar und schnell sowie kostengünstig zu trainieren und vorherzusagen. Sie werden nach der Anzahl der Merkmale und ungefähr nach der Größe des Trainingsdatasets skaliert.
Lineare Algorithmen führen mehrere Durchläufe über die Trainingsdaten aus. Wenn Ihr Dataset in den Arbeitsspeicher passt, können Sie die Ausführung des Trainings beschleunigen, indem Sie Ihrer ML.NET-Pipeline vor dem Anfügen des Trainers einen Cacheprüfpunkt hinzufügen.
Gemitteltes Perzeptron
Am besten geeignet zur Textklassifizierung.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
AveragedPerceptronTrainer | Binäre Klassifizierung | Ja |
Stochastischer dualer koordinierter Anstieg
Optimieren für gute Standardleistung nicht erforderlich.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
SdcaLogisticRegressionBinaryTrainer | Binäre Klassifizierung | Ja |
SdcaNonCalibratedBinaryTrainer | Binäre Klassifizierung | Ja |
SdcaMaximumEntropyMulticlassTrainer | Multiklassenklassifizierung | Ja |
SdcaNonCalibratedMulticlassTrainer | Multiklassenklassifizierung | Ja |
SdcaRegressionTrainer | Regression | Ja |
L-BFGS
Wird verwendet, wenn die Anzahl der Features groß ist. Erzeugt Trainingsstatistiken für die logistische Regression, aber skaliert nicht so gut wie der AveragedPerceptronTrainer.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
LbfgsLogisticRegressionBinaryTrainer | Binäre Klassifizierung | Ja |
LbfgsMaximumEntropyMulticlassTrainer | Multiklassenklassifizierung | Ja |
LbfgsPoissonRegressionTrainer | Regression | Ja |
Symbolischer stochastischer Gradientenabfall
Schneller und zuverlässiger präziser linearer Binärklassifizierungstrainer. Skaliert gut nach Anzahl der Prozessoren.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
SymbolicSgdLogisticRegressionBinaryTrainer | Binäre Klassifizierung | Ja |
Onlinegradientenverfahren
Implementiert das standardmäßige stochastische Gradientenverfahren (nicht Batch) mit einer Auswahl von Verlustfunktionen und einer Option zum Aktualisieren des Gewichtungsvektors mit dem Durchschnitt der im Laufe der Zeit vorgekommenen Vektoren.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
OnlineGradientDescentTrainer | Regression | Ja |
Entscheidungsstrukturalgorithmen
Entscheidungsstrukturalgorithmen erstellen ein Modell, das eine Reihe von Entscheidungen enthält: effektiv ein Flussdiagramm mit den Datenwerten.
Features müssen nicht linear separierbar sein, um diesen Typ des Algorithmus zu verwenden. Features müssen auch nicht normalisiert werden, da die einzelnen Werte im Featurevektor unabhängig voneinander im Entscheidungsprozess verwendet werden.
Entscheidungsstrukturalgorithmen sind in der Regel sehr genau.
Mit Ausnahme von Generalized Additive Models (GAMs) kann Strukturmodellen die Erklärbarkeit fehlen, wenn die Anzahl von Features groß ist.
Entscheidungsstrukturalgorithmen nehmen mehr Ressourcen in Anspruch und skalieren nicht so gut wie lineare. Sie funktionieren gut bei Datasets, die in den Arbeitsspeicher passen.
Verstärkte Entscheidungsstrukturen sind eine Gruppe kleiner Strukturen, wobei jede Struktur die Eingabedaten bewertet und das Ergebnis der nächsten Struktur übergibt, um ein besseres Ergebnis zu erzeugen, usw., wobei jede Struktur in der Gruppe das vorherige Ergebnis verbessert.
Machine für verstärkten leichten Anstieg
Schnellster und präzisester Trainer der Binärklassifizierungsstruktur. Hochgradig optimierbar.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
LightGbmBinaryTrainer | Binäre Klassifizierung | Ja |
LightGbmMulticlassTrainer | Multiklassenklassifizierung | Ja |
LightGbmRegressionTrainer | Regression | Ja |
LightGbmRankingTrainer | Rangfolge | Nein |
Fast-Tree
Für featureextrahierte Bilddaten verwenden. Resilient gegenüber unausgewogenen Daten. Hochgradig optimierbar.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
FastTreeBinaryTrainer | Binäre Klassifizierung | Ja |
FastTreeRegressionTrainer | Regression | Ja |
FastTreeTweedieTrainer | Regression | Ja |
FastTreeRankingTrainer | Rangfolge | Nein |
Fast-Forest
Funktioniert gut mit verrauschten Daten.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
FastForestBinaryTrainer | Binäre Klassifizierung | Ja |
FastForestRegressionTrainer | Regression | Ja |
Generalized Additive Model (GAM)
Am besten geeignet für Probleme, die gut mit Strukturalgorithmen bearbeitet werden, wo jedoch die Erklärbarkeit eine Priorität ist.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
GamBinaryTrainer | Binäre Klassifizierung | Nein |
GamRegressionTrainer | Regression | Nein |
Matrixfaktorisierung
Matrixfaktorisierung
Wird für die gemeinsame Filterung bei Empfehlung verwendet.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
MatrixFactorizationTrainer | Empfehlung | Nein |
Field Aware Factorization Machine (Faktorisierungsverfahren mit Berücksichtigung von Feldern)
Am besten bei kategorischen Daten mit geringer Dichte mit großen Datasets.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
FieldAwareFactorizationMachineTrainer | Binäre Klassifizierung | Nein |
Metaalgorithmen
Diese Trainer erstellen einen Multiklassentrainer aus einem binären Trainer. Verwenden mit AveragedPerceptronTrainer, LbfgsLogisticRegressionBinaryTrainer, SymbolicSgdLogisticRegressionBinaryTrainer, LightGbmBinaryTrainer, FastTreeBinaryTrainer, FastForestBinaryTrainer, GamBinaryTrainer.
Einer gegen alle
Dieser Multiklassenklassifizierer trainiert einen binären Klassifizierer für jede Klasse, der diese Klasse von allen anderen Klassen unterscheidet. Ist in der Skalierung durch die Anzahl der zu kategorisierenden Klassen beschränkt.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
OneVersusAllTrainer | Multiklassenklassifizierung | Ja |
Paarweise Kopplung
Dieser Multiklassenklassifizierer trainiert einen binären Klassifizierungsalgorithmus g für jedes Paar von Klassen. Ist in der Skalierung durch die Anzahl der zu kategorisierenden Klassen begrenzt, da jede Kombination von zwei Klassen trainiert werden muss.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
PairwiseCouplingTrainer | Multiklassenklassifizierung | Nein |
K-Means
Wird für Clustering verwendet.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
KMeansTrainer | Clustering | Ja |
Hauptkomponentenanalyse
Wird für die Anomalieerkennung verwendet.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
RandomizedPcaTrainer | Anomalieerkennung | Nein |
Naive Bayes
Verwenden Sie diesen Multiklassen-Klassifizierungsalgorithmus, wenn die Funktionen voneinander unabhängig sind und das Trainingsdataset klein ist.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
NaiveBayesMulticlassTrainer | Multiklassenklassifizierung | Ja |
Vorheriger Trainer
Verwenden Sie diesen Binärklassifizierungsalgorithmus, um eine Basis zum Messen der Leistung anderer Trainer zu erhalten. Um effektiv zu sein, sollten die Metriken der anderen Trainer besser sein als der vorherige Trainer.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
PriorTrainer | Binäre Klassifizierung | Ja |
Support Vector Machines
SVMs (Support Vector Machines) sind eine äußerst beliebt und gut erforschte Klasse von überwachten Lernmodellen, die bei linearen und nicht linearen Klassifikationsaufgaben verwendet werden können.
In der aktuellen Forschung wurde der Schwerpunkt auf Möglichkeiten zur Optimierung dieser Modelle gelegt, um sie effizient auf größere Trainingssets skalieren zu können.
Lineare SVM
Sagt ein Ziel mithilfe eines linearen binären Klassifizierungsmodells voraus, das mit booleschen bezeichneten Daten trainiert wird. Wechselt zwischen den Schritten für das stochastische Gradientenverfahren und den Projektionsschritten.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
LinearSvmTrainer | Binäre Klassifizierung | Ja |
Lokale Deep SVM
Sagt ein Ziel mithilfe eines nichtlinearen binären Klassifizierungsmodells voraus. Verringert die Vorhersagezeitkosten. Die Vorhersagekosten steigen logarithmisch mit der Größe des Trainingsdatasets, nicht linear, mit einem tolerierbaren Verlust bei der Klassifizierungsgenauigkeit.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
LdSvmTrainer | Binäre Klassifizierung | Ja |
Kleinste Quadrate
„Kleinste Quadrate“ ist eine der am häufigsten verwendeten Methoden bei der linearen Regression.
„Kleinste Quadrate“ bezieht sich auf die Verlustfunktion, die den Fehler als Summe des Entfernungsquadrats vom Istwert bis zur vorhergesagten Linie berechnet und das Modell durch Minimierung des quadrierten Fehlers anpasst. Diese Methode geht von einer engen linearen Beziehung zwischen den Eingaben und der abhängigen Variablen aus.
Trainer | Aufgabe | Exportierbares ONNX |
---|---|---|
OlsTrainer | Regression | Ja |