Implementierung des stochastischen Gradientenabstiegs

Beginner

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

Einführung

Der stochastische Gradientenabstieg (Stochastic Gradient Descent, SGD) ist ein beliebtes Optimierungsalgorithmus in der Maschinellen Lernens. Es ist eine Variante des Gradientenabstiegsalgorithmus, der bei jeder Iteration eine zufällig ausgewählte Teilmenge der Trainingsdaten verwendet. Dies macht es rechnerisch effizient und geeignet für die Verarbeitung großer Datensätze. In diesem Lab werden wir die Schritte zur Implementierung von SGD in Python mit scikit-learn durchgehen.

Tipps für die virtuelle Maschine (VM)

Nachdem die VM gestartet wurde, klicken Sie in der oberen linken Ecke auf die Registerkarte Notebook, um auf Jupyter Notebook für die Übung zuzugreifen.

Manchmal müssen Sie möglicherweise einige Sekunden warten, bis Jupyter Notebook fertig geladen hat. Die Validierung von Operationen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie während des Lernens Probleme haben, können Sie sich gerne an Labby wenden. Geben Sie nach der Sitzung Feedback ab, und wir werden das Problem umgehend für Sie lösen.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 82% ist. Es hat eine positive Bewertungsrate von 100% von den Lernenden erhalten.

Importieren von Bibliotheken

Zunächst müssen wir die für dieses Lab erforderlichen Bibliotheken importieren, einschließlich scikit-learn.

import numpy as np
from sklearn.linear_model import SGDClassifier
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

Daten laden

Als nächstes werden wir den Iris-Datensatz aus scikit-learn laden. Dieser Datensatz ist ein klassischer Datensatz für maschinelles Lernen, der aus Messungen von Schwertlilienblumen sowie deren Artenbezeichnungen besteht.

iris = load_iris()
X = iris.data
y = iris.target

Datenvorverarbeitung

Bevor wir SGD anwenden, ist es oft vorteilhaft, die Daten vorzuverarbeiten. In diesem Fall werden wir die Merkmale (Features) mit Hilfe von scikit-learns StandardScaler standardisieren.

scaler = StandardScaler()
X = scaler.fit_transform(X)

Daten aufteilen

Wir werden den Datensatz in einen Trainingssatz und einen Testsatz aufteilen. Der Trainingssatz wird verwendet, um den SGD-Klassifikator (SGD classifier) zu trainieren, während der Testsatz zur Bewertung seiner Leistung dient.

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Klassifikator trainieren

Jetzt können wir den SGD-Klassifikator (SGD classifier) mit der Klasse SGDClassifier von scikit-learn erstellen und trainieren. Wir werden die 'hinge'-Verlustfunktion (loss function) verwenden, die häufig für lineare Klassifikatoren eingesetzt wird.

clf = SGDClassifier(loss='hinge', random_state=42)
clf.fit(X_train, y_train)

Vorhersagen treffen

Sobald der Klassifikator (classifier) trainiert ist, können wir ihn verwenden, um Vorhersagen für neue Daten zu treffen. Hier werden wir ihn nutzen, um die Zielklassen (target classes) für den Testsatz vorherzusagen.

y_pred = clf.predict(X_test)

Leistung bewerten

Schließlich werden wir die Leistung des Klassifikators (classifier) bewerten, indem wir die Genauigkeit (accuracy) seiner Vorhersagen auf dem Testsatz berechnen.

accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

Zusammenfassung

In diesem Lab haben wir gelernt, wie man den stochastischen Gradientenabstieg (Stochastic Gradient Descent, SGD) mit scikit-learn implementiert. Wir haben den Iris-Datensatz (iris dataset) geladen, die Daten vorverarbeitet, sie in Trainings- und Testsätze aufgeteilt, einen SGD-Klassifikator (SGD classifier) trainiert, Vorhersagen getroffen und die Leistung des Klassifikators bewertet. SGD ist ein leistungsstarkes Optimierungsalgorithmus, der in der Maschinellen Lernens (Machine Learning) für groß angelegte Probleme weit verbreitet ist.