Sollte man stark korrelierte Variablen entfernen, bevor man PCA durchführt?

111

Ich lese einen Artikel, in dem der Autor mehrere Variablen aufgrund der starken Korrelation mit anderen Variablen verwirft, bevor er PCA durchführt. Die Gesamtzahl der Variablen liegt bei 20.

Gibt dies irgendwelche Vorteile? Es scheint mir ein Overhead zu sein, da PCA dies automatisch erledigen sollte.

Typ 2
quelle
26
Nur ein Hinweis. Überlegen Sie, wie sich die Ergebnisse von PCA ändern, wenn Sie immer mehr Kopien (oder Kopien in der Nähe von Kopien) einer der Variablen hinzufügen.
TTNPHNS
@ type2 Kannst du bitte die Zeitung nennen, die du gelesen hast?
Amatya

Antworten:

123

Dies erklärt sich aus dem aufschlussreichen Hinweis in einem Kommentar von @ttnphns.

Das Aneinanderfügen von nahezu korrelierten Variablen erhöht den Beitrag ihres gemeinsamen zugrunde liegenden Faktors zur PCA. Wir können dies geometrisch sehen. Betrachten Sie diese Daten in der XY-Ebene als Punktwolke:

Streudiagramm

Es gibt eine geringe Korrelation, ungefähr die gleiche Kovarianz, und die Daten sind zentriert: PCA (egal wie durchgeführt) würde zwei ungefähr gleiche Komponenten melden.

Lassen Sie uns nun eine dritte Variable einwerfen, die gleich und einer kleinen Menge zufälliger Fehler ist. Die Korrelationsmatrix von zeigt dies mit den kleinen Off-Diagonal-Koeffizienten außer zwischen der zweiten und dritten Zeile und Spalte ( und ):ZY(X,Y,Z)YZ

(1.0.03440180.0460760.03440181.0.9418290.0460760.9418291.)

Geometrisch haben wir alle ursprünglichen Punkte nahezu vertikal verschoben und das vorherige Bild direkt aus der Ebene der Seite gehoben. Diese Pseudo-3D-Punktwolke versucht, das Heben mit einer seitlichen perspektivischen Ansicht zu veranschaulichen (basierend auf einem anderen Datensatz, der jedoch auf die gleiche Weise wie zuvor generiert wurde):

3D-Darstellung

Die Punkte liegen ursprünglich in der blauen Ebene und werden zu den roten Punkten angehoben. Die ursprüngliche Achse zeigt nach rechts. Die resultierende Neigung dehnt auch die Punkte entlang der YZ-Richtungen aus und verdoppelt dadurch ihren Beitrag zur Varianz. Folglich würde eine PCA dieser neuen Daten immer noch zwei Hauptkomponenten identifizieren, aber jetzt wird eine von ihnen die doppelte Varianz der anderen aufweisen.Y

Diese geometrische Erwartung wird in einigen Simulationen bestätigt R. Zu diesem Zweck wiederholte ich die Prozedur "Heben", indem ich ein zweites, drittes, viertes und fünftes Mal nahezu kollineare Kopien der zweiten Variablen erstellte und sie bis . Hier ist eine Streudiagramm-Matrix, die zeigt, wie gut diese letzten vier Variablen korreliert sind:X2X5

Streudiagramm-Matrix

Die PCA wird mithilfe von Korrelationen erstellt (obwohl dies für diese Daten eigentlich keine Rolle spielt), wobei die ersten beiden Variablen, dann drei, ... und schließlich fünf verwendet werden. Ich zeige die Ergebnisse anhand von Diagrammen der Beiträge der Hauptkomponenten zur Gesamtvarianz.

PCA-Ergebnisse

Bei zwei fast unkorrelierten Variablen sind die Beiträge anfangs fast gleich (linke obere Ecke). Nach dem Hinzufügen einer mit der zweiten korrelierten Variablen - genau wie in der geometrischen Darstellung - gibt es nur noch zwei Hauptkomponenten, eine jetzt doppelt so groß wie die andere. (Eine dritte Komponente spiegelt das Fehlen einer perfekten Korrelation wider; sie misst die "Dicke" der pfannkuchenartigen Wolke im 3D-Streudiagramm.) Nach dem Hinzufügen einer weiteren korrelierten Variablen ( ) macht die erste Komponente nun etwa drei Viertel der Gesamtmenge aus ; Nachdem ein Fünftel hinzugefügt wurde, macht die erste Komponente fast vier Fünftel der Gesamtmenge aus. In allen vier Fällen werden Komponenten nach der zweiten wahrscheinlich von den meisten PCA-Diagnoseverfahren als unwichtig angesehen. im letzten Fall 'X4Eine wichtige Komponente, die es zu berücksichtigen gilt.

Wir können jetzt sehen, dass es möglicherweise sinnvoll ist, Variablen zu verwerfen, die den gleichen zugrunde liegenden (aber "latenten") Aspekt einer Variablensammlung messen , da die Einbeziehung der nahezu redundanten Variablen dazu führen kann, dass die PCA ihren Beitrag überbetont. Es gibt nichts mathematisch Richtiges (oder Falsches) an einem solchen Verfahren; Es ist ein Urteilsspruch, der auf den analytischen Zielen und der Kenntnis der Daten basiert. Es sollte jedoch klar sein, dass die Stillegung von Variablen, von denen bekannt ist, dass sie stark mit anderen korrelieren, einen erheblichen Einfluss auf die PCA-Ergebnisse haben kann.


Hier ist der RCode.

n.cases <- 240               # Number of points.
n.vars <- 4                  # Number of mutually correlated variables.
set.seed(26)                 # Make these results reproducible.
eps <- rnorm(n.vars, 0, 1/4) # Make "1/4" smaller to *increase* the correlations.
x <- matrix(rnorm(n.cases * (n.vars+2)), nrow=n.cases)
beta <- rbind(c(1,rep(0, n.vars)), c(0,rep(1, n.vars)), cbind(rep(0,n.vars), diag(eps)))
y <- x%*%beta                # The variables.
cor(y)                       # Verify their correlations are as intended.
plot(data.frame(y))          # Show the scatterplot matrix.

# Perform PCA on the first 2, 3, 4, ..., n.vars+1 variables.
p <- lapply(2:dim(beta)[2], function(k) prcomp(y[, 1:k], scale=TRUE))

# Print summaries and display plots.
tmp <- lapply(p, summary)
par(mfrow=c(2,2))
tmp <- lapply(p, plot)
whuber
quelle
5
+1, schöne Figuren. Was hast du für die Top 2 benutzt? Die erste sieht aus wie von Hand gezeichnet.
Gung
14
@gung Ich habe eine Variante des Codes bei mathematica.stackexchange.com/questions/11350/xkcd-style-graphs für die erste Abbildung verwendet. Es ist seit langem bekannt, dass das Hinzufügen von ein wenig zufälligem Zittern zu Text oder einem Bild dazu führen kann, dass es wärmer und zugänglicher aussieht. ( selbst wurde ursprünglich auf Metafont aufgebaut , das Donald Knuth nach einer gründlichen Untersuchung der Typografie entworfen hatte. Er enthielt eine solche eingebaute Variation.) Bei einigen Grafiken, wie dem Pseudo-3D-Streudiagramm in der zweiten Abbildung, fügt die Jittering-Technik nur wenig oder gar nichts hinzu ist ablenkend, deshalb habe ich es dort nicht benutzt. TEX
whuber
2
Das ist sehr aufschlussreich, whuber. Ich habe etwas Neues gelernt.
Spacey
7
@whuber ist wie der angesagteste Statistiker - mit XKCD-Plots wie ein Profi.
Cam.Davidson.Pilon
2
@logan Mit einem anderen Wort, nein. Gestatten Sie mir, Ihre Aufmerksamkeit auf einen Satz zu einem späteren Zeitpunkt in diesem Beitrag zu lenken.
whuber
42

Ich werde den gleichen Prozess und die gleiche Idee wie @whuber weiter veranschaulichen , aber mit den Ladediagrammen, denn Ladungen sind die Essenz der PCA-Ergebnisse.

Hier sind drei 3 Analysen. In der ersten haben wir zwei Variablen, und (in diesem Beispiel korrelieren sie nicht). Im zweiten haben wir hinzugefügt, das fast eine Kopie von und daher stark damit korreliert. Im dritten haben wir noch 2 weitere "Kopien" davon : und .X1X2X3X2X4X5

Die Beladungskurven der ersten beiden Hauptkomponenten werden dann erstellt. Rote Spitzen in den Diagrammen weisen auf Korrelationen zwischen den Variablen hin, sodass sich im Bündel mehrerer Spitzen ein Cluster eng korrelierter Variablen befindet. Die Komponenten sind die grauen Linien; Die relative "Stärke" einer Komponente (ihre relative Eigenwertgröße) wird durch das Gewicht der Linie angegeben.

Bildbeschreibung hier eingeben

Zwei Effekte des Hinzufügens der "Kopien" können beobachtet werden:

  1. Komponente 1 wird immer stärker und Komponente 2 immer schwächer.
  2. Die Ausrichtung der Komponenten ändert sich: Komponente 1 befand sich zunächst in der Mitte zwischen und ; als wir zu hinzufügten, sich Komponente 1 sofort neu aus, um der aufkommenden Menge von Variablen zu folgen; und Sie können sicher sein, dass, nachdem wir dem Bündel weitere zwei Variablen hinzugefügt haben, die Zuordnung von Komponente 1 zu diesem Bündel eng miteinander verbundener Variablen unbestreitbarer wurde.X1X2X3X2

Ich werde die Moral nicht wieder aufnehmen, weil @whuber es bereits getan hat.


Zusatz . Im Folgenden finden Sie einige Bilder als Antwort auf die Kommentare von @ whuber. Es geht um eine Unterscheidung zwischen "variablem Raum" und "Subjektraum" und darum, wie sich Komponenten hier und da orientieren. Es werden drei bivariate PCAs vorgestellt: Analyse der ersten Reihe , Analyse der zweiten Reihe und Analyse der dritten Reihe . Die linke Spalte enthält Streudiagramme (mit standardisierten Daten) und die rechte Spalte enthält Ladediagramme.r=0r=0.62r=0.77

In einem Streudiagramm wird die Korrelation zwischen und als Länglichkeit der Wolke dargestellt. Der Winkel (sein Cosinus) zwischen einer Komponentenlinie und einer variablen Linie ist das entsprechende Eigenvektorelement . Die Eigenvektoren sind in allen drei Analysen identisch (daher sind die Winkel in allen drei Diagrammen gleich). [Es ist jedoch wahr, dass bei genau , Eigenvektoren (und damit auch die Winkel) sind theoretisch beliebig; weil die Wolke perfekt "rund" ist, könnte jedes Paar von orthogonalen Linien, die durch den Ursprung kommen, als die beiden Komponenten dienen - sogar undX 2 r = 0 X 1 X 2X1X2r=0 X1X2Linien selbst könnten als Komponenten gewählt werden.] Die Koordinaten von Datenpunkten (200 Subjekte) auf einer Komponente sind Komponentenwerte, und ihre durch 200-1 geteilte Quadratsumme ist der Eigenwert der Komponente .

In einem Ladediagramm sind die Punkte (Vektoren) Variablen. Sie verteilen den Raum, der zweidimensional ist (weil wir 2 Punkte + Ursprung haben), aber tatsächlich ein reduzierter 200-dimensionaler (Anzahl der Subjekte) "Subjektraum" ist. Hier ist der Winkel (Cosinus) zwischen den roten Vektoren . Die Vektoren sind gleich lang, da die Daten standardisiert wurden. Die erste Komponente ist eine solche Dimensionsachse in diesem Raum, die der Gesamtakkumulation der Punkte entgegeneilt; Bei nur 2 Variablen ist es immer die Halbierende zwischen undX 1 X 2rX1X2(Aber das Hinzufügen einer dritten Variablen kann sie trotzdem ablenken). Der Winkel (Cosinus) zwischen einem variablen Vektor und einer Komponentenlinie ist die Korrelation zwischen ihnen, und da die Vektoren eine Einheitslänge und die Komponenten orthogonal sind, ist dies nichts anderes als die Koordinaten, die Belastung . Die Summe der quadratischen Ladungen auf die Komponente ist ihr Eigenwert (die Komponente orientiert sich nur an diesem Objektraum, um ihn zu maximieren).

Bildbeschreibung hier eingeben


Zusatz2. Darüber hinaus habe ich von "variablem Raum" und "Subjektraum" gesprochen, als ob sie wie Wasser und Öl inkompatibel wären. Ich musste es mir noch einmal überlegen und kann sagen, dass - zumindest wenn wir über PCA sprechen - beide Räume am Ende isomorph sind und wir dadurch alle PCA-Details korrekt anzeigen können - Datenpunkte, variable Achsen, Komponentenachsen, Variablen als Punkte, - auf einem einzelnen unverzerrten Biplot.

Darunter befinden sich das Streudiagramm (variabler Raum) und das Ladediagramm (Komponentenraum, der aufgrund seines genetischen Ursprungs Subjektraum ist). Alles, was auf der einen Seite gezeigt werden konnte, konnte auch auf der anderen Seite gezeigt werden. Die Bilder sind identisch , nur um 45 Grad gedreht (und in diesem speziellen Fall reflektiert). Dies war eine PCA der Variablen v1 und v2 (standardisiert, daher wurde r analysiert). Schwarze Linien auf den Bildern sind die Variablen als Achsen; grün / gelbe Linien sind die Komponenten als Achsen; blaue Punkte sind die Datenwolke (Probanden); Rote Punkte sind die Variablen, die als Punkte (Vektoren) angezeigt werden.

Bildbeschreibung hier eingeben

ttnphns
quelle
1
+1 interessante Illustration. Übrigens ist Ihre zweite Beobachtung ein Artefakt der Daten: Die Ausrichtung hat sich geändert, weil im ersten Fall die Korrelation perfekt war und einen zweidimensionalen Eigenraum ergab . (Dies ist in realen Daten äußerst selten. Dies bedeutet normalerweise, dass ein Datenbankfehler gemacht wurde und eine Variable eine lineare Re-Expression einer anderen ist.) Die Software konnte für diesen Bereich eine beliebige orthogonale Basis frei wählen . Nur die kleinste Korrelation hätte diese Entartung beseitigt. Ich denke daher, dass Sie dieses Phänomen der Neuorientierung überinterpretieren.
whuber
@whuber, vielleicht verstehe ich dich nicht. Welche "perfekte" Korrelation? r bw X 1 und X 2 waren 0,003; und es könnte jede sein, zum Beispiel .503. Das wäre der Wert des Winkels zwischen den beiden roten Vektoren auf dem Plot. Unabhängig vom r ist der 1. PC immer die Winkelhalbierende, während nur 2 Variablen analysiert werden. Ich nehme an, dass Ihre Anmerkung The software was free to choose any orthogonal basis for that space, arbitrarilyfür runde Wolken im variablen Raum gilt (dh Datenstreudiagramm, wie das erste Bild in Ihrer Antwort), aber das Ladediagramm ist ein Themenraum, in dem Variablen, nicht Fälle, Punkte (Vektoren) sind.
TTNPHNS
1
Es tut uns leid; Ich meinte vollkommenes Fehlen von Korrelation. Haben Sie in Ihren Analysen Kovarianz oder Korrelation verwendet oder die Datenzeilen oder -spalten auf andere Weise standardisiert? (Vielleicht verstehe ich das falsch, aber ich finde Ihre Unterscheidung zwischen "Subjekt" - und "Variablen" -Räumen in diesem Zusammenhang nicht sinnvoll: Sowohl die ursprünglichen Basisvektoren als auch die Daten sind Elemente von beispielsweise ; loading plot "ist eine Projektion auf den von den ersten beiden PCs erzeugten Unterraum. Ich glaube, die meisten Leute würden den" Subjekt "-Raum für 240 Dimensionen in meiner Simulation verwenden: Ich habe das nicht mit einem R5
Streudiagramm
Ich habe Korrelationen verwendet (beachte die Matrix und die Tatsache, dass die roten Vektoren im Wesentlichen die gleiche Länge haben). Ja, der Subjektraum ist ein Tupsy-Torvey-Streudiagramm mit n Achsen (Subjekte) und p Punkten (Variablen). Natürlich sind alle np-Dimensionen redundant und jeder Satz von p-Variablen kann im p-dimensionalen Subjektraum gezeichnet werden, aber dies macht es nicht zu einem variablen Raum! Ich werde nur ein Bild zu meiner Antwort hinzufügen.
TTNPHNS
5
+1, danke für den zusätzlichen Beitrag, @ttnphns. Dies verwandelt sich von dem, was ich ursprünglich für eine ziemlich einfache Frage hielt, in einen fabelhaften informativen Thread.
gung
4

Ohne Einzelheiten aus Ihrem Aufsatz würde ich vermuten, dass dieses Verwerfen von stark korrelierten Variablen nur durchgeführt wurde, um Rechenleistung oder Arbeitsbelastung einzusparen. Ich kann keinen Grund dafür erkennen, warum PCA für stark korrelierte Variablen "kaputt geht". Durch die Rückprojektion von Daten auf die von PCA gefundenen Basen werden die Daten aufgehellt (oder dekorreliert). Das ist der springende Punkt hinter PCA.

Spacey
quelle
4
Hast du den Hinweis von @ttnphns gelesen? PCA achtet nicht nur auf die Eigenvektoren (die Sie besprechen), sondern auch auf die Eigenwerte (die Sie ignorieren). Dies ist kritisch, da die Eigenwerte verwendet werden, um zu bestimmen, welche Komponenten beibehalten und welche gelöscht werden sollen.
Whuber
2
@whuber Ja ... ja ich glaube ich verstehe es jetzt. Im Wesentlichen werden mehr korrelierte Variablen bestimmte Eigenvektoren (Richtungen) überbetonen, und wenn es viele korrelierte Variablen gibt, dann gibt es so viel mehr überbetonte "falsche" Richtungen, die einen "ursprünglichen" Eigenvektor / eine Richtung übertönen würden wurden sonst leicht gesehen. Verstehe ich dich richtig?
Spacey
2
Das ist ziemlich nah, Mohammad. Die Realität ist, dass eine Menge von korrelierten Variablen auf mehrere Hauptkomponenten (Eigenvektoren) "geladen" werden kann. Wenn Sie also viele Variablen aus einer solchen Menge einbeziehen, werden mehrere Eigenvektoren unterschiedlich gewichtet - und damit auch die Richtungen aller Eigenvektoren geändert.
Whuber
1

Nach meinem Verständnis sind korrelierte Variablen in Ordnung, da PCA Vektoren ausgibt, die orthogonal sind.

Viele
quelle
5
Sie haben Recht, aber würden Sie gerne erklären, warum Orthogonalität einen Einfluss darauf hat, ob Variablen im Voraus verworfen werden sollen oder nicht?
Whuber
-1

Nun, es hängt von Ihrem Algorithmus ab. Stark korrelierte Variablen können eine schlecht konditionierte Matrix bedeuten. Wenn Sie einen dafür sensiblen Algorithmus verwenden, ist dies möglicherweise sinnvoll. Aber ich wage zu sagen, dass die meisten modernen Algorithmen, die zum Herausdrehen von Eigenwerten und Eigenvektoren verwendet werden, dafür robust sind. Versuchen Sie, die stark korrelierten Variablen zu entfernen. Ändern sich die Eigenwerte und der Eigenvektor stark? Wenn ja, könnte eine schlechte Konditionierung die Antwort sein. Da stark korrelierte Variablen keine Informationen hinzufügen, sollte sich die PCA-Zerlegung nicht ändern

Juancentro
quelle
4
Leider ändert sich die PCA : Es ist fast garantiert.
Whuber
1
@whuber Wow, sehr viele Antworten und sehr informativ. Entschuldigung für meinen Kommentar, es war total falsch. Mein Fehler. Sehr informative Antwort BTW
Juancentro
4
Ich lerne am meisten aus völlig falschen Antworten, Juancentro - vor allem meinen eigenen, die zum Glück selten in der Öffentlichkeit rauskommen :-). Ich hatte ähnliche Gedanken wie Sie, bis @ttnphns einen Kommentar hinterließ.
Whuber
-1

Hängt davon ab, welche Methode zur Auswahl der Hauptkomponenten Sie verwenden, nicht wahr?

Ich neige dazu, eine Hauptkomponente mit einem Eigenwert> 1 zu verwenden. Das würde mich also nicht beeinflussen.

Und aus den obigen Beispielen würde in der Regel sogar die Scree-Plot-Methode die richtige auswählen. WENN SIE ALLE VOR DEM ELLENBOGEN BEWAHREN. Wenn Sie jedoch einfach die Hauptkomponente mit dem "dominanten" Eigenwert auswählen, werden Sie in die Irre geführt. Aber das ist nicht der richtige Weg, um ein Geröllplot zu benutzen!

Chris Howden
quelle
5
Willkommen auf der Seite, Chris. Leider ist keines dieser Ad-hoc-Verfahren besonders vertretbar. Beachten Sie, dass Sie im ersten Fall die Form Ihrer Daten überhaupt nicht ändern konnten und von der Auswahl aller Daten zur Auswahl keiner Daten übergehen konnten (indem Sie einfach alles mit einer Konstanten multiplizieren).
Kardinal