차원축소·연습 문제

PCA — k개 주성분

문제 설명PROBLEM

preview

PCA — k개 주성분

32번 PCA 1D 의 일반화. 첫 번째 축만이 아니라 상위 k 의 주성분까지 뽑습니다. 2D 시각화(k=2), 3D 시각화, 압축 (k < D) 등 실전 활용의 표준.

알고리즘

  1. 중심화: Xc = X - mean(X, axis=0).
  2. 공분산 행렬: C = Xc.T @ Xc / N (shape (D, D), 대칭).
  3. np.linalg.eigh(C) — 오름차순 정렬 eigenvalue와 eigenvector.
  4. 마지막 k 고유벡터 선택 (eigenvalue 큰 순). 역순으로 반환.
  5. 투영: Z = Xc @ PCs.T (shape (N, k)).

과제

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

  • X shape (N, D).
  • 반환: (pcs, z)pcs shape (k, D) (각 행이 주성분), z shape (N, k).
  • pcs[0]분산이 가장 큰 방향 (내림차순).

테스트 케이스

#이름검증
1shapepcs (k, D), z (N, k)
2정규직교pcs @ pcs.T == I
3투영 분산 내림차순var(z[:, 0]) ≥ var(z[:, 1]) ≥ ...
4k=1 과 32번 일치 (부호 무시)같은 축
5재투영 오차k=D 이면 완벽 복원 가능
개념 노트와 실수 포인트

차원 축소

  • PCA 는 분산이 가장 큰 방향(주성분)으로 투영.
  • ⚠️ 표준화를 먼저 해야 스케일 큰 특성이 지배하지 않음.