Einführung
Lineare und quadratische Diskriminanzanalyse (Linear and Quadratic Discriminant Analysis, LDA und QDA) sind zwei klassische Klassifikatoren, die im maschinellen Lernen verwendet werden. LDA verwendet eine lineare Entscheidungsfläche, während QDA eine quadratische Entscheidungsfläche nutzt. Diese Klassifikatoren sind beliebt, weil sie geschlossene Lösungen haben, in der Praxis gut funktionieren und keine Hyperparameter zur Optimierung erfordern.
In diesem Lab werden wir untersuchen, wie man LDA und QDA mit scikit-learn, einer beliebten Bibliothek für maschinelles Lernen in Python, durchführt.
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 vollständig geladen ist. Aufgrund von Einschränkungen in Jupyter Notebook kann die Überprüfung von Vorgängen nicht automatisiert werden.
Wenn Sie während des Lernens Probleme haben, können Sie sich gerne an Labby wenden. Geben Sie uns nach der Sitzung Feedback, und wir werden das Problem umgehend für Sie lösen.
Importieren der erforderlichen Bibliotheken
Zunächst müssen wir die erforderlichen Bibliotheken importieren, darunter scikit-learn (sklearn) und matplotlib, die für die Datenvisualisierung verwendet werden.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis, QuadraticDiscriminantAnalysis
Generieren von synthetischen Daten
Als Nächstes werden wir synthetische Daten generieren, um den Unterschied zwischen LDA und QDA zu demonstrieren. Wir verwenden die Funktion make_classification aus scikit-learn, um zwei Klassen mit unterschiedlichen Mustern zu erstellen.
from sklearn.datasets import make_classification
## Generate synthetic data
X, y = make_classification(n_samples=100, n_features=2, n_informative=2, n_redundant=0, n_classes=2, random_state=1)
Trainieren und Visualisieren der Klassifikatoren
Jetzt werden wir die LDA- und QDA-Klassifikatoren anhand der synthetischen Daten trainieren und die Entscheidungsgrenzen visualisieren.
## Train the LDA classifier
lda = LinearDiscriminantAnalysis()
lda.fit(X, y)
## Train the QDA classifier
qda = QuadraticDiscriminantAnalysis()
qda.fit(X, y)
## Plot the decision boundaries
def plot_decision_boundary(classifier, title):
h = 0.02 ## step size in the mesh
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
Z = classifier.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', cmap=plt.cm.Paired)
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title(title)
plt.figure(figsize=(10, 4))
plt.subplot(1, 2, 1)
plot_decision_boundary(lda, 'Linear Discriminant Analysis')
plt.subplot(1, 2, 2)
plot_decision_boundary(qda, 'Quadratic Discriminant Analysis')
plt.tight_layout()
plt.show()
Durchführen einer Dimensionsreduktion mit LDA
LDA kann auch für eine überwachte Dimensionsreduktion (supervised dimensionality reduction) verwendet werden. Wir werden dies demonstrieren, indem wir die Dimension des Iris-Datensatzes reduzieren.
from sklearn.datasets import load_iris
## Load the Iris dataset
iris = load_iris()
X, y = iris.data, iris.target
## Perform dimensionality reduction using LDA
lda = LinearDiscriminantAnalysis(n_components=2)
X_lda = lda.fit_transform(X, y)
Zusammenfassung
Lineare und quadratische Diskriminanzanalyse (Linear and Quadratic Discriminant Analysis, LDA und QDA) sind zwei klassische Klassifikatoren, die im maschinellen Lernen (machine learning) verwendet werden. LDA verwendet eine lineare Entscheidungsfläche, während QDA eine quadratische Entscheidungsfläche nutzt. Diese Klassifikatoren haben geschlossene Lösungen und funktionieren in der Praxis gut. LDA kann auch für eine überwachte Dimensionsreduktion (supervised dimensionality reduction) eingesetzt werden.