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