
이 문서는 고차원 데이터를 저차원으로 효과적으로 축소할 수 있는
대표적인 차원 축소 기법인 PCA (주성분 분석)의 개념과 알고리즘을 정리한 학습 기록이다.
PCA는 고차원 데이터를 저차원으로 투영하여
데이터의 핵심적인 정보(분산)를 최대한 보존하는 차원 축소 기법
일반적으로 시각화, 노이즈 제거, 과적합 방지, 속도 개선을 위해 사용
고차원 공간에 존재하는 데이터를 가장 분산이 큰 방향(=주성분)으로 투영하여
'더 적은 차원으로 요약함
고차원 데이터의 정보 손실을 최소화하면서 핵심 축을 중심으로 재표현
→ 고차원 공간에서의 분포를 2차원 이하로 선형 투영
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
# 데이터 로드
X, _ = load_iris(return_X_y=True)
# PCA 수행 (2차원으로 축소)
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
# 시각화
plt.scatter(X_pca[:, 0], X_pca[:, 1])
plt.title("PCA Projection (2D)")
plt.xlabel("PC1")
plt.ylabel("PC2")
plt.show()
| 용어 | 설명 |
|---|---|
| 주성분(PC) | 분산이 가장 큰 방향으로 만든 새로운 축 |
| 고유값 | 각 주성분이 갖는 중요도 |
| 고유벡터 | 주성분의 방향을 나타내는 벡터 |
| 공분산 행렬 | 변수 간 상관관계를 요약한 행렬 |
| n_components | 축소할 차원 수 |
처음에는 단순한 축소 기법이라고 생각했지만,
PCA는 단순히 차원을 줄이는 것이 아니라 데이터를 재구성하여 중요한 정보를 남기는 과정이었다.
특히 고차원 데이터의 시각화나 정규화 후 PCA를 적용하는 과정에서
수학적 직관(분산, 고유값)을 이해하고 나니 데이터 해석력이 훨씬 높아진 느낌이다.