분산 설명력
분산 설명력
🤖 AI 프롬프트
전체 주성분의 분산 설명력과 누적 분산 설명력을 계산해줘.
스크리 플롯을 그려 주성분 수를 판단해줘.
- 분산 설명력(Explained Variance Ratio): 각 주성분이 입력 데이터의 전체 분산 중 얼마나 설명하는지 나타내는 비율
- 예: PC1이 60%, PC2가 20%를 설명하면 두 주성분으로 전체 분산의 80%를 보존
fa.get_factor_variance()
실행 결과
(array([6.43840425, 1.97584831]),
array([0.71537825, 0.2195387 ]),
array([0.71537825, 0.93491695]))
- 세 배열은 차례로 성분별 분산, 분산 설명력, 누적 분산 설명력
- 두 번째 배열: PC1이 약 71.5%, PC2가 약 22.0%를 설명
엘보우 방법
- 주성분 수를 늘려가며 각 성분이 설명하는 분량의 변화를 그래프로 시각화
- 설명력이 급격히 낮아지는 엘보우 지점을 주성분 개수 후보로 선택
fa는 주성분 2개만 추출했으므로, 9개 주성분 전체의 정보는get_eigenvalues로 확인- 고유값(eigenvalue): 각 주성분이 담는 분산
- 고유값을 전체 합으로 나누면 분산 설명력
ev, _ = fa.get_eigenvalues()
evr = ev / ev.sum()
sns.lineplot(x=range(1, len(evr) + 1), y=evr, marker="o")

- PC1(71.5%), PC2(22.0%)에 비해 PC3(1.8%)부터 설명력이 크게 낮아지고, 그 뒤로는 거의 평평함
- 꺾이는 지점 앞의 PC1, PC2 두 개가 주성분 개수 후보
누적 분산 설명력
- 누적 분산 설명력: PC1부터 차례로 분산 설명력을 더한 값
- 주성분을 몇 개까지 쓰면 전체 분산의 몇 %를 보존하는지 확인 가능
- 일반적으로 누적 분산 설명력이 80-90%를 넘어서는 지점을 기준으로 판단
import numpy as np
np.cumsum(evr)
실행 결과
array([0.71537825, 0.93491695, 0.95334642, 0.96588057, 0.97749604,
0.98595431, 0.99325656, 0.99777152, 1. ])
| 주성분 | 분산 설명력 | 누적 분산 설명력 |
|---|---|---|
| PC1 | 71.5% | 71.5% |
| PC2 | 22.0% | 93.5% |
| PC3 | 1.8% | 95.3% |
| PC4 | 1.3% | 96.6% |
| PC5 | 1.2% | 97.7% |
| PC6 | 0.8% | 98.6% |
| PC7 | 0.7% | 99.3% |
| PC8 | 0.5% | 99.8% |
| PC9 | 0.2% | 100.0% |
- PC1만 쓰면 약 71.5%, PC2까지 쓰면 약 93.5% 보존
- 주성분 2개로 기준(80-90%)을 넘으므로 2개로 충분
퀴즈
분산 설명력에 대한 설명으로 가장 적절한 것은?
퀴즈를 풀려면 대화형 기능을 불러와야 합니다.