© maxuser/Shutterstock.com
Machine Learning 101 mit ML.NET - Teil 2

Ein Machine-Learning-Modell trainieren


Am Ende des ersten Teils dieser Serie haben wir erfolgreich eine Preprocessing Pipeline erstellt. An dieser Stelle setzen wir nun an, um unser Machine-Learning-Modell zu trainieren. Dazu schauen wir uns zunächst die Aspekte der Gewichtungen und des Bias an und erfahren anschließend, wie wir mit Hilfe von Evaluierung und Validierung die Aussagekraft unseres Modells optimieren können.

Wir haben nun die im ersten Teil der Serie erstellte Preprocessing Pipeline vorliegen. Sie ist dazu bereit, Daten zu laden und die Features bzw. Merkmale, die für das Training ausgewählt wurden, in das spezielle Merkmal namens Features zu konkatenieren, sowie ein Zielmerkmal namens Labels, das als Kategorie für die ausgewählten Merkmale dient. Haben wir keine solche Label-Spalte in unserem Datensatz, müssen wir das Zielfeld wie folgt annotieren:

[ColumnName("Label")] public string Source { get; set; }

Dimensionalitätsreduktion

Unsere Intuition sagt uns, dass wir zur Lösung unserer Fragestellung aus Sicht der Machine-Learning-Vorhersage so viele Merkmale wie möglich benötigen, aber aus Sicht der Performance so wenige wie nötig. In der Tat ist manchmal ein schnelleres ML-Modell einem leistungsstärkeren vorzuziehen. Die Korrelationsmatrix ist nur eine der Möglichkeiten, um zu entscheiden, welche Merkmale für Klassifikations- und Regressionsmodelle beibehalten werden sollen. Eine andere Möglichkeit ist die PFI (Permutation Feature Importance).

MLContext

Bevor wir mit der Erstellung der Trainingspipeline fortfahren, widmen wir uns zunächst dem MLContext-Catalog-Container. In diesem Objekt finden wir alle Trainer, Datenlader, Datentransformatoren und Prädiktoren, die für eine Vielzahl von Aufgaben wie Regression oder Klassifikation verwendet werden können. Viele von ihnen sind Teil zusätzlicher NuGet-Pakete, um die Hauptbibliotheken leichter zu halten. Der Seed-Parameter ist nützlich (z. B. für Unit-Tests), wenn man ein deterministisches Verhalten erzielen möchte, da er von Splittern und einigen Trainern verwendet wird.

Was ist ein ML-Trainer?

Es gibt verschiedene Trainingsalgorithmen für alle Arten von ML.NET-Aufgaben, die als trainer zur Verfügung stehen und in den entsprechenden Trainerkatalogen zu finden sind. Zum Beispiel ist der stochastische duale koordinierte Anstieg, den wir in diesem Artikel verwenden, als Sdca (für Regression), SdcaNonCalibrated und SdcaLogisticRegression (für binäre Klassifikation) sowie SdcaNonCalibrated und SdcaMaximumEntropy (für Multiklassifikation)...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang