차원 축소(PCA, t-SNE, UMAP)를 통해 고차원 데이터를 효율적으로 시각화·분석하고, 노이즈를 제거함으로써 핵심 패턴을 발견할 수 있습니다!
고차원 데이터란?
- 데이터의 피처(변수)가 매우 많은 상태. (열이 많을 때)
이미지 데이터의 경우, 한 장의 이미지를 구성하는 픽셀 수만큼의 피처가 있을 수 있습니다.
어떤 문제가 생길까?
차원 축소의 장점
대부분의 데이터에는 잡음(irrelevant feature)이 포함
차원 축소 시, 중요한 변동을 잘 설명하지 못하는 데이터는 줄여버림으로써 불필요한 정보를 걸러낼 수 있음

오른쪽처럼 2차원 평면에 투영해서 보는게 데이터를 잘 구분할 수 있을 것
데이터에서 가장 ‘분산이 큰 방향(주성분)’을 찾아 그 방향으로 데이터를 투영하면, 그 축이 데이터의 중요한 변동(variance)을 많이 설명할 수 있다. (왼쪽보다 오른쪽에서 데이터를 보는게 더 잘 볼 수 있다)
주성분(Principal Component)
데이터의 핵심적인 축
- 가장 큰 분산을 갖는 방향을 1주성분으로, 그다음으로 큰 분산을 갖는 서로 직교(90도)하는 방향을 2주성분으로 하는 식으로 이어진다.
설명 분산(Explained Variance) 비율
장단점
장점
단점
비선형 차원축소 방법

고차원 공간에서 ‘서로 가까운 데이터 포인트는 가까이, 먼 데이터 포인트는 멀리’ 배치하려고 하는 비선형 차원 축소 기법.
동작 원리
장점
단점

t-SNE와 유사하게 고차원 데이터의 구조를 2D/3D로 매핑하는 비선형 차원 축소 기법. ‘근접 그래프(nearest neighbor graph)’와 ‘Riemannian manifold’ 이론에 기반한다.
장점
단점
t-SNE와 UMAP 모두 시각화 목적에서 많이 쓰이며, 비슷한 방식으로 “서로 비슷한 포인트끼리 가까이 두는” 방식입니다. 데이터를 2D로 프로젝트 해서 한눈에 군집 패턴을 볼 수 있다는 점이 가장 큰 장점입니다.
import numpy as np
import matplotlib.pyplot as plt
# 1. 데이터 로드 (Iris 예시)
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data # (150, 4) 형태: 꽃받침, 꽃잎 길이·너비
y = iris.target # (150,) : 품종 라벨(0, 1, 2)
# 2. PCA
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
# 3. t-SNE
from sklearn.manifold import TSNE
tsne = TSNE(n_components=2, perplexity=30, random_state=42)
X_tsne = tsne.fit_transform(X)
# 4. UMAP
# (umap-learn 설치 필요할 수 있습니다 : pip install umap-learn)
from umap import UMAP
umap = UMAP(n_components=2, n_neighbors=15, random_state=42)
X_umap = umap.fit_transform(X)
# 5. 시각화 (PCA, t-SNE, UMAP 결과 비교)
fig, axes = plt.subplots(1, 3, figsize=(15, 4))
axes[0].scatter(X_pca[:, 0], X_pca[:, 1], c=y)
axes[0].set_title("PCA (2D)")
axes[1].scatter(X_tsne[:, 0], X_tsne[:, 1], c=y)
axes[1].set_title("t-SNE (2D)")
axes[2].scatter(X_umap[:, 0], X_umap[:, 1], c=y)
axes[2].set_title("UMAP (2D)")
plt.tight_layout()
plt.show()

PCA(n_components=2)로 2차원 주성분으로 투영합니다.TSNE(n_components=2)로 고차원 데이터의 지역적 이웃 구조를 보존하며 2차원으로 매핑.UMAP(n_components=2, n_neighbors=15)로 비선형 매니폴드를 “펴는” 방식의 차원 축소를 수행c=y로 각 품종 클래스(0, 1, 2)를 색으로 구분.1️⃣ 데이터 전처리
: 스케일링(표준화, 정규화), 이상치 제거 등을 먼저 수행해야 합니다.
2️⃣ 하이퍼파라미터 튜닝
3️⃣ 결과 해석
: PCA는 주성분 방향이 어떤 피처 조합과 관련이 있는지 해석 가능.
: t-SNE/UMAP 결과는 시각화를 통해 군집 형태나 분포를 확인하되, 지나친 해석은 지양(거리 자체의 절대적 의미는 왜곡될 수 있음).
4️⃣ 성능 측정 및 검증
: 최종 목적(군집 분석, 노이즈 제거, 시각화 등)에 따라 적절한 지표를 사용해 성능을 평가할 수 있음. (차원 축소만의 별도 지표는 없음)