Der Iris-Datensatz ist ein gutes Beispiel für das Erlernen von PCA. Die ersten vier Spalten, die die Länge und Breite von Kelch- und Blütenblättern beschreiben, sind jedoch kein Beispiel für stark verzerrte Daten. Daher ändert die Protokolltransformation der Daten nicht viel an den Ergebnissen, da die resultierende Rotation der Hauptkomponenten durch die Protokolltransformation ziemlich unverändert bleibt.
In anderen Situationen ist die Protokolltransformation eine gute Wahl.
Wir führen PCA durch, um einen Einblick in die allgemeine Struktur eines Datensatzes zu erhalten. Wir zentrieren, skalieren und transformieren manchmal logarithmisch, um einige triviale Effekte herauszufiltern, die unseren PCA dominieren könnten. Der Algorithmus einer PCA ermittelt wiederum die Rotation jedes PCs, um die quadratischen Residuen zu minimieren, dh die Summe der quadratischen senkrechten Abstände von einer Probe zu den PCs. Große Werte haben tendenziell eine hohe Hebelwirkung.
Stellen Sie sich vor, Sie injizieren zwei neue Samples in die Irisdaten. Eine Blume mit 430 cm Blütenblattlänge und eine mit Blütenblattlänge von 0,0043 cm. Beide Blüten sind sehr abnormal und 100-mal größer bzw. 1000-mal kleiner als durchschnittliche Beispiele. Die Hebelwirkung der ersten Blume ist enorm, sodass die ersten PCs meist die Unterschiede zwischen der großen Blume und jeder anderen Blume beschreiben. Eine Häufung von Arten ist aufgrund dieses Ausreißers nicht möglich. Wenn die Daten log-transformiert werden, beschreibt der Absolutwert jetzt die relative Variation. Jetzt ist die kleine Blume die ungewöhnlichste. Trotzdem ist es möglich, alle Proben in einem Bild zusammenzufassen und eine gerechte Häufung der Arten zu gewährleisten. Schauen Sie sich dieses Beispiel an:
data(iris) #get data
#add two new observations from two new species to iris data
levels(iris[,5]) = c(levels(iris[,5]),"setosa_gigantica","virginica_brevis")
iris[151,] = list(6,3, 430 ,1.5,"setosa_gigantica") # a big flower
iris[152,] = list(6,3,.0043,1.5 ,"virginica_brevis") # a small flower
#Plotting scores of PC1 and PC" without log transformation
plot(prcomp(iris[,-5],cen=T,sca=T)$x[,1:2],col=iris$Spec)
#Plotting scores of PC1 and PC2 with log transformation
plot(prcomp(log(iris[,-5]),cen=T,sca=T)$x[,1:2],col=iris$Spec)