홍채 데이터 세트는 PCA를 배우는 좋은 예입니다. 즉, sepals와 꽃잎의 길이와 너비를 설명하는 처음 네 개의 열은 강하게 치우친 데이터의 예가 아닙니다. 따라서 주 구성 요소의 결과 회전이 로그 변환에 의해 크게 변하지 않기 때문에 데이터를 로그 변환하면 결과가 크게 변경되지 않습니다.
다른 상황에서는 로그 변환이 좋은 선택입니다.
우리는 데이터 세트의 일반적인 구조에 대한 통찰력을 얻기 위해 PCA를 수행합니다. 우리는 PCA를 지배 할 수있는 몇 가지 사소한 영향을 걸러 내기 위해 중심을 맞추고 크기를 조정하고 때때로 로그 변환합니다. PCA의 알고리즘은 각 제곱 잔차, 즉 샘플에서 PC까지의 제곱 수직 거리의 합을 최소화하기 위해 각 PC의 회전을 찾습니다. 큰 값은 레버리지가 높은 경향이 있습니다.
홍채 데이터에 두 개의 새로운 샘플을 주입한다고 상상해보십시오. 꽃잎 길이는 430 cm이고 꽃잎 길이는 0.0043 cm입니다. 두 꽃 모두 평균 예보다 각각 100 배 더 크고 1000 배 더 작습니다. 첫 번째 꽃의 레버리지는 크므로 첫 번째 PC는 대부분 큰 꽃과 다른 꽃의 차이점을 설명합니다. 그 특이 치 때문에 종의 군집이 불가능합니다. 데이터가 로그 변환 된 경우 절대 값은 이제 상대 변형을 나타냅니다. 이제 작은 꽃이 가장 비정상적인 꽃입니다. 그럼에도 불구하고 하나의 이미지에 모든 샘플을 포함하고 종의 공정한 클러스터링을 제공 할 수 있습니다. 이 예제를 확인하십시오.
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)