Hauptkomponentenanalyse in r: schritt-für-schritt-beispiel
Die Hauptkomponentenanalyse, oft als PCA abgekürzt, ist eine unbeaufsichtigte maschinelle Lerntechnik, die versucht, die Hauptkomponenten – lineare Kombinationen der ursprünglichen Prädiktoren – zu finden, die einen großen Teil der Variation in einem Datensatz erklären.
Das Ziel der PCA besteht darin, den größten Teil der Variabilität in einem Datensatz mit weniger Variablen als im Originaldatensatz zu erklären.
Für einen gegebenen Datensatz mit p Variablen könnten wir die Streudiagramme jeder paarweisen Kombination von Variablen untersuchen, aber die Anzahl der Streudiagramme kann sehr schnell groß werden.
Für p Prädiktoren gibt es p(p-1)/2 Punktwolken.
Für einen Datensatz mit p = 15 Prädiktoren gäbe es also 105 verschiedene Streudiagramme!
Glücklicherweise bietet PCA eine Möglichkeit, eine niedrigdimensionale Darstellung eines Datensatzes zu finden, die möglichst viele Variationen in den Daten erfasst.
Wenn wir den Großteil der Variation in nur zwei Dimensionen erfassen können, könnten wir alle Beobachtungen aus dem Originaldatensatz auf ein einfaches Streudiagramm projizieren.
Wir finden die Hauptkomponenten wie folgt:
Gegeben sei ein Datensatz mit p Prädiktoren : _
- Z m = ΣΦ jm _
- Z 1 ist die lineare Kombination von Prädiktoren, die so viel Varianz wie möglich erfasst.
- Z 2 ist die nächste lineare Kombination von Prädiktoren, die die größte Varianz erfasst und gleichzeitig orthogonal (dh unkorreliert) zu Z 1 ist.
- Z 3 ist dann die nächste lineare Kombination von Prädiktoren, die die größte Varianz erfasst und gleichzeitig orthogonal zu Z 2 ist.
- Und so weiter.
In der Praxis verwenden wir die folgenden Schritte, um die Linearkombinationen der ursprünglichen Prädiktoren zu berechnen:
1. Skalieren Sie jede Variable so, dass sie einen Mittelwert von 0 und eine Standardabweichung von 1 hat.
2. Berechnen Sie die Kovarianzmatrix für die skalierten Variablen.
3. Berechnen Sie die Eigenwerte der Kovarianzmatrix.
Mithilfe der linearen Algebra können wir zeigen, dass der Eigenvektor, der dem größten Eigenwert entspricht, die erste Hauptkomponente ist. Mit anderen Worten: Diese spezielle Kombination von Prädiktoren erklärt die größte Varianz in den Daten.
Der Eigenvektor, der dem zweitgrößten Eigenwert entspricht, ist die zweite Hauptkomponente und so weiter.
Dieses Tutorial bietet ein schrittweises Beispiel für die Durchführung dieses Prozesses in R.
Schritt 1: Daten laden
Wir laden zunächst das Tidyverse- Paket, das mehrere nützliche Funktionen zur Visualisierung und Bearbeitung von Daten enthält:
library (tidyverse)
Für dieses Beispiel verwenden wir den in R integrierten Datensatz USArrests , der die Anzahl der Festnahmen pro 100.000 Einwohner in jedem US-Bundesstaat im Jahr 1973 wegen Mordes , Körperverletzung und Vergewaltigung enthält.
Es umfasst auch den Prozentsatz der Bevölkerung jedes Staates, der in städtischen Gebieten lebt, UrbanPop .
Der folgende Code zeigt, wie die ersten Zeilen des Datensatzes geladen und angezeigt werden:
#load data data ("USArrests") #view first six rows of data head(USArrests) Murder Assault UrbanPop Rape Alabama 13.2 236 58 21.2 Alaska 10.0 263 48 44.5 Arizona 8.1 294 80 31.0 Arkansas 8.8 190 50 19.5 California 9.0 276 91 40.6 Colorado 7.9 204 78 38.7
Schritt 2: Berechnen Sie die Hauptkomponenten
Nach dem Laden der Daten können wir die in R integrierte Funktion prcomp() verwenden, um die Hauptkomponenten des Datensatzes zu berechnen.
Stellen Sie sicher, dass Sie „scale = TRUE“ angeben, damit jede der Variablen im Datensatz vor der Berechnung der Hauptkomponenten so skaliert wird, dass sie einen Mittelwert von 0 und eine Standardabweichung von 1 aufweist.
Beachten Sie außerdem, dass die Eigenvektoren in R standardmäßig in die negative Richtung zeigen, sodass wir mit -1 multiplizieren, um die Vorzeichen umzukehren.
#calculate main components results <- prcomp(USArrests, scale = TRUE ) #reverse the signs results$rotation <- -1*results$rotation #display main components results$rotation PC1 PC2 PC3 PC4 Murder 0.5358995 -0.4181809 0.3412327 -0.64922780 Assault 0.5831836 -0.1879856 0.2681484 0.74340748 UrbanPop 0.2781909 0.8728062 0.3780158 -0.13387773 Rape 0.5434321 0.1673186 -0.8177779 -0.08902432
Wir können sehen, dass die erste Hauptkomponente (PC1) hohe Werte für Mord, Körperverletzung und Vergewaltigung aufweist, was darauf hindeutet, dass diese Hauptkomponente die größte Variation dieser Variablen beschreibt.
Wir können auch sehen, dass die zweite Hauptkomponente (PC2) einen hohen Wert für UrbanPop hat, was darauf hindeutet, dass diese Hauptkomponente die städtische Bevölkerung hervorhebt.
Beachten Sie, dass die Hauptkomponentenwerte für jeden Zustand in results$x gespeichert werden. Wir werden diese Werte auch mit -1 multiplizieren, um die Vorzeichen umzukehren:
#reverse the signs of the scores results$x <- -1*results$x #display the first six scores head(results$x) PC1 PC2 PC3 PC4 Alabama 0.9756604 -1.1220012 0.43980366 -0.154696581 Alaska 1.9305379 -1.0624269 -2.01950027 0.434175454 Arizona 1.7454429 0.7384595 -0.05423025 0.826264240 Arkansas -0.1399989 -1.1085423 -0.11342217 0.180973554 California 2.4986128 1.5274267 -0.59254100 0.338559240 Colorado 1.4993407 0.9776297 -1.08400162 -0.001450164
Schritt 3: Visualisieren Sie die Ergebnisse mit einem Biplot
Als Nächstes können wir ein Biplot erstellen – ein Diagramm, das jede der Beobachtungen im Datensatz auf ein Streudiagramm projiziert, das die erste und zweite Hauptkomponente als Achsen verwendet:
Beachten Sie, dass Scale = 0 sicherstellt, dass die Pfeile im Diagramm so skaliert werden, dass sie die Belastungen darstellen.
biplot(results, scale = 0 )
Aus der Darstellung können wir jeden der 50 Zustände sehen, die in einem einfachen zweidimensionalen Raum dargestellt werden.
In der Grafik nahe beieinander liegende Staaten weisen ähnliche Datenmuster in Bezug auf die Variablen im Originaldatensatz auf.
Wir können auch sehen, dass einige Staaten stärker mit bestimmten Straftaten in Verbindung gebracht werden als andere. Beispielsweise ist Georgia der Staat, der der Variable „Murder“ in der Handlung am nächsten kommt.
Wenn wir uns die Bundesstaaten mit den höchsten Mordraten im Originaldatensatz ansehen, können wir erkennen, dass Georgia tatsächlich an der Spitze der Liste steht:
#display states with highest murder rates in original dataset head(USArrests[ order (-USArrests$Murder),]) Murder Assault UrbanPop Rape Georgia 17.4 211 60 25.8 Mississippi 16.1 259 44 17.1 Florida 15.4 335 80 31.9 Louisiana 15.4 249 66 22.2 South Carolina 14.4 279 48 22.5 Alabama 13.2 236 58 21.2
Schritt 4: Finden Sie die Varianz, die durch jede Hauptkomponente erklärt wird
Wir können den folgenden Code verwenden, um die Gesamtvarianz im Originaldatensatz zu berechnen, die durch jede Hauptkomponente erklärt wird:
#calculate total variance explained by each principal component results$sdev^2 / sum (results$sdev^2) [1] 0.62006039 0.24744129 0.08914080 0.04335752
Aus den Ergebnissen können wir Folgendes beobachten:
- Die erste Hauptkomponente erklärt 62 % der Gesamtvarianz im Datensatz.
- Die zweite Hauptkomponente erklärt 24,7 % der Gesamtvarianz im Datensatz.
- Die dritte Hauptkomponente erklärt 8,9 % der Gesamtvarianz im Datensatz.
- Die vierte Hauptkomponente erklärt 4,3 % der Gesamtvarianz im Datensatz.
Somit erklären die ersten beiden Hauptkomponenten den Großteil der Gesamtvarianz in den Daten.
Dies ist ein gutes Zeichen, da im vorherigen Biplot jede der Beobachtungen aus den Originaldaten auf ein Streudiagramm projiziert wurde, das nur die ersten beiden Hauptkomponenten berücksichtigte.
Daher ist es sinnvoll, die Muster im Biplot zu untersuchen, um Zustände zu identifizieren, die einander ähnlich sind.
Wir können auch ein Scree-Plot erstellen – ein Diagramm, das die durch jede Hauptkomponente erklärte Gesamtvarianz anzeigt –, um die PCA-Ergebnisse zu visualisieren:
#calculate total variance explained by each principal component var_explained = results$sdev^2 / sum (results$sdev^2) #create scree plot qplot(c(1:4), var_explained) + geom_line() + xlab(" Principal Component ") + ylab(" Variance Explained ") + ggtitle(" Scree Plot ") + ylim(0, 1)
Hauptkomponentenanalyse in der Praxis
In der Praxis wird PCA aus zwei Gründen am häufigsten verwendet:
1. Explorative Datenanalyse – Wir verwenden PCA, wenn wir zum ersten Mal einen Datensatz untersuchen und verstehen möchten, welche Beobachtungen in den Daten einander am ähnlichsten sind.
2. Hauptkomponentenregression – Wir können PCA auch verwenden, um Hauptkomponenten zu berechnen, die dann in der Hauptkomponentenregression verwendet werden können. Diese Art der Regression wird häufig verwendet, wenn zwischen den Prädiktoren in einem Datensatz Multikollinearität besteht.
Den vollständigen R-Code, der in diesem Tutorial verwendet wird, finden Sie hier .