주성분분석(PCA)
쉽게 말하면
키, 몸무게, 허리둘레, 팔 길이는 서로 비슷하게 움직여요. 이걸 네 개 따로 보지 않고 '덩치'라는 점수 하나로 묶으면 정보를 거의 잃지 않고 간단해져요. 이렇게 여러 변수를 섞어 핵심 축 몇 개로 줄이는 게 주성분분석이에요. 첫 번째 축이 가장 많은 정보를 담아요.
시험용 정의
주성분분석(PCA)은 상관관계가 있는 p 개 변수를 선형결합해 서로 상관이 없는(직교하는) 새 변수인 주성분을 만들고, 그중 앞쪽 몇 개만 남겨 차원을 축소하는 방법이다. 종속변수 없이 변수들의 구조만 보는 비지도 학습이다. 데이터가 가장 넓게 퍼진(분산이 가장 큰) 방향이 제1주성분, 그와 직교하면서 남은 분산이 가장 큰 방향이 제2주성분이다. 각 주성분의 분산을 고유값, 전체 분산 중 그 주성분이 차지하는 비율을 기여율이라 하고, 앞에서부터 더한 것이 누적 기여율이다. 각 변수가 주성분에 얼마나 들어가는지를 나타내는 계수를 주성분 계수(적재값, R 의 rotation)라 한다.
비유로 이해하기
길쭉한 럭비공에 꼬치를 꽂는 일이다. 가장 긴 방향으로 꽂은 꼬치가 제1주성분, 그와 직각인 방향 중 다음으로 긴 쪽이 제2주성분이다. 럭비공이 충분히 길쭉하면 긴 꼬치 하나만으로도 공의 모양을 거의 설명할 수 있다.
자세히
먼저 알아 둘 말
| 말 | 뜻 |
|---|---|
| 차원 축소 | 변수 수를 줄이면서 정보 손실을 최소로 |
| 선형결합 | 변수에 계수를 곱해 더한 것. PC1 = a₁X₁ + a₂X₂ + … |
| 고유값 | 주성분의 분산. R 에서는 pc$sdev^2 |
| 기여율 | 고유값 / 고유값 합. 그 주성분이 설명하는 분산 비율 |
| 스크리 그림 | 주성분 번호별 고유값을 이은 그래프. 꺾이는 지점(팔꿈치)까지 고른다 |
주성분 수 고르는 법
| 기준 | 내용 |
|---|---|
| 누적 기여율 | 70~90% 이상이 될 때까지 |
| 고유값 1 이상 | 표준화했을 때 변수 하나의 분산이 1 이므로, 그보다 많이 설명하는 주성분만 (카이저 기준) |
| 스크리 그림 | 고유값이 급히 줄다가 완만해지는 꺾인 곳 앞까지 |
상관행렬과 공분산행렬
| 공분산행렬 (표준화 안 함) | 상관행렬 (표준화) | |
|---|---|---|
| 언제 | 변수 단위가 같고 분산 차이 자체가 의미 있을 때 | 단위나 크기가 서로 다를 때 |
| R | prcomp(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 로 비슷해져 차원을 줄이는 이득이 거의 없다.
시험에 이렇게 나와요
- 누적 기여율로 주성분 수 정하기 (0.45, 0.25, 0.15 … → 80% 이상은 3개), 2차원 축소 시 손실 = 1 - 누적
- 고유값 1 이상 기준, 스크리 그림 읽기
- 주성분끼리 상관 없음, 분산이 큰 방향부터, 뒤로 갈수록 설명 분산 감소 ('증가'는 틀림)
- 종속변수와 독립변수의 관계를 보는 분석이 아님, 차원 '확장' 용도 아님, 비지도 학습
- 주성분 수는 데이터 수만큼 생기지 않음 (최대 min(p, n - 1))
- summary(prcomp) 출력 읽기: 변수 개수 = 주성분 개수, 계수 절댓값이 큰 변수가 크게 기여
- 표준화한 두 변수의 마지막 주성분은 (A - B) / √2 꼴
확인 문제
Q1. 주성분분석 결과 주성분별 분산 설명 비율이 0.50, 0.25, 0.15, 0.10 이다. 누적 80% 이상이 되는 최소 주성분 수는?
- 1
- 2
- 3
- 4
정답 보기
3번 3
누적하면 0.50 → 0.75 → 0.90. 두 개로는 75% 라 부족하고 세 개에서 80% 를 넘는다.
Q2. 주성분분석에 대한 설명으로 옳지 않은 것은?
- 분산이 큰 방향부터 주성분을 만든다
- 차원 축소에 쓴다
- 주성분끼리는 서로 상관이 없다
- 제2주성분이 제1주성분보다 더 많은 분산을 설명한다
정답 보기
4번 제2주성분이 제1주성분보다 더 많은 분산을 설명한다
뒤로 갈수록 설명하는 분산이 줄어든다.
Q3. 누적 기여율이 PC1 0.42, PC2 0.68, PC3 0.83, PC4 0.92 일 때 2차원으로 줄이면 잃는 정보의 비율은?
- 17%
- 32%
- 68%
- 42%
정답 보기
2번 32%
32%다. 두 주성분이 68%를 설명하므로 1 - 0.68 = 0.32를 잃는다.
Q4. 변수의 단위가 서로 크게 다를 때 주성분분석에서 해야 할 일은?
- 단위가 큰 변수를 지운다
- 표준화해 상관행렬로 분석한다
- 관측치 수를 늘린다
- 공분산행렬을 그대로 쓴다
정답 보기
2번 표준화해 상관행렬로 분석한다
표준화하지 않으면 분산이 큰 변수가 결과를 지배한다.
Q5. 표준화한 데이터로 주성분분석을 했다. 고유값이 2.9, 1.4, 0.9, 0.5, 0.3 일 때 고유값 1 이상 기준으로 고르는 주성분 수는?
- 1
- 2
- 3
- 5
정답 보기
2번 2
1 보다 큰 것은 2.9 와 1.4 두 개다.
Q6. 변수 5개, 관측치 100개로 만들 수 있는 주성분의 최대 개수는?
- 5
- 99
- 100
- 500
정답 보기
1번 5
min(5, 99) = 5. 변수 수를 넘을 수 없다.
Q7. 주성분분석의 쓰임으로 알맞지 않은 것은?
- 변수 수를 줄여 모형을 단순하게
- 고차원 데이터를 2차원으로 시각화
- 독립변수와 종속변수의 선형관계 검정
- 다중공선성이 있는 변수들을 요약
정답 보기
3번 독립변수와 종속변수의 선형관계 검정
종속변수와의 관계는 회귀분석의 일이다.
헷갈리기 쉬운 O·X
주성분은 데이터(관측치) 수만큼 만들 수 있다.
정답 보기
X 최대 min(변수 수, 관측치 - 1) 개다.
주성분분석은 종속변수가 필요 없는 비지도 학습이다.
정답 보기
O
표준화한 주성분분석에서 고유값의 합은 변수 수와 같다.
정답 보기
O 표준화한 변수 하나의 분산이 1 이기 때문이다.