Principal Component Analysis (PCA)

Principal Component Analysis (PCA) ist eine Technik der linearen Algebra, die in der Datenanalyse und im Machine Learning verwendet wird, um die Dimensionalität von Datensätzen zu reduzieren. Mit PCA können wir eine große Anzahl von Variablen in wenige unabhängige Variablen umwandeln, indem wir lineare Kombinationen von Variablen finden, die eine maximale Varianz im Datensatz erklären. Diese neuen Variablen werden als Hauptkomponenten bezeichnet und können verwendet werden, um den Datensatz zu reduzieren oder als Eingabe für andere Machine-Learning-Algorithmen zu dienen.

In diesem Beitrag werden wir die Schritte zur Implementierung von PCA in Python erläutern.

Hauptkomponentenanalyse als Faktorenanalyse: Zwei Hauptkomponenten einer zweidimensionalen Normalverteilung mit Mittelwert (1,3) und Standardabweichung ca. 3 in Richtung (0,866, 0,5) und 1 in der dazu orthogonalen Richtung. Die Vektoren sind die Eigenvektoren der Kovarianzmatrix und haben als Länge die Wurzel des zugehörigen Eigenwertes. Sie sind um den Mittelwert verschoben.

Schritt 1: Laden der Daten und Vorbereitung Der erste Schritt bei der Implementierung von PCA besteht darin, die Daten zu laden und vorzubereiten. Wir verwenden den Iris-Datensatz als Beispiel. Der Datensatz besteht aus 150 Blumen, von denen jede 4 Merkmale (Länge und Breite von Kelch- und Kronblättern) aufweist und in 3 Klassen unterteilt ist.

from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target

Schritt 2: Skalieren der Daten Da PCA ein Verfahren der linearen Algebra ist, ist es wichtig, dass alle Merkmale auf den gleichen Skalen liegen. Wir skalieren die Daten, um sicherzustellen, dass die Merkmale auf die gleiche Weise beitragen.

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

Schritt 3: Durchführen von PCA Als nächstes führen wir PCA mit den skalierten Daten durch. Wir verwenden die PCA-Klasse aus der Scikit-learn-Bibliothek und setzen den Parameter n_components auf die Anzahl der Hauptkomponenten, die wir extrahieren möchten.

from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)

Schritt 4: Visualisierung der Ergebnisse Nachdem wir PCA durchgeführt haben, können wir die Ergebnisse visualisieren. Wir verwenden Matplotlib, um eine Streudiagramm der Datenpunkte zu zeichnen und die Punkte nach ihrer Klassenzugehörigkeit zu färben.

import matplotlib.pyplot as plt
plt.scatter(X_pca[:,0], X_pca[:,1], c=y)
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.show()

Das Ergebnis der PCA ist ein zweidimensionaler Datensatz, der aus den beiden Hauptkomponenten besteht. Wir können das Ergebnis auch als Heatmap anzeigen, um zu sehen, welche Merkmale am meisten zur Variation im Datensatz beitragen.

import numpy as np
plt.matshow(pca.components_, cmap='viridis')
plt.yticks([0, 1], ['PC1', 'PC2'])
plt.colorbar()
plt.xticks(range(len(iris.feature_names)), iris.feature_names, rotation=90)
plt.show()

Die Heatmap zeigt an, welche Merkmale am meisten zur Variation in den Daten beitragen. In diesem Beispiel tragen die Länge und Breite des Kronblatts am meisten zur Variation bei.

Das ist eine grundlegende Implementierung von Principal Component Analysis in Python. Beachten Sie, dass es viele andere Möglichkeiten gibt, den Algorithmus anzupassen und zu erweitern, um eine bessere Vorhersagegenauigkeit zu erzielen.

Schritt 5: Bestimmung der Varianzerklärung Ein wichtiger Aspekt von PCA ist die Bestimmung der Varianzerklärung durch jede der Hauptkomponenten. Die Varianzerklärung gibt an, wie viel von der Gesamtvarianz des Datensatzes durch jede Hauptkomponente erklärt wird. Wir können die explained_variance_ratio_-Eigenschaft von PCA verwenden, um die Varianzerklärung zu berechnen.

print("Explained Variance Ratio:", pca.explained_variance_ratio_)

Die Ausgabe gibt an, wie viel Prozent der Gesamtvarianz durch jede der beiden Hauptkomponenten erklärt wird. In diesem Beispiel erklärt die erste Hauptkomponente 72,77% der Gesamtvarianz, während die zweite Hauptkomponente 23,03% der Gesamtvarianz erklärt.

Schritt 6: Auswahl der Anzahl der Hauptkomponenten Es gibt keine klare Methode zur Bestimmung der Anzahl der Hauptkomponenten, die für einen bestimmten Datensatz am besten geeignet sind. In der Regel wählt man jedoch eine ausreichend große Anzahl von Hauptkomponenten, um eine angemessene Menge der Gesamtvarianz zu erklären.

Eine Möglichkeit, die Anzahl der Hauptkomponenten zu bestimmen, besteht darin, die kumulative Summe der Varianzerklärungen zu berechnen und eine Anzahl von Hauptkomponenten auszuwählen, die eine ausreichend große Menge der Gesamtvarianz erklären.

cumulative_variance_ratio = np.cumsum(pca.explained_variance_ratio_)
plt.plot(cumulative_variance_ratio)
plt.xlabel('Number of Components')
plt.ylabel('Cumulative Explained Variance Ratio')
plt.show()

Die Ausgabe zeigt die kumulative Summe der Varianzerklärungen für jede Hauptkomponente. Wir können sehen, dass die ersten beiden Hauptkomponenten in diesem Beispiel eine ausreichend große Menge der Gesamtvarianz erklären.

Das ist eine grundlegende Implementierung von Principal Component Analysis in Python. PCA kann als Vorverarbeitungsschritt für viele Machine-Learning-Algorithmen verwendet werden, um die Leistung zu verbessern und die Rechenzeit zu reduzieren.