PCA

조은별·2025년 5월 10일
post-thumbnail

PCA (Principal Component Analysis) 정리

이 문서는 고차원 데이터를 저차원으로 효과적으로 축소할 수 있는
대표적인 차원 축소 기법인 PCA (주성분 분석)의 개념과 알고리즘을 정리한 학습 기록이다.


1. PCA란?

  • PCA는 고차원 데이터를 저차원으로 투영하여
    데이터의 핵심적인 정보(분산)를 최대한 보존하는 차원 축소 기법

  • 일반적으로 시각화, 노이즈 제거, 과적합 방지, 속도 개선을 위해 사용


2. 직관적 이해

  • 고차원 공간에 존재하는 데이터를 가장 분산이 큰 방향(=주성분)으로 투영하여
    '더 적은 차원으로 요약함

  • 고차원 데이터의 정보 손실을 최소화하면서 핵심 축을 중심으로 재표현

→ 고차원 공간에서의 분포를 2차원 이하로 선형 투영


3. 왜 필요한가?

  • 차원의 저주(Curse of Dimensionality): 차원이 높을수록 모델 학습이 어려워짐
  • 시각화 불가능: 3차원 이상의 데이터는 시각화가 어려움
  • 계산량 증가: 학습 속도 및 성능 저하

4. PCA의 핵심 아이디어

  1. 데이터 정규화 (평균 0, 분산 1)
  2. 공분산 행렬 계산
  3. 고유값 분해 (Eigen decomposition)
  4. 고유값이 큰 순서대로 주성분 선택
  5. 해당 주성분 축에 데이터를 투영

5. Scikit-learn을 활용한 PCA

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()

PCA in sklearn


6. 주요 용어 요약

용어설명
주성분(PC)분산이 가장 큰 방향으로 만든 새로운 축
고유값각 주성분이 갖는 중요도
고유벡터주성분의 방향을 나타내는 벡터
공분산 행렬변수 간 상관관계를 요약한 행렬
n_components축소할 차원 수

7. 느낀 점

처음에는 단순한 축소 기법이라고 생각했지만,
PCA는 단순히 차원을 줄이는 것이 아니라 데이터를 재구성하여 중요한 정보를 남기는 과정이었다.
특히 고차원 데이터의 시각화나 정규화 후 PCA를 적용하는 과정에서
수학적 직관(분산, 고유값)을 이해하고 나니 데이터 해석력이 훨씬 높아진 느낌이다.


profile
기록과 회고를 통해 성장하는 데이터, AI 엔지니어 지망생입니다.

0개의 댓글