Halbüberwachte Lernalgorithmen

Machine LearningMachine LearningBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir das Konzept des halbüberwachten Lernens untersuchen, das eine Art Maschinelles Lernen ist, bei dem einige der Trainingsdaten markiert und einige unmarkiert sind. Halbüberwachte Lernalgorithmen können die unmarkierten Daten nutzen, um die Leistung des Modells zu verbessern und besser auf neue Proben zu generalisieren. Dies ist besonders nützlich, wenn wir nur eine kleine Menge markierter Daten haben, aber eine große Menge unmarkierter Daten.

In diesem Lab werden wir uns auf zwei halbüberwachte Lernalgorithmen konzentrieren: Selbsttraining und Labelpropagation. Wir werden lernen, wie wir diese Algorithmen mit scikit-learn, einer beliebten Maschinelles Lernen-Bibliothek in Python, implementieren und verwenden.

VM-Tipps

Nachdem die VM gestartet ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Installation von scikit-learn

Bevor wir beginnen, stellen wir sicher, dass scikit-learn installiert ist. Wenn es nicht installiert ist, können Sie es mit dem folgenden Befehl installieren:

pip install -U scikit-learn

Selbsttraining

Überblick über den Selbsttraining-Algorithmus

Der Selbsttraining-Algorithmus basiert auf Yarowskys Algorithmus. Er ermöglicht es einem überwachten Klassifikator, als halbüberwachter Klassifikator zu funktionieren, indem er sich anhand von unmarkierten Daten lernt. Der Algorithmus funktioniert, indem er den überwachten Klassifikator iterativ auf den markierten und unmarkierten Daten trainiert und dann die Vorhersagen für die unmarkierten Daten verwendet, um einen Teilmengen dieser Proben der markierten Daten hinzuzufügen. Der Algorithmus iteriert fort, bis alle Proben Labels haben oder keine neuen Proben in einer Iteration ausgewählt werden.

Verwendung von Selbsttraining in scikit-learn

In scikit-learn wird der Selbsttraining-Algorithmus in der Klasse SelfTrainingClassifier implementiert. Um diesen Algorithmus zu verwenden, müssen Sie einen überwachten Klassifikator angeben, der die predict_proba-Methode implementiert. Hier ist ein Beispiel dafür, wie der Selbsttraining-Algorithmus verwendet werden kann:

from sklearn.semi_supervised import SelfTrainingClassifier
from sklearn.linear_model import LogisticRegression

## Erstellen eines logistischen Regressionsklassifikators
classifier = LogisticRegression()

## Erstellen eines Selbsttraining-Klassifikators mit dem logistischen Regressionsklassifikator als Basisklassifikator
self_training_classifier = SelfTrainingClassifier(classifier)

## Trainieren des Selbsttraining-Klassifikators auf den markierten und unmarkierten Daten
self_training_classifier.fit(X_labeled, y_labeled, X_unlabeled)

## Vorhersagen der Labels für neue Proben
y_pred = self_training_classifier.predict(X_test)

In obigem Beispiel sind X_labeled und y_labeled die markierten Daten, X_unlabeled die unmarkierten Daten und X_test die neuen Proben, für die vorhergesagt werden soll.

Labelpropagation

Überblick über den Labelpropagation-Algorithmus

Labelpropagation ist ein Typ von halbüberwachten Grapheninferenzalgorithmen. Es konstruiert einen Ähnlichkeitsgraphen über alle Elemente im Eingabedatensatz und verwendet diesen Graphen, um die Labels von den markierten Daten auf die unmarkierten Daten zu propagieren. Labelpropagation kann für Klassifizierungstasks verwendet werden und unterstützt Kernelmethoden, um die Daten in alternative Dimensionsräume zu projizieren.

Verwendung von Labelpropagation in scikit-learn

In scikit-learn sind zwei Labelpropagation-Modelle verfügbar: LabelPropagation und LabelSpreading. Beide Modelle konstruieren einen Ähnlichkeitsgraphen und propagieren die Labels. Hier ist ein Beispiel dafür, wie Labelpropagation verwendet werden kann:

from sklearn.semi_supervised import LabelPropagation

## Erstellen eines Labelpropagation-Modells
label_propagation = LabelPropagation()

## Trainieren des Labelpropagation-Modells auf den markierten Daten
label_propagation.fit(X_labeled, y_labeled)

## Vorhersagen der Labels für neue Proben
y_pred = label_propagation.predict(X_test)

In obigem Beispiel sind X_labeled und y_labeled die markierten Daten, und X_test sind die neuen Proben, für die vorhergesagt werden soll.

Zusammenfassung

Halbüberwachtes Lernen ist eine leistungsstarke Technik, die es uns ermöglicht, unmarkierte Daten zu nutzen, um die Leistung unserer Modelle zu verbessern. In diesem Lab haben wir uns über zwei halbüberwachte Lernalgorithmen informiert: Selbsttraining und Labelpropagation. Wir haben auch gelernt, wie wir diese Algorithmen mit scikit-learn implementieren und verwenden. Indem wir unmarkierte Daten in unsere maschinellen Lernarbeitsabläufe aufnehmen, können wir die verfügbaren Daten besser nutzen und genauere Vorhersagen erzielen.