Wenn die Daten vor PCA nicht normalisiert werden, wird das Varianzverhältnis besser erklärt

19

Ich normalisierte meinen Datensatz und führte dann eine 3-Komponenten-PCA durch, um kleine erklärte Varianzverhältnisse ([0,50, 0,1, 0,05]) zu erhalten.

Wenn ich meinen Datensatz nicht normalisierte, sondern aufhellte und dann eine 3-Komponenten-PCA durchführte, erhielt ich hohe erklärte Varianzverhältnisse ([0,86, 0,06, 0,01]).

Da ich so viele Daten wie möglich in 3 Komponenten speichern möchte, sollte ich die Daten NICHT normalisieren? Nach meinem Verständnis sollten wir uns immer vor PCA normalisieren.

Durch Normalisieren: Mittelwert auf 0 setzen und Einheitsvarianz haben.


quelle
3
Obwohl es unklar ist, was Sie unter "Normalisieren" der Daten verstehen (ich kenne mindestens vier Standardmethoden, um dies in PCA zu tun, und wahrscheinlich gibt es mehr), klingt es so, als ob das Material unter stats.stackexchange.com/questions/53 dies könnte beleuchten.
Whuber
Hi whubber: Ich meine, jede Beobachtung auf Einheitennorm zu normalisieren
1
Vielen Dank. Der übliche Begriff dafür ist "Standardisierung". Wenn Sie dies tun, führen Sie PCA auf der Grundlage von Korrelationen durch: Aus diesem Grund kann der von mir bereitgestellte Link Ihre Frage möglicherweise bereits beantworten. Ich sehe jedoch keine der Antworten, die erklären, warum oder wie Sie unterschiedliche Ergebnisse erhalten (vielleicht, weil es komplex ist und die Auswirkungen der Standardisierung schwer vorherzusagen sind).
Whuber
1
Ist das Aufhellen vor PCA typisch? Was ist das Ziel davon?
Shadowtalker
2
Wenn Sie beispielsweise mit Bildern gearbeitet haben, entspricht die Norm der Bilder der Helligkeit. Aufgrund der hohen erklärten Varianz der nicht normalisierten Daten können viele Daten durch Helligkeitsänderungen erklärt werden. Wenn Ihnen die Helligkeit nicht wichtig ist, wie dies häufig bei der Bildverarbeitung nicht der Fall ist, sollten Sie zunächst alle Bilder zur Einheitsnorm machen. Obwohl die erklärte Varianz Ihrer pca-Komponenten geringer ist, spiegelt sie besser wider, woran Sie interessiert sind.
Aaron

Antworten:

37

Hängt vom Ziel Ihrer Analyse ab. Einige gängige Praktiken, von denen einige in Whubers Link erwähnt werden:

  1. Die Standardisierung wird normalerweise durchgeführt, wenn die Variablen, an denen die PCA durchgeführt wird, nicht im gleichen Maßstab gemessen werden. Beachten Sie, dass bei der Standardisierung allen Variablen die gleiche Bedeutung zugewiesen wird.
  2. Wenn sie nicht auf derselben Skala gemessen werden und Sie sich dafür entscheiden, an nicht standardisierten Variablen zu arbeiten, wird häufig jeder PC von einer einzelnen Variablen dominiert, und Sie erhalten lediglich eine Sortierung der Variablen nach ihrer Varianz. (Eine der Ladungen jeder (frühen) Komponente liegt nahe bei +1 oder -1.)
  3. Die beiden Methoden führen oft zu unterschiedlichen Ergebnissen, wie Sie erfahren haben.

Intuitives Beispiel:

Angenommen, Sie haben zwei Variablen: die Höhe eines Baumes und den Umfang desselben Baumes. Wir werden das Volumen in einen Faktor umrechnen: Ein Baum hat ein hohes Volumen, wenn sein Volumen größer als 20 Kubikfuß ist, und ansonsten ein niedriges Volumen. Wir werden den in R vorinstallierten Baumdatensatz verwenden.

>data(trees)
>tree.girth<-trees[,1]
>tree.height<-trees[,2]
>tree.vol<-as.factor(ifelse(trees[,3]>20,"high","low"))

Angenommen, die Höhe wurde tatsächlich in Meilen statt in Fuß gemessen.

>tree.height<-tree.height/5280
>tree<-cbind(tree.height,tree.girth)
>
>#do the PCA
>tree.pca<-princomp(tree)
>summary(tree.pca)
Importance of components:
                      Comp.1       Comp.2
Standard deviation     3.0871086 1.014551e-03
Proportion of Variance 0.9999999 1.080050e-07
Cumulative Proportion  0.9999999 1.000000e+00

Die erste Komponente erklärt fast 100% der Variabilität in den Daten. Die Ladungen:

> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height        -1    
tree.girth   1           

Grafische Auswertung:

>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

Biplot der ersten Methode

Wir sehen, dass Bäume mit hohem Volumen tendenziell einen hohen Baumumfang haben, aber die drei Höhen geben keine Auskunft über das Baumvolumen. Dies ist wahrscheinlich falsch und die Folge der beiden unterschiedlichen Maßeinheiten.

Wir könnten die gleichen Einheiten verwenden oder die Variablen standardisieren. Ich gehe davon aus, dass beide zu einem ausgewogeneren Bild der Variabilität führen werden. Natürlich kann man in diesem Fall argumentieren, dass die Variablen dieselbe Einheit haben, aber nicht standardisiert sein sollten, was ein gültiges Argument sein kann, wenn wir nicht zwei verschiedene Dinge messen. (Wenn wir das Gewicht des Baumes und den Umfang des Baumes messen würden, ist die Skala, auf der beide gemessen werden sollten, nicht mehr sehr klar. In diesem Fall haben wir ein klares Argument, um an den standardisierten Variablen zu arbeiten.)

>tree.height<-tree.height*5280
>tree<-cbind(tree.height,tree.girth)
>
>#do the PCA
>tree.pca<-princomp(tree)
> summary(tree.pca)
Importance of components:
                          Comp.1    Comp.2
Standard deviation     6.5088696 2.5407042
Proportion of Variance 0.8677775 0.1322225
Cumulative Proportion  0.8677775 1.0000000
> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height -0.956  0.293
tree.girth  -0.293 -0.956

>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

Biplot der zweiten Methode

Wir sehen jetzt, dass Bäume, die hoch sind und einen großen Umfang haben, ein hohes Volumen haben (linke untere Ecke), verglichen mit geringem Umfang und geringer Höhe für Bäume mit geringem Volumen (rechte obere Ecke). Das macht intuitiv Sinn.

Wenn man jedoch genau hinschaut, sieht man, dass der Kontrast zwischen hoher und niedriger Lautstärke in Umfangsrichtung und nicht in Höhenrichtung am stärksten ist. Mal sehen, was passiert, wenn wir standardisieren:

>tree<-scale(tree,center=F,scale=T)
>tree.pca<-princomp(tree)
> summary(tree.pca)
Importance of components:
                          Comp.1     Comp.2
Standard deviation     0.2275561 0.06779544
Proportion of Variance 0.9184749 0.08152510
Cumulative Proportion  0.9184749 1.00000000
> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height  0.203 -0.979
tree.girth   0.979  0.203
>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

Biplot der dritten Methode

In der Tat erklärt der Umfang nun den Großteil des Unterschieds bei Bäumen mit hohem und niedrigem Volumen! (Die Länge des Pfeils im Biplot gibt Aufschluss über die Varianz in der ursprünglichen Variablen.) Selbst wenn die Werte auf derselben Skala gemessen werden, kann eine Standardisierung hilfreich sein. Wenn wir zum Beispiel die Länge verschiedener Baumarten vergleichen, kann es empfehlenswert sein, nicht zu standardisieren, da dies genau dasselbe Maß ist.

Matt.135
quelle
2
(+1) Sehr nette Antwort, die alle in dem verlinkten, populären Thread über PCA über Kovarianz vs. Korrelation gegebenen Antworten übertrifft.
Amöbe sagt Reinstate Monica