공든탑앱 열기

주성분분석(PCA)

빅데이터분석기사 · 분석 변수 처리 · 약 14분

쉽게 말하면

키, 몸무게, 허리둘레, 팔 길이는 서로 비슷하게 움직여요. 이걸 네 개 따로 보지 않고 '덩치'라는 점수 하나로 묶으면 정보를 거의 잃지 않고 간단해져요. 이렇게 여러 변수를 섞어 핵심 축 몇 개로 줄이는 게 주성분분석이에요. 첫 번째 축이 가장 많은 정보를 담아요.

시험용 정의

주성분분석(PCA)은 상관관계가 있는 p 개 변수를 선형결합해 서로 상관이 없는(직교하는) 새 변수인 주성분을 만들고, 그중 앞쪽 몇 개만 남겨 차원을 축소하는 방법이다. 종속변수 없이 변수들의 구조만 보는 비지도 학습이다. 데이터가 가장 넓게 퍼진(분산이 가장 큰) 방향이 제1주성분, 그와 직교하면서 남은 분산이 가장 큰 방향이 제2주성분이다. 각 주성분의 분산을 고유값, 전체 분산 중 그 주성분이 차지하는 비율을 기여율이라 하고, 앞에서부터 더한 것이 누적 기여율이다. 각 변수가 주성분에 얼마나 들어가는지를 나타내는 계수를 주성분 계수(적재값, R 의 rotation)라 한다.

비유로 이해하기

길쭉한 럭비공에 꼬치를 꽂는 일이다. 가장 긴 방향으로 꽂은 꼬치가 제1주성분, 그와 직각인 방향 중 다음으로 긴 쪽이 제2주성분이다. 럭비공이 충분히 길쭉하면 긴 꼬치 하나만으로도 공의 모양을 거의 설명할 수 있다.

자세히

먼저 알아 둘 말

말뜻
차원 축소변수 수를 줄이면서 정보 손실을 최소로
선형결합변수에 계수를 곱해 더한 것. PC1 = a₁X₁ + a₂X₂ + …
고유값주성분의 분산. R 에서는 pc$sdev^2
기여율고유값 / 고유값 합. 그 주성분이 설명하는 분산 비율
스크리 그림주성분 번호별 고유값을 이은 그래프. 꺾이는 지점(팔꿈치)까지 고른다

주성분 수 고르는 법

기준내용
누적 기여율70~90% 이상이 될 때까지
고유값 1 이상표준화했을 때 변수 하나의 분산이 1 이므로, 그보다 많이 설명하는 주성분만 (카이저 기준)
스크리 그림고유값이 급히 줄다가 완만해지는 꺾인 곳 앞까지

상관행렬과 공분산행렬

공분산행렬 (표준화 안 함)상관행렬 (표준화)
언제변수 단위가 같고 분산 차이 자체가 의미 있을 때단위나 크기가 서로 다를 때
Rprcomp(x)prcomp(x, scale = TRUE)
고유값 합변수 분산의 합변수 수 p

성질 정리

  • 주성분끼리는 상관이 0 이다. 그래서 회귀의 다중공선성 문제를 피하는 데 쓴다 (주성분 회귀)
  • 뒤로 갈수록 고유값이 작아진다. 늘어나지 않는다
  • 주성분은 최대 min(p, n - 1) 개. 관측치 수만큼 만들 수 있는 것이 아니다
  • 변수 사이의 구조를 요약하는 것이지 종속변수와의 관계를 보는 분석이 아니다
  • 주성분 계수의 절댓값이 큰 변수가 그 주성분에 크게 기여한다. 부호 전체가 뒤집혀도 같은 주성분이다

더 깊게: 두 변수일 때

표준화한 두 변수 A, B 의 상관계수가 r (> 0) 이면 주성분은 (A + B) / √2 (분산 1 + r) 와 (A - B) / √2 (분산 1 - r) 다. 둘이 함께 움직이는 방향이 제1주성분, 엇갈리는 방향이 마지막 주성분이다. r 이 0.1 처럼 작으면 두 고유값이 1.1 과 0.9 로 비슷해져 차원을 줄이는 이득이 거의 없다.

시험에 이렇게 나와요

확인 문제

Q1. 주성분분석 결과 주성분별 분산 설명 비율이 0.50, 0.25, 0.15, 0.10 이다. 누적 80% 이상이 되는 최소 주성분 수는?

  1. 1
  2. 2
  3. 3
  4. 4
정답 보기

3번 3

누적하면 0.50 → 0.75 → 0.90. 두 개로는 75% 라 부족하고 세 개에서 80% 를 넘는다.

Q2. 주성분분석에 대한 설명으로 옳지 않은 것은?

  1. 분산이 큰 방향부터 주성분을 만든다
  2. 차원 축소에 쓴다
  3. 주성분끼리는 서로 상관이 없다
  4. 제2주성분이 제1주성분보다 더 많은 분산을 설명한다
정답 보기

4번 제2주성분이 제1주성분보다 더 많은 분산을 설명한다

뒤로 갈수록 설명하는 분산이 줄어든다.

Q3. 누적 기여율이 PC1 0.42, PC2 0.68, PC3 0.83, PC4 0.92 일 때 2차원으로 줄이면 잃는 정보의 비율은?

  1. 17%
  2. 32%
  3. 68%
  4. 42%
정답 보기

2번 32%

32%다. 두 주성분이 68%를 설명하므로 1 - 0.68 = 0.32를 잃는다.

Q4. 변수의 단위가 서로 크게 다를 때 주성분분석에서 해야 할 일은?

  1. 단위가 큰 변수를 지운다
  2. 표준화해 상관행렬로 분석한다
  3. 관측치 수를 늘린다
  4. 공분산행렬을 그대로 쓴다
정답 보기

2번 표준화해 상관행렬로 분석한다

표준화하지 않으면 분산이 큰 변수가 결과를 지배한다.

Q5. 표준화한 데이터로 주성분분석을 했다. 고유값이 2.9, 1.4, 0.9, 0.5, 0.3 일 때 고유값 1 이상 기준으로 고르는 주성분 수는?

  1. 1
  2. 2
  3. 3
  4. 5
정답 보기

2번 2

1 보다 큰 것은 2.9 와 1.4 두 개다.

Q6. 변수 5개, 관측치 100개로 만들 수 있는 주성분의 최대 개수는?

  1. 5
  2. 99
  3. 100
  4. 500
정답 보기

1번 5

min(5, 99) = 5. 변수 수를 넘을 수 없다.

Q7. 주성분분석의 쓰임으로 알맞지 않은 것은?

  1. 변수 수를 줄여 모형을 단순하게
  2. 고차원 데이터를 2차원으로 시각화
  3. 독립변수와 종속변수의 선형관계 검정
  4. 다중공선성이 있는 변수들을 요약
정답 보기

3번 독립변수와 종속변수의 선형관계 검정

종속변수와의 관계는 회귀분석의 일이다.

헷갈리기 쉬운 O·X

주성분은 데이터(관측치) 수만큼 만들 수 있다.

정답 보기

X 최대 min(변수 수, 관측치 - 1) 개다.

주성분분석은 종속변수가 필요 없는 비지도 학습이다.

정답 보기

O

표준화한 주성분분석에서 고유값의 합은 변수 수와 같다.

정답 보기

O 표준화한 변수 하나의 분산이 1 이기 때문이다.

함께 보면 좋은 개념