logo

분산 설명력

분산 설명력

🤖 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")

주성분 9개의 분산 설명력 스크리 플롯. PC3에서 급격히 꺾인 뒤 거의 평평함

  • 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개로 충분

퀴즈

문제 1 / 4맞음: 0힌트: 0틀림: 0채점중: 0남음: 4

분산 설명력에 대한 설명으로 가장 적절한 것은?

  • ○각 주성분이 입력 데이터의 전체 분산 중 얼마나 설명하는지 나타내는 비율
  • ○각 주성분에 포함된 원래 변수의 개수
  • ○주성분 점수의 평균
  • ○분류 모형의 정확도

퀴즈를 풀려면 대화형 기능을 불러와야 합니다.

Previous
차원 축소