Wie wirkt sich die Zentrierung auf die PCA aus (für SVD und Eigenzerlegung)?

30

Welchen Unterschied macht die Zentrierung (oder die Aufhebung der Bedeutung) Ihrer Daten für PCA? Ich habe gehört, dass dies die Mathematik erleichtert oder verhindert, dass der erste PC von den Variablen dominiert wird, aber ich habe das Gefühl, dass ich das Konzept noch nicht richtig verstanden habe.

Zum Beispiel die beste Antwort hier. Wie werden durch die Zentrierung der Daten die Unterbrechungen bei Regression und PCA beseitigt? beschreibt, wie nicht durch Zentrieren die erste PCA durch den Ursprung gezogen wird, sondern durch die Hauptachse der Punktwolke. Aufgrund meines Verständnisses, wie die PCs aus den Eigenvektoren der Kovarianzmatrix erhalten werden, kann ich nicht verstehen, warum dies passieren würde.

Außerdem scheinen meine eigenen Berechnungen mit und ohne Zentrierung wenig sinnvoll zu sein.

Betrachten Sie die Setosa-Blüten im irisDatensatz in R. I berechnete die Eigenvektoren und Eigenwerte der Probenkovarianzmatrix wie folgt.

data(iris)
df <- iris[iris$Species=='setosa',1:4]
e <- eigen(cov(df))
> e
$values
[1] 0.236455690 0.036918732 0.026796399 0.009033261

$vectors
            [,1]       [,2]       [,3]        [,4]
[1,] -0.66907840  0.5978840  0.4399628 -0.03607712
[2,] -0.73414783 -0.6206734 -0.2746075 -0.01955027
[3,] -0.09654390  0.4900556 -0.8324495 -0.23990129
[4,] -0.06356359  0.1309379 -0.1950675  0.96992969

Wenn ich den Datensatz zuerst zentriere, erhalte ich genau die gleichen Ergebnisse. Dies scheint ziemlich offensichtlich zu sein, da die Zentrierung die Kovarianzmatrix überhaupt nicht verändert.

df.centered <- scale(df,scale=F,center=T)
e.centered<- eigen(cov(df.centered))
e.centered

Die prcompFunktion ergibt genau diese Eigenwert-Eigenvektor-Kombination, sowohl für den zentrierten als auch für den nicht zentrierten Datensatz.

p<-prcomp(df)
p.centered <- prcomp(df.centered)
Standard deviations:
[1] 0.48626710 0.19214248 0.16369606 0.09504347

Rotation:
                     PC1        PC2        PC3         PC4
Sepal.Length -0.66907840  0.5978840  0.4399628 -0.03607712
Sepal.Width  -0.73414783 -0.6206734 -0.2746075 -0.01955027
Petal.Length -0.09654390  0.4900556 -0.8324495 -0.23990129
Petal.Width  -0.06356359  0.1309379 -0.1950675  0.96992969

Die prcompFunktion verfügt jedoch über die Standardoption center = TRUE. Das Deaktivieren dieser Option führt zu den folgenden PCs für die nicht zentrierten Daten ( p.centeredbleibt gleich, wenn centerfalse festgelegt ist):

p.uncentered <- prcomp(df,center=F)
> p.uncentered
Standard deviations:
[1] 6.32674700 0.22455945 0.16369617 0.09766703

Rotation:
                    PC1         PC2        PC3         PC4
Sepal.Length -0.8010073  0.40303704  0.4410167  0.03811461
Sepal.Width  -0.5498408 -0.78739486 -0.2753323 -0.04331888
Petal.Length -0.2334487  0.46456598 -0.8317440 -0.19463332
Petal.Width  -0.0395488  0.04182015 -0.1946750  0.97917752

Warum unterscheidet sich das von meinen eigenen Eigenvektorberechnungen auf der Kovarianzmatrix der nicht zentrierten Daten? Hat das mit der Berechnung zu tun? Ich habe gesehen, dass erwähnt, dass prcompetwas verwendet, das SVD-Methode genannt wird, anstatt die Eigenwertzerlegung, um die PC's zu berechnen. Die Funktion princompverwendet letztere, aber ihre Ergebnisse sind identisch mit prcomp. Bezieht sich mein Problem auf die Antwort, die ich oben in diesem Beitrag beschrieben habe?

XXX/(n-1)

Zenit
quelle
5
Based on my understanding of how the PC's are obtained from the covariance matrix's eigenvectors...Bitte lesen Sie die Kommentare in der Antwort, auf die Sie verlinken. Kovarianzen implizieren das Zentrieren von Daten, PCA "auf Kovarianzen" = PCA auf zentrierten Daten. Wenn Sie die ursprünglichen Variablen nicht zentrieren X, ist PCA basierend auf diesen Daten = PCA auf X'X/n [or n-1]Matrix. Siehe auch wichtige Übersicht: stats.stackexchange.com/a/22520/3277 .
TTNPHNS
2
through the origin, rather than the main axis of the point cloud. PCA durchbohrt immer den Ursprung. Wenn Daten zentriert waren, ist Ursprung = der Schwerpunkt.
TTNPHNS
XX
1
S
Siehe Hauptkomponentenanalyse: Eine Übersicht und aktuelle Entwicklungen für eine Diskussion von zentrierten und nicht zentrierten PCA (die im Allgemeinen nicht identisch sind).
Yibo Yang

Antworten:

33

DeinteinKovarianzmatrixEigenzerlegung,

[Wikipedia:] Um die Achsen der Ellipse zu finden, müssen wir zuerst den Mittelwert jeder Variablen vom Datensatz subtrahieren, um die Daten um den Ursprung zu zentrieren. Dann berechnen wir die Kovarianzmatrix der Daten ...

Und Sie haben Recht zu bemerken, dass dies keine sehr genaue Formulierung ist.

XX/(n-1)X

Daten XMatrix XX/(n-1)Eigenzerlegung,

Dann spielt das Zentrieren eine große Rolle und hat den durch @ttnphns in beschriebenen und veranschaulichten Effekt. Wie werden durch das Zentrieren der Daten die Unterbrechungen in Regression und PCA beseitigt ?

X

Daten XEinzelwertzerlegung.

Xsvd

Amöbe sagt Reinstate Monica
quelle
1
Ich habe einen Rat für Ihre Antwort, um eine klarere Logik zu erstellen. Da in Ihre zwei ersten (eigen) Beispiele , die Sie sprechen von der Zersetzung MSCP Matrix X'X/(n-1)und nicht die von SSCP - Matrix X'X- wäre es in der SVD Beispiel sein, die Äquivalenz zeigt, sich zu zersetzen , X/sqrt(n-1)anstatt X(wie Sie derzeit sprechen). [Der Unterschied liegt natürlich nur im Skalenteil (Eigenwerte) und nicht in den Eigenvektoren, aber ich denke, es ist didaktisch besser.] Mein zweiter Punkt wäre, daran zu erinnern, dass Xdie Bessel-Korrektur n-1unnötig wird, sobald keine Zentrierung stattfindet. nist willkommen.
TTNPHNS
1
Beide guten Punkte, @ttnphns. Ich werde darüber nachdenken, wie ich sie in meine Antwort einbauen kann: Ich wollte, dass diese Antwort für ein breiteres Publikum verständlich ist, und habe daher versucht, unnötige mathematische Details zu vermeiden.
Amöbe sagt Reinstate Monica