← 문제 목록/K-dim PCA + Explained Variance Ratio [medium]
문제 해설

K-dim PCA + Explained Variance Ratio [medium]

차원 축소 · medium

preview

K-dim PCA + Explained Variance [medium]

v1 PCA-1D 은 최대 분산 축 1 개만. 실제로는 kk 개 성분을 뽑아 시각화 (k=2)특성 감소 (k ≪ D) 를 하고, 얼마나 많은 정보를 보존했는지 정량화가 필요.

알고리즘

  1. 중심화: Xc=XXˉX_c = X - \bar{X}
  2. 공분산: Σ=1NXcXc\Sigma = \tfrac{1}{N} X_c^\top X_c
  3. Σ=VΛV\Sigma = V \Lambda V^\top (고유값 내림차순 정렬)
  4. Top-k 성분: Vk=V[:,:k]V_k = V[:, :k]
  5. 투영: Z=XcVkZ = X_c V_k (shape (N, k))
  6. 설명된 분산 비율: λijλj\dfrac{\lambda_i}{\sum_j \lambda_j}

Explained Variance Ratio

  • 각 성분이 전체 분산의 몇 %를 담고 있는지.
  • 합이 1 (모든 성분을 쓰면 전부 보존).
  • 누적합을 보면 "95% 분산 보존하려면 몇 개 성분 필요" 같은 실용적 판단 가능.

부호 모호성

vvv-v 는 같은 축 → 채점은 부호 무관. 하지만 같은 성분 내에서 z 와 v 의 부호가 일관되어야 (z=Xcvz = X_c v).

과제

함수 pca_k(X, k) 를 완성하세요.

  • 반환: (components, projections, explained_variance_ratio)
    • components: shape (k, D) — 각 행이 단위 고유벡터, 고유값 내림차순.
    • projections: shape (N, k) — 데이터를 top-k 축으로 투영.
    • explained_variance_ratio: shape (k,) — 각 성분의 분산 비율.
  • 힌트: np.linalg.eigh 은 오름차순 → 뒤에서부터 k 개.

테스트 케이스

#이름검증
1반환 3-tuple
2shapes: (k, D), (N, k), (k,)
3components 단위 벡터 + 서로 직교
4투영의 분산 = 고유값 (내림차순)
5explained_ratio 합 ≤ 1 + 첫 항이 최대
6k=D 시 ratio 합 = 1모든 분산 보존
7투영 분산 합 = 원본 분산 합 (k=D)Frobenius 보존
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.