Maschinelle Lernaufgaben in ML.NET
Eine maschinelle Lernaufgabe ist eine Art von Vorhersage oder Ableitung, die auf beidem basiert:
- Das Problem oder die Frage
- Die verfügbaren Daten
Beispielsweise weist die Klassifizierungsaufgabe Daten Kategorien zu, und die Clustering-Aufgabe gruppiert Daten entsprechend der Ähnlichkeit.
Machine Learning-Aufgaben basieren auf Mustern in den Daten, anstatt explizit programmiert zu werden.
In diesem Artikel werden die verschiedenen maschinellen Lernaufgaben beschrieben, die in ML.NET und einigen gängigen Anwendungsfällen verfügbar sind.
Nachdem Sie entschieden haben, welche Aufgabe für Ihr Szenario funktioniert, müssen Sie den besten Algorithmus auswählen, um Ihr Modell zu trainieren. Die verfügbaren Algorithmen werden im Abschnitt für jede Aufgabe aufgeführt.
Klassifizierungsaufgaben
Binäre Klassifizierung
Die binäre Klassifizierung ist eine Aufgabe des überwachten maschinellen Lernens, die verwendet wird, um vorherzusagen, zu welcher von genau zwei Klassen (Kategorien) eine Dateninstanz gehört. Die Eingabe eines Klassifizierungsalgorithmus ist eine Reihe von beschrifteten Beispielen, wobei jede Beschriftung eine ganze Zahl von 0 oder 1 ist. Die Ausgabe eines Binären Klassifizierungsalgorithmus ist ein Klassifizierer, mit dem Sie die Klasse neuer nicht bezeichneter Instanzen vorhersagen können. Beispiele für binäre Klassifizierungsszenarien sind:
- Verstehen des emotionalen Gehalts in Twitter-Kommentaren als „positiv“ oder „negativ“.
- Diagnose, ob ein Patient eine bestimmte Krankheit hat.
- Treffen einer Entscheidung, eine E-Mail als Spam zu markieren.
- Bestimmen, ob ein Foto ein bestimmtes Element enthält, z. B. ein Hund oder Obst.
Weitere Informationen finden Sie auf Wikipedia im Artikel zur binären Klassifizierung.
Binärklassifizierungstrainer
Sie können ein binäres Klassifizierungsmodell mithilfe der folgenden Algorithmen trainieren:
- AveragedPerceptronTrainer
- SdcaLogisticRegressionBinaryTrainer
- SdcaNonCalibratedBinaryTrainer
- SymbolicSgdLogisticRegressionBinaryTrainer
- LbfgsLogisticRegressionBinaryTrainer
- LightGbmBinaryTrainer
- FastTreeBinaryTrainer
- FastForestBinaryTrainer
- GamBinaryTrainer
- FieldAwareFactorizationMachineTrainer
- PriorTrainer
- LinearSvmTrainer
Eingaben und Ausgaben für die binäre Klassifizierung
Um optimale Ergebnisse mit binärer Klassifizierung zu erzielen, sollten die Schulungsdaten ausgeglichen werden (d. a. gleiche Anzahl positiver und negativer Schulungsdaten). Fehlende Werte sollten vor der Schulung behandelt werden.
Die Daten in der Spalte für die Eingabezeichnung müssen Boolean sein. Die Daten in der Spalte für die Eingabefeatures müssen ein Vektor fester Größe von Single sein.
Diese Trainer geben die folgenden Spalten aus:
Name der Ausgabespalte | Spaltentyp | Beschreibung |
---|---|---|
Score |
Single | Die rohe Punktzahl, 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. |
Mehrklassenklassifizierung
Die Mehrklassenklassifizierung ist eine überwachte Aufgabe des maschinellen Lernens, die zur Klassifizierung einer Dateninstanz in eine von drei oder mehr Klassen (Kategorien) verwendet wird. Die Eingabe eines Klassifizierungsalgorithmus ist eine Reihe von beschrifteten Beispielen. Jede Beschriftung beginnt normalerweise als Text. Sie wird dann durch TermTransform geleitet, das sie zum (numerischen) Schlüsseltyp konvertiert. Die Ausgabe eines Klassifizierungsalgorithmus ist ein Klassifizierer, mit dem Sie die Klasse neuer nicht bezeichneter Instanzen vorhersagen können. Beispiele für Szenarien mit mehrklassigen Klassifizierungen sind:
- Kategorisieren von Flügen als "früh", "pünktlich" oder "spät".
- Verstehen von Filmkritiken als „positiv“, „neutral“ oder „negativ“.
- Kategorisieren von Hotelbewertungen als "Location", "Preis" oder "Sauberkeit", z. B.
Weitere Informationen finden Sie auf Wikipedia im Artikel zur Multiklassen-Klassifizierung.
Anmerkung
One-vs.-Rest aktualisiert alle Binärklassifizierungs-Lernmodule so, dass sie Multiklassen-Datensätze bearbeiten.
Trainer für die Multiklassen-Klassifizierung
Sie können ein Mehrklassenklassifizierungsmodell mit den folgenden Schulungsalgorithmen trainieren:
- TextClassificationTrainer
- LightGbmMulticlassTrainer
- SdcaMaximumEntropyMulticlassTrainer
- SdcaNonCalibratedMulticlassTrainer
- LbfgsMaximumEntropyMulticlassTrainer
- NaiveBayesMulticlassTrainer
- OneVersusAllTrainer
- PairwiseCouplingTrainer
Eingaben und Ausgaben für die Multiklassen-Klassifizierung
Die Daten in der Spalte für die Eingabezeichnung müssen vom Typ key sein. Die Featurespalte muss ein Vektor fester Größe von Single sein.
Dieser Trainer gibt Folgendes aus:
Ausgabename | type | Beschreibung |
---|---|---|
Score |
Vektor von Single | Die Bewertungen aller Klassen. Höherer Wert bedeutet eine höhere Wahrscheinlichkeit, in die zugeordnete Klasse zu fallen. Wenn das i -te Element den größten Wert hat, wäre der vorhergesagte Bezeichnungsindex i . Beachten Sie, dass i ein nullbasierter Index ist. |
PredictedLabel |
Schlüssel | Der Index der vorhergesagten Bezeichnung. Wenn der Wert i ist, wäre die eigentliche Bezeichnung die i -te Kategorie des Eingabebezeichnungstyps „Schlüssel-Wert“. |
Textklassifizierung
Die Textklassifizierung ist eine Unterkategorie der Mehrklassenklassifizierung, die sich speziell mit unformatiertem Text befasst. Text stellt interessante Herausforderungen dar, da Sie den Kontext und die Semantik berücksichtigen müssen, in der der Text auftritt. Daher kann es schwierig sein, Bedeutung und Kontext zu codieren.
Deep Learning Modelle haben sich als vielversprechende Technik entwickelt, um Probleme mit natürlicher Sprache zu lösen. Genauer gesagt, ist eine Art von neuronalem Netzwerk, das als Transformer bezeichnet wird, zur vorherrschenden Methode für die Lösung von Problemen der natürlichen Sprachverarbeitung wie Textklassifizierung, Übersetzung, Zusammenfassung und Fragen und Antworten geworden. Einige beliebte Transformatorarchitekturen für Aufgaben in natürlicher Sprache umfassen:
- Bidirektionale Encoderdarstellungen aus Transformatoren (BERT)
- Robust optimiertes BERT-Vorabtrainingskonzept (RoBERTa)
- Generativer vorab trainierter Transformator (GPT)
Die ML.NET-Textklassifizierungs-API wird von TorchSharp unterstützt. TorchSharp ist eine .NET-Bibliothek, die Zugriff auf die Bibliothek bietet, die PyTorch unterstützt. TorchSharp enthält die Bausteine für das Training neuraler Netzwerke von Grund auf in .NET. ML.NET abstrahiert einige der Komplexität von TorchSharp auf die Szenarioebene. Sie verwendet eine vorab trainierte Version des NAS-BERT-Modells und optimiert sie anhand Ihrer Daten.
Ein Beispiel für eine Textklassifizierung finden Sie unter Erste Schritte mit der Textklassifizierungs-API.
Bildklassifizierung
Die Bildklassifizierung ist eine überwachten maschinellen Lernens Aufgabe, die verwendet wird, um die Klasse (Kategorie) eines Bilds vorherzusagen. Die Eingabe ist ein Satz von markierten Beispielen. Jede Beschriftung beginnt normalerweise als Text. Sie wird dann durch TermTransform geleitet, das sie zum (numerischen) Schlüsseltyp konvertiert. Die Ausgabe des Bildklassifizierungsalgorithmus ist ein Klassifizierer, mit dem Sie die Klasse neuer Bilder vorhersagen können. Die Bildklassifizierungsaufgabe ist eine Art von Klassifizierung mit mehreren Klassen. Beispiele für Bildklassifizierungsszenarien sind:
- Ermitteln der Rasse eines Hundes als „Sibirischer Husky“, „Golden Retriever“, „Pudel“ usw.
- Ermitteln, ob ein Herstellungsprodukt fehlerhaft ist oder nicht.
- Bestimmen, welche Blumenarten als "Rose", "Sonnenblume" usw. bezeichnet werden.
Bildklassifizierungstrainer
Sie können ein Bildklassifizierungsmodell mit den folgenden Schulungsalgorithmen trainieren:
Eingaben und Ausgaben für die Imageklassifizierung
Die Daten in der Spalte für die Eingabezeichnung müssen vom Typ key sein. Die Featurespalte muss ein Vektor variabler Größe von Byte sein.
Der Trainer gibt folgende Spalten aus:
Ausgabename | type | Beschreibung |
---|---|---|
Score |
Single | Die Bewertungen aller Klassen. Höherer Wert bedeutet eine höhere Wahrscheinlichkeit, in die zugeordnete Klasse zu fallen. Wenn das i -te Element den größten Wert aufweist, wäre der vorhergesagte Label-Index i . (i ist ein nullbasierter Index.) |
PredictedLabel |
Schlüssel-Typ | Der Index der vorhergesagten Bezeichnung. Wenn der Wert i ist, wäre die eigentliche Bezeichnung die i -te Kategorie des Eingabebezeichnungstyps „Schlüssel-Wert“. |
Regression
Regression ist eine überwachte maschinelle Lernaufgabe, die verwendet wird, um den Wert des Labels aus einer Reihe verwandter Merkmale vorherzusagen. Die Bezeichnung kann ein beliebiger realer Wert sein und stammt nicht aus einer endlichen Gruppe von Werten wie in Klassifizierungsaufgaben. Regressionsalgorithmen modellieren die Abhängigkeit der Bezeichnung zu den zugehörigen Features, um zu bestimmen, wie sich die Bezeichnung ändern wird, wenn die Werte der Features unterschiedlich sind. Die Eingabe eines Regressionsalgorithmus ist eine Reihe von Beispielen mit Bezeichnungen bekannter Werte. Die Ausgabe eines Regressionsalgorithmus ist eine Funktion, mit der Sie den Labelwert für jeden neuen Satz von Eingabemerkmalen vorhersagen können. Beispiele für Regressionsszenarien sind:
- Vorhersagen von Hauspreisen basierend auf Hausattributen wie z. B. Anzahl von Schlafzimmern, Standort oder Größe.
- Vorhersagen zukünftiger Aktienkurse basierend auf historischen Daten und aktuellen Markttrends.
- Vorhersagen des Umsatzes eines Produkts basierend auf Werbebudgets.
- Suchen verwandter Artikel in einer Publikation (Satzähnlichkeit).
Regressionstrainer
Sie können ein Regressionsmodell mithilfe der folgenden Algorithmen trainieren:
- SentenceSimilarityTrainer
- LbfgsPoissonRegressionTrainer
- LightGbmRegressionTrainer
- SdcaRegressionTrainer
- OlsTrainer
- OnlineGradientDescentTrainer
- FastTreeRegressionTrainer
- FastTreeTweedieTrainer
- FastForestRegressionTrainer
- GamRegressionTrainer
Regressionseingaben und -ausgaben
Die Daten in der Spalte für die Eingabezeichnung müssen Single sein.
Die Trainer für diese Ausgabe geben folgende Daten aus:
Ausgabename | type | Beschreibung |
---|---|---|
Score |
Single | Der Rohwert, der vom Modell vorhergesagt wurde |
Clustering
Clustering ist eine nicht überwachte Machine-Learning-Aufgabe, die verwendet wird, um Dateninstanzen in Clustern zu gruppieren, die ähnliche Merkmale aufweisen. Clustering kann auch verwendet werden, um Beziehungen in einem Datensatz zu identifizieren, die Sie möglicherweise nicht durch Durchsuchen oder durch einfaches Beobachten logisch ableiten können. Die Eingaben und Ausgaben eines Clusteringalgorithmus hängen von der gewählten Methodik ab. Sie können einen verteilungs-, schwerpunkt-, konnektivitäts- oder dichtebasierten Ansatz wählen. ML.NET unterstützt derzeit einen schwerpunktbasierten Ansatz bei Verwendung der K-Means-Clusterbildung. Beispiele für Clusteringszenarien sind:
- Verstehen von Segmenten von Hotelgästen basierend auf Gewohnheiten und Merkmalen der Hotelauswahl.
- Identifizieren von Kundensegmenten und demografischen Daten zur Erstellung gezielter Werbekampagnen.
- Kategorisieren des Inventars basierend auf Fertigungsmetriken.
Trainerclustering
Sie können ein Clusteringmodell mit dem folgenden Algorithmus trainieren:
Eingaben und Ausgaben für das Clustering
Die Daten der Eingabefeatures müssen Single sein. Es sind keine Etiketten erforderlich.
Dieser Trainer gibt Folgendes aus:
Ausgabename | type | Beschreibung |
---|---|---|
Score |
Vektor von Single | Die Abstände der angegebenen Daten weisen auf die Schwerpunkte aller Cluster hin. |
PredictedLabel |
Schlüssel-Typ | Der vom Modell vorhergesagte Index des nächstgelegenen Clusters. |
Anomalieerkennung
Die Anomalieerkennungsaufgabe erstellt ein Anomalieerkennungsmodell mithilfe der Prinzipalkomponentenanalyse (PCA). Die PCA-basierte Anomalieerkennung hilft Ihnen beim Erstellen eines Modells in Szenarien, in denen es einfach ist, Schulungsdaten aus einer Klasse abzurufen, z. B. gültige Transaktionen, aber schwierig, ausreichende Stichproben der gezielten Anomalien zu erhalten.
Eine etablierte Technik im maschinellen Lernen, PCA wird häufig in der explorativen Datenanalyse verwendet, da sie die innere Struktur der Daten offenlegt und die Varianz in den Daten erklärt. PCA funktioniert durch Analysieren von Daten, die mehrere Variablen enthalten. Es sucht nach Korrelationen zwischen den Variablen und bestimmt die Kombination von Werten, die die Unterschiede in den Ergebnissen am besten erfassen. Diese kombinierten Featurewerte werden verwendet, um einen kompakteren Featurebereich zu erstellen, der als Prinzipalkomponenten bezeichnet wird.
Anomalieerkennung umfasst viele wichtige Aufgaben im maschinellen Lernen:
- Identifizieren von Transaktionen, die potenziell betrügerisch sind.
- Lernmuster, die darauf hinweisen, dass ein Netzwerkeinbruch aufgetreten ist.
- Finden anomaler Patientencluster.
- Überprüfen von Werten, die in ein System eingegeben wurden.
Da Anomalien definitionlich seltene Ereignisse sind, kann es schwierig sein, eine repräsentative Stichprobe von Daten zu sammeln, die für die Modellierung verwendet werden. Die in dieser Kategorie enthaltenen Algorithmen wurden speziell entwickelt, um die wichtigsten Herausforderungen des Aufbaus und Trainingsmodells mithilfe von ungleichgewichtierten Datensätzen zu bewältigen.
Anomalie-Erkennungstrainer
Sie können ein Anomalieerkennungsmodell mit dem folgenden Algorithmus trainieren:
Eingaben und Ausgaben für die Anomalieerkennung
Die Eingabefeatures müssen ein Vektor fester Größe von Single sein.
Dieser Trainer gibt Folgendes aus:
Ausgabename | type | Beschreibung |
---|---|---|
Score |
Single | Der nicht-negative, unbegrenzte Score, der durch das Anomalieerkennungsmodell berechnet wurde. |
PredictedLabel |
Boolean | true , wenn die Eingabe eine Anomalie ist, oder false , wenn sie es nicht ist. |
Rangordnung
Eine Rangfolgenaufgabe erstellt für einen Satz bezeichneter Beispiele eine Rangfolge. Dieser Beispielsatz besteht aus Instanzengruppen, die mit einem bestimmten Kriterium bewertet werden können. Die Bewertungsbezeichnungen sind { 0, 1, 2, 3, 4 } für jede Instanz. Die Rangfolgenfunktion wird dafür trainiert, neue Instanzengruppen mit unbekannten Bewertungen für jede Instanz in die Rangfolge einzuordnen. ML.NET-Rangfolgenlernmodule basieren auf einer Machine-Learning-Rangfolge.
Trainingsalgorithmen für Rangfolge
Sie können ein Bewertungsmodell mit den folgenden Algorithmen trainieren:
Eingaben und Ausgaben für die Rangfolge
Der Datentyp für die Eingabebezeichnung muss ein Typ key oder Single sein. Der Wert der Bezeichnung bestimmt die Relevanz, wobei höhere Werte eine höhere Relevanz angeben. Wenn die Bezeichnung vom Typ key ist, dann ist der Schlüsselindex der Relevanzwert, wobei der kleinste Index der am wenigsten relevante ist. Wenn die Bezeichnung ein Single ist, zeigen höhere Werte eine höhere Relevanz an.
Die Featuredaten müssen ein Vektor mit fester Größe von Single sein, und die Gruppenspalte der Eingabezeilen muss vom Typ key sein.
Dieser Trainer gibt Folgendes aus:
Ausgabename | type | Beschreibung |
---|---|---|
Score |
Single | Die unlimitierte Punktzahl, die vom Modell berechnet wurde, um die Vorhersage zu erstellen. |
Empfehlung
Eine Empfehlungsaufgabe ermöglicht die Erstellung einer Liste der empfohlenen Produkte oder Dienstleistungen. ML.NET verwendet für Empfehlungen Matrixfaktorisierung (MF), einen Algorithmus für kollaboratives Filtern, wenn Ihr Katalog Verlaufsproduktbewertungs-Daten enthält. Beispielsweise verfügen Sie über historische Filmbewertungsdaten für Ihre Benutzer und möchten andere Filme empfehlen, die sie wahrscheinlich als Nächstes ansehen.
Trainingsalgorithmen für Empfehlung
Sie können ein Empfehlungsmodell mit dem folgenden Algorithmus trainieren:
Prognose
Der Prognosevorgang verwendet vergangene Zeitreihendaten, um Vorhersagen zum zukünftigen Verhalten zu erstellen. Szenarien, die für die Prognose gelten, umfassen Wettervorhersagen, saisonale Umsatzvorhersagen und vorausschauende Wartung.
Trainer für die Aufgabe „Vorhersage“
Sie können ein Prognosemodell mit dem folgenden Algorithmus trainieren:
Objekterkennung
Eine Objekterkennung ist eine überwachte Machine-Learning-Aufgabe, die zum Vorhersagen der Klasse (Kategorie) eines Bilds verwendet wird, aber auch ein Begrenzungsfeld angibt, in dem sich die betreffende Kategorie innerhalb des Bilds befindet. Anstatt ein einzelnes Objekt in einem Bild zu klassifizieren, kann die Objekterkennung mehrere Objekte innerhalb eines Bilds erkennen. Beispiele für die Objekterkennung sind:
- Erkennen von Autos, Schildern oder Personen auf Bildern einer Straße.
- Erkennen von Mängeln auf Bildern von Produkten.
- Erkennen von Beunruhigungsbereichen auf Röntgenbildern.
Die Schulung zum Objekterkennungsmodell ist derzeit nur in Modell-Generator mit Azure Machine Learning verfügbar.