끄적이는 개발노트

260611_강의 정리 (차원 축소) 본문

머신러닝

260611_강의 정리 (차원 축소)

크런키스틱 2026. 6. 11. 09:50
728x90

 

machine learning · 차원축소
차원 축소 완전 정복
PCA · SVD · Manifold
  • 차원의 저주가 무엇인지, 왜 문제가 되는지 이해함
  • 선형 축소(PCA, SVD)와 비선형 축소(Manifold)의 원리와 차이를 파악함
  • 고유값/고유벡터, 특이값 분해(SVD) 개념을 수식 없이 직관적으로 이해함
⚠️
1. 차원의 저주 — 왜 변수가 많으면 문제가 생기나

"데이터 공간이 넓어질수록 데이터는 오히려 더 드문드문 흩어진다"

  • 차원(변수 수)이 늘어날수록 데이터 간 거리가 모두 비슷해짐 — 가까운 것과 먼 것의 구분이 사라짐
  • 같은 양의 데이터가 더 넓은 공간에 흩어지므로 희소성(sparsity) 발생
  • 모델 입장에서 패턴을 찾으려면 더 많은 데이터가 필요하고 → 학습 복잡도 폭증
  • 차원 축소는 중요한 정보는 유지하면서 불필요한 차원을 제거하는 과정임
💡 새 개념
차원의 저주 Curse of Dimensionality
  • 변수가 늘어날수록 데이터가 희소해지는 현상
  • 거리 기반 알고리즘(KNN, SVM 등)에서 특히 심각하게 나타남
100차원 공간에서는 모든 점이 거의 같은 거리에 있어 '가까운 이웃'이 의미 없어짐
희소성 Sparsity
  • 고차원 공간에서 데이터가 드문드문 분포하는 상태
  • 원래 정보의 대부분이 소실될 위험이 있음
1000개 데이터가 1000차원에 분포 → 각 차원에 평균 1개꼴로 존재
핵심 트레이드오프
· 차원 축소 시 원본 정보 일부 소실은 불가피함
· 목표는 가장 중요한 정보를 최대한 보존하면서 차원을 줄이는 것
🗺️
2. 차원 축소 방법 전체 지도

크게 두 가지 — 데이터가 직선(평면)으로 요약되는지, 곡면으로 펼쳐지는지에 따라 나뉨

차원 축소
선형 방법
PCA, SVD, NMF, ICA
+
비선형 방법
Manifold: MDS, LLE, t-SNE, UMAP
구분 방법 핵심 아이디어 보존하는 것
선형 PCA 분산이 최대인 방향으로 투영 분산 (전체 퍼짐)
선형 SVD 행렬을 3개 행렬 곱으로 분해 행렬 구조 (랭크)
선형 NMF 음수 없는 성분 분해 부분 구성 요소
비선형 MDS 점 간 거리를 유지하며 저차원 배치 거리
비선형 t-SNE 가까운 점은 모으고 먼 점은 밀어냄 국소 이웃 구조
비선형 UMAP 위상 구조 유지 + 빠른 속도 전역 + 국소 구조
척도(metric)란?
· 분산 — 데이터가 얼마나 퍼져 있는가 (PCA의 기준)
· 거리 — 두 점 사이의 떨어진 정도 (MDS의 기준)
· 방향 — 어느 쪽으로 가장 많이 변하는가 (PCA 주성분의 의미)
📐
3. PCA — 분산이 가장 큰 방향을 찾아라

"그림자를 가장 크게 만드는 방향에서 빛을 비추는 것"

  • 데이터의 분산(퍼짐)이 가장 큰 방향을 첫 번째 주성분으로 선택함
  • 첫 번째 방향과 직각(수직)인 방향 중 분산이 가장 큰 것을 두 번째 주성분으로 선택함
  • 이 과정을 반복해 원하는 차원 수만큼 주성분을 추림
  • 공간 변환(space transformation) — 원래 축(x, y, z…)을 새로운 축(PC1, PC2…)으로 회전시키는 것
  • 정방행렬(정사각 행렬)에서 고유값 분해로 주성분을 구함
💡 새 개념
주성분 Principal Component
  • 데이터의 분산이 최대가 되는 새로운 축 방향
  • PC1이 가장 중요, PC2, PC3 순으로 중요도 감소
키·몸무게·허리둘레 3차원 → PC1(체형 크기), PC2(비율) 2차원으로 압축
고유값 / 고유벡터 Eigenvalue / Eigenvector
  • 고유벡터 — 행렬 변환 후에도 방향이 바뀌지 않는 특별한 벡터
  • 고유값 — 그 방향으로 얼마나 늘어나거나 줄어드는지 나타내는 배율
  • PCA에서 고유벡터 = 주성분 방향, 고유값 = 해당 방향의 분산 크기
고무줄을 특정 방향으로 잡아당기면 — 방향(고유벡터)은 유지되고 길이(고유값)만 변함
변수 기여도 Feature Contribution / Loadings
  • 각 원래 변수가 주성분에 얼마나 영향을 미치는지 나타내는 수치
  • 어떤 변수가 PC1을 주도하는지 파악 가능
PC1에서 '소득' 기여도 0.8, '나이' 기여도 0.1 → PC1은 주로 소득을 반영함
PCA 직관 요약
· 데이터를 가장 잘 설명하는 새 좌표계를 찾는 과정
· 고유값이 클수록 그 주성분이 데이터를 더 많이 설명함
· 고유값 상위 k개 주성분만 남기면 → k차원으로 축소 완료
🔢
4. SVD — 어떤 행렬이든 분해한다

"모든 변환은 '회전 → 늘리기 → 회전' 세 동작으로 분리할 수 있다"

  • PCA는 정방행렬(행 = 열)에서만 동작 → 현실 데이터는 대부분 비정방행렬 (행 ≠ 열)
  • SVD(특이값 분해)는 어떤 크기의 행렬도 분해 가능 — PCA의 단점을 극복함
  • 행렬 M을 3개의 행렬 곱으로 분해: M = U Σ Vᵀ
M = U · Σ · Vᵀ
M 원본 행렬 분해하려는 데이터 행렬 (예: 사용자 × 영화 평점)
U 왼쪽 특이벡터 행(샘플) 방향의 새로운 좌표계 — "각 데이터가 어떤 패턴을 가지나"
Σ 특이값 (대각행렬) 각 방향이 얼마나 중요한지 나타내는 크기 — 고유값의 SVD 버전
Vᵀ 오른쪽 특이벡터 열(특성) 방향의 새로운 좌표계 — "각 특성이 어떤 패턴을 가지나"
💡 고유값 분해 vs SVD — 무엇이 다른가
고유값 분해 Eigendecomposition
  • 정방행렬(n×n)에만 적용 가능
  • 행렬 A = Q Λ Q⁻¹ 형태로 분해
  • PCA 계산의 핵심 도구
공분산 행렬(정방행렬)의 고유벡터 → PCA 주성분 방향
특이값 분해 Singular Value Decomposition, SVD
  • 비정방행렬(m×n)에도 적용 가능 — 고유값 분해의 일반화
  • 특이값(Σ의 대각 원소)은 항상 0 이상의 실수
  • 상위 k개의 특이값만 남기면 → 저랭크 근사(차원 축소)
1000개 영화 × 5만 명 사용자 행렬 → SVD로 잠재 요인 20개로 압축 (넷플릭스 추천)
SVD와 PCA의 관계
· 데이터 행렬 X를 직접 SVD → 결과가 PCA와 동일함
· PCA는 "공분산 행렬의 고유값 분해", SVD는 "데이터 행렬 직접 분해" — 경로는 다르나 목적지는 같음
· scikit-learn의 PCA는 내부적으로 SVD를 사용함
🔧
5. PCA 변형 — 상황에 맞는 도구 선택

표준 PCA의 한계를 각 상황에 맞게 보완한 변형들

KernelPCA
비선형 데이터에 PCA 적용
선형으로 분리되지 않는 데이터를 고차원으로 보내서 선형 분리 후 PCA 수행
  • 커널 함수로 데이터를 고차원 공간에 매핑 → 그 공간에서 PCA 수행
  • 표준 PCA가 실패하는 원형·나선형 데이터에 효과적
🔧 kernel= 파라미터 종류
RBF Radial Basis Function · 방사 기저 함수
  • 가장 범용적으로 쓰이는 커널 — 기본값
  • 원형·나선형 등 복잡한 비선형 구조에 강함
동심원 형태로 분포한 데이터 분리에 효과적
polynomial 다항식 커널
  • 완만한 곡선 경계에 적합
  • 차수(degree) 파라미터로 곡선의 복잡도 조절 가능
2차 곡선으로 분리되는 데이터에 적합
sigmoid
  • 신경망 활성화 함수와 동일한 형태
  • RBF·poly에 비해 상대적으로 덜 사용됨
cosine 코사인 유사도 커널
  • 벡터의 방향(각도) 유사도를 기준으로 매핑
  • TF-IDF 등 텍스트 데이터에 적합
IncrementalPCA
대용량 데이터용 배치 처리
전체 데이터를 메모리에 올리지 않고 미니배치 단위로 PCA 수행
  • RAM이 부족한 대규모 데이터셋에 사용
  • 온라인 학습(스트리밍 데이터)에도 적용 가능
SparsePCA
희소한 주성분 추출
대부분 변수의 기여도를 0으로 만들어 해석 가능한 주성분 추출
  • 주성분이 일부 변수에만 의존하도록 제약 → 해석이 쉬워짐
  • 유전자 발현 데이터처럼 대부분 변수가 관련 없는 경우 유용
TruncatedSVD
희소 행렬 전용 SVD
전체 분해 없이 상위 k개 특이값만 빠르게 계산
  • 텍스트 데이터(TF-IDF 행렬)처럼 0이 많은 희소 행렬에 최적
  • scikit-learn에서 TruncatedSVD 또는 LSA(잠재 의미 분석)로 사용
언제 무엇을 쓸까
· 일반 데이터: PCA
· 비선형 구조: KernelPCA
· 메모리 부족 / 대용량: IncrementalPCA
· 텍스트 / 희소 행렬: TruncatedSVD
🧩
6. NMF와 ICA — "무엇으로 이루어졌나"를 찾아라

PCA와 달리 구성 요소의 해석 가능성에 초점을 둔 분해 방법

NMF
비음수 행렬 분해 Non-Negative Matrix Factorization
음수 없이 — 데이터를 더하기만으로 조합되는 부분 성분으로 분해
  • PCA는 첫 단계에서 평균 중심화(mean centering)를 수행 — 각 값에서 평균을 빼므로 음수가 발생함
  • 픽셀(0~255), 단어 빈도(TF-IDF)처럼 본질적으로 양수인 데이터에 PCA를 적용하면 음수 성분이 섞여 해석이 깨짐
  • NMF는 모든 성분을 0 이상으로 제약 → "이 주제가 X% 포함됨" 식으로 직관적 해석 가능
  • 이미지에서 눈·코·입 같은 부분 특성 추출, 문서에서 토픽 추출에 적합
  • PCA와 달리 기저 벡터가 서로 직교하지 않아도 됨
뉴스 기사 → NMF → "경제 성분 60% + 정치 성분 30% + 스포츠 성분 10%"처럼 분해
ICA
독립 성분 분석 Independent Component Analysis
서로 통계적으로 독립적인 원천 신호를 분리해냄
  • 뒤섞인 신호에서 원래 독립적인 신호를 복원하는 것이 목적
  • PCA: 분산 최대화 방향 탐색 / ICA: 통계적 독립성 최대화 방향 탐색
  • 뇌파(EEG), 음성 분리, 금융 신호 분석에 주로 사용
파티에서 여러 마이크가 섞인 소리를 녹음 → ICA로 각 사람 목소리 분리 (칵테일 파티 문제)
🌀
7. 비선형 Manifold — 구겨진 공간을 펼쳐라

"구겨진 종이를 평평하게 펼치면 위상 구조가 드러난다" — 선형 방법이 실패하는 곳에서 시작

  • 고차원 데이터가 실제로는 저차원 곡면(다양체, Manifold) 위에 분포한다는 가정에서 출발
  • 선형 방법(PCA)은 이 곡면을 직선으로 근사 → 구조 왜곡 발생
  • Manifold 방법은 곡면의 국소 구조(가까운 점 관계)를 유지하며 저차원으로 펼침
💡 새 개념
다양체 Manifold
  • 고차원에 있지만 실제로는 저차원 구조를 가진 데이터 분포
  • 가장 유명한 예: 스위스 롤(Swiss Roll) — 3D 공간의 2D 곡면
손글씨 숫자 이미지(784차원) → 실제로는 2~3차원의 Manifold 위에 존재
주요 Manifold 방법 비교
방법 핵심 아이디어 속도 주 용도
MDS 모든 점 쌍의 거리를 보존하며 배치 느림 거리 행렬 시각화
LLE 각 점을 이웃의 선형 조합으로 재구성 보통 국소 구조 보존
t-SNE 가까운 점은 뭉치고 먼 점은 밀어냄 (확률 기반) 느림 고차원 클러스터 시각화
UMAP 위상적 구조 보존 + t-SNE보다 빠름 빠름 대규모 데이터 시각화, 전처리
Manifold 방법 사용 시 주의
· t-SNE는 시각화 전용 — 축소된 좌표의 거리가 절대적 의미를 갖지 않음
· UMAP은 시각화 + 실제 특성 추출 모두 가능
· 두 방법 모두 새 데이터에 대한 변환(transform)이 불안정할 수 있음
8. 전체 흐름 요약
1
차원의 저주 인식
변수가 많아질수록 데이터가 희소해지고 거리 측정이 무의미해짐
2
데이터 구조 파악 — 선형인가, 비선형인가
선형 구조 → PCA/SVD 계열 / 비선형 곡면 구조 → Manifold 계열 선택
3
PCA — 고유값/고유벡터로 주성분 추출
분산이 최대인 방향(고유벡터)을 찾고, 중요도(고유값) 순으로 차원 축소
4
SVD — 비정방행렬도 분해 가능 (M = UΣVᵀ)
U(샘플 패턴) · Σ(중요도) · Vᵀ(특성 패턴)로 분리, 상위 k개만 남겨 압축
5
Manifold — 고차원 곡면을 평면으로 전개
t-SNE/UMAP으로 국소 이웃 구조를 보존하며 2~3차원 시각화
한 줄 정리
· PCA: "분산 최대 방향으로 공간을 회전시켜 앞쪽 축만 남김"
· SVD: "어떤 행렬이든 U·Σ·Vᵀ로 분리, Σ 상위 k개만 남기면 압축 완료"
· Manifold: "고차원 곡면 위의 데이터를 평평하게 펼쳐 저차원으로 표현"
PCA SVD 고유값 분해 t-SNE UMAP NMF ICA 차원의 저주
728x90