3과목 · 데이터 분석·16장
차원 축소
차원의 저주, PCA·LDA·t-SNE·UMAP·오토인코더의 원리와 활용, 특성 선택과 차원 축소의 차이를 정리합니다.
1. 차원의 저주(Curse of Dimensionality)
차원이 증가하면 발생하는 문제.
- 데이터 희소성: 고차원에서 관측치가 드물게 분포
- 거리 무의미화: 모든 점이 비슷하게 멀어짐
- 과적합: 모델이 잡음까지 학습
- 계산 비용: 시간·메모리 ↑
- 시각화 불가: 3차원 초과 표현 어려움
2. 해결 — 차원 축소(Dimensionality Reduction)
고차원을 중요한 정보는 유지하면서 저차원으로 변환.
2가지 접근
- 특성 선택(Feature Selection): 기존 변수 중 일부 선택
- 특성 추출(Feature Extraction): 새로운 축 생성
3. 주성분 분석(PCA)
3-1. 핵심
- 데이터 분산을 가장 크게 보존하는 축(주성분) 찾기
- 선형 변환
3-2. 절차
- 데이터 표준화
- 공분산 행렬 계산
- 고유값·고유벡터 구함
- 고유값 큰 순으로 k개 선택
- 원본 데이터 투영
3-3. 설명 분산 비율
- 각 주성분이 설명하는 분산 비율
- 누적 80~95%가 되는 k 선택
3-4. 활용
- 시각화(2D·3D)
- 노이즈 제거
- 다중공선성 완화
- 이미지 압축
4. 선형 판별 분석(LDA)
- 지도학습 차원 축소
- 클래스 분리가 최대가 되는 축
- 분류 전처리에 유용
PCA vs LDA
| 축 | PCA | LDA |
|---|---|---|
| 종류 | 비지도 | 지도 |
| 목적 | 분산 최대 | 클래스 분리 |
| 라벨 | 불필요 | 필요 |
5. t-SNE
- 비선형 차원 축소
- 이웃 확률 보존 → 클러스터 시각화에 강함
- 전역 구조 보존 약함
- 계산 비용 크다
주의
- 거리 해석 불가: 두 클러스터의 간격이 실제 거리가 아님
- Perplexity에 민감
6. UMAP
- t-SNE 대안
- 빠름, 전역 구조 더 잘 보존
- 고차원 임베딩에 선호
7. 오토인코더(Autoencoder)
- 신경망 기반 비지도 차원 축소
- 구조: 입력 → 인코더 → 잠재 벡터 → 디코더 → 재구성
Input → [Encoder] → Bottleneck(z) → [Decoder] → Reconstructed
- 목표: 입력 ≈ 재구성
- 병목(bottleneck)이 저차원 표현
변형
- Denoising AE: 노이즈 제거
- Variational AE(VAE): 확률적 잠재 공간, 생성 가능
- Sparse AE: 희소성 제약
8. 특성 선택 방법
8-1. 필터(Filter)
- 통계적 기준: 분산, 상관, 카이제곱, ANOVA
8-2. 래퍼(Wrapper)
- 모델 성능 기준: RFE(Recursive Feature Elimination)
8-3. 임베디드(Embedded)
- 모델 자체가 선택: Lasso, 트리 기반 중요도
9. 차원 축소 사용 예
| 분야 | 예 |
|---|---|
| 이미지 | 픽셀 → 주성분 |
| 유전체 | 수만 유전자 → 수십 특성 |
| 텍스트 | 단어 벡터 → 2D 시각화 |
| 추천 | 사용자·아이템 잠재 벡터 |
10. 파이썬 예
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_2d = pca.fit_transform(X)
print(pca.explained_variance_ratio_)
from sklearn.manifold import TSNE
ts = TSNE(n_components=2, perplexity=30)
X_tsne = ts.fit_transform(X)
11. 출제 포인트
- 차원의 저주 개념
- PCA vs LDA 차이
- t-SNE의 특징·한계
- 특성 선택 3유형(필터·래퍼·임베디드)
- 오토인코더 구조
요약 체크리스트
- 차원의 저주 문제 3가지
- PCA 절차 5단계
- PCA와 LDA를 목적으로 구분
- 특성 선택과 특성 추출 차이