El conjunto de datos del iris es un buen ejemplo para aprender PCA. Dicho esto, las cuatro primeras columnas que describen la longitud y la anchura de los sépalos y los pétalos no son un ejemplo de datos muy sesgados. Por lo tanto, la transformación logarítmica de los datos no cambia mucho los resultados, ya que la rotación resultante de los componentes principales no se ve alterada por la transformación logarítmica.
En otras situaciones, la transformación logarítmica es una buena opción.
Realizamos el ACP para conocer la estructura general de un conjunto de datos. Centramos, escalamos y, a veces, hacemos una log-transformación para filtrar algunos efectos triviales, que podrían dominar nuestro PCA. El algoritmo de un ACP encontrará a su vez la rotación de cada PC para minimizar los residuos al cuadrado, es decir, la suma de las distancias perpendiculares al cuadrado desde cualquier muestra a los PC. Los valores grandes tienden a tener una gran influencia.
Imagine que inyecta dos nuevas muestras en los datos del iris. Una flor con una longitud de pétalo de 430 cm y otra con una longitud de pétalo de 0,0043 cm. Ambas flores son muy anormales, ya que son 100 veces más grandes y 1000 veces más pequeñas, respectivamente, que los ejemplos medios. El apalancamiento de la primera flor es enorme, de tal forma que los primeros PC describirán mayoritariamente las diferencias entre la flor grande y cualquier otra flor. La agrupación de especies no es posible debido a ese único valor atípico. Si los datos se transforman logarítmicamente, el valor absoluto describe ahora la variación relativa. Ahora la flor pequeña es la más anómala. No obstante, es posible contener todas las muestras en una imagen y proporcionar una agrupación justa de las especies. Eche un vistazo a este ejemplo:
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)