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 )

Biplot für die Hauptkomponentenanalyse in R

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) 

R-förmiges Geröllgelände

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 .

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert