PCA 실습 :: 차원 축소 - mindscale
Skip to content

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이 거의 비슷함
  • 새로 차원을 뽑았는데 전의 변수와 비슷하다면 차원을 잘 줄였다고 할 수 없음
  • 해결하는 방법은 다음 강의에서 설명