PCA 실습
USArrests
내장 데이터 사용
head(USArrests)
Murder Assault UrbanPop Rape Alabama 13.2 236 58 21.2 Alaska 10.0 263 48 44.5 Arizona 8.1 294 80 31.0 Arkansas 8.8 190 50 19.5 California 9.0 276 91 40.6 Colorado 7.9 204 78 38.7
- 미국 50개 주의 Murder(살인), Assault(폭력), Rape(성폭력) 범죄의 인구 10만명당 체포 건수와 도시에 사는 인구의 비율
분산 구하기
var(USArrests)
Murder Assault UrbanPop Rape Murder 18.970465 291.0624 4.386204 22.99141 Assault 291.062367 6945.1657 312.275102 519.26906 UrbanPop 4.386204 312.2751 209.518776 55.76808 Rape 22.991412 519.2691 55.768082 87.72916
- 우하향 대각선이 분산
- 나머지는 공분산
- Assault의 분산이 큼
분산만 구하기
diag(var(USArrests))
Murder Assault UrbanPop Rape 18.97047 6945.16571 209.51878 87.72916
- 대각선 값만 나옴
분산 합 구하기
sum(diag(var(USArrests)))
[1] 7261.384
주성분분석 실행
arrest.pca = prcomp(USArrests)
arrest.pca
Standard deviations (1, .., p=4): [1] 83.732400 14.212402 6.489426 2.482790 Rotation (n x k) = (4 x 4): PC1 PC2 PC3 PC4 Murder 0.04170432 -0.04482166 0.07989066 -0.99492173 Assault 0.99522128 -0.05876003 -0.06756974 0.03893830 UrbanPop 0.04633575 0.97685748 -0.20054629 -0.05816914 Rape 0.07515550 0.20071807 0.97408059 0.07232502
- Standard deviations: 표준 편차
- 네 개의 변수로 네 개의 새로운 변수를 만듦
- PC1의 표준 편차는 83이므로 분산은 6889이므로 원래 분산인 7261에서 6889만큼 설명
- Rotation
- 각 데이터에 Rotation PC1 밑에 있는 숫자를 곱한 뒤 다 더해서 PC1을 만듦
주성분분석 요약
summary(arrest.pca)
Importance of components: PC1 PC2 PC3 PC4 Standard deviation 83.7324 14.21240 6.4894 2.48279 Proportion of Variance 0.9655 0.02782 0.0058 0.00085 Cumulative Proportion 0.9655 0.99335 0.9991 1.00000
- Proportion of Variance: 원래 분산 중에 몇 퍼센트를 차지하는지
- Cumulative Proportion: 위의 값의 합계를 낸 것
- 첫 번째 차원이 대부분을 설명하고 있음
- 두 가지 차원만 가지고도 99.33%를 보존하여 설명할 수 있음
각 차원마다 어떤 값을 가지는지 확인
arrest.pca$x
PC1 PC2 PC3 PC4 Alabama 64.802164 -11.4480074 -2.49493284 -2.4079009 Alaska 92.827450 -17.9829427 20.12657487 4.0940470 Arizona 124.068216 8.8304030 -1.68744836 4.3536852 Arkansas 18.340035 -16.7039114 0.21018936 0.5209936 ...
- 새로운 변수 값들을 가지게 됨
시각화
biplot(arrest.pca)
- 각 주들의 위치를 표현해 줌
- x축이 PC1, y축이 PC2이며 0이 평균
- 4차원을 2차원으로 줄이면서 원래 변수들이 납작하게 표현됨
- Assault 축은 길게 남아 있고 나머지 축은 납작함
- Assault는 단위가 크고 분산이 크기 때문에 차원을 줄였음에도 불구하고 차지하는 비중이 많이 줄어들지 않음
- 즉, Assault와 PC1이 거의 비슷함
- 새로 차원을 뽑았는데 전의 변수와 비슷하다면 차원을 잘 줄였다고 할 수 없음
- 해결하는 방법은 다음 강의에서 설명