- 차원 축소의 필요성
- PCA 개념과 절차
- 비선형 차원 축소(t-SNE, UMAP) 활용법
차원 축소
! 차원 축소를 통해 고차원 데이터를 효율적으로 시각화.분석하고, 노이즈를 제거함으로써 핵심 패턴을 발견할 수 있음
차원 축소의 필요성
고차원 데이터 : 데이터의 피처가 매우 많은 상태. 이미지 데이터는 픽셀 수 만큼 피처가 있을 수 있음
어떤 문제가 있을 때?
- 모델 학습 시 연산 복잡도가 급증하여 시간이 오래걸림
- 많은 피처 중 일부는 중요한 정보를 주지 못함
- 차원이 너무 높아지면 시각화하기 어려워 패턴 파악 힘듦
차원 축소의 장점
- 노이즈 제거 -> 모델 성능 및 일반화 능력 개선
- 2차원, 3차원으로 축소 -> 시각적으로 직관적인 분석 가능
- 핵심 구조나 패턴을 쉽게 발견
차원 축소 기본 개념
✔️ 선형 차원 축소
: 데이터를 특정 선형 변환(쉬운계산)(행렬 곱)으로 투영하여 차원을 줄이는 기법
: PCA가 대표적
- 3차원 공간에 놓인 물체가 있고
- 빛을 한 방향에서 비추면, 그림자가 2차원 벽면에 투영
- 3차원 -> 2차원
- 즉, 선형 변환이라는 간단 계산만으로 차원축소를 하게 되는 경우!
✔️ 비선형 차원 축소
: 데이터가 복잡한 기하학적 구조일 때, 비선형 맵핑을 이용
: t-SNE, UMAP 등이 이에 해당
- 구겨져 있는 종이를 2차원으로 펼치는 느낌
- 즉, 구겨져 있는 형태(복잡한 형태)를 펴서 차원 축소를 하게 되는 경우!
차원 축소와 노이즈 제거
- 대부분 데이터에는 잡음(irrelevant feature)이 포함
- 중요한 변동을 잘 설명하지 못하는 데이터는 줄여버림으로써 불필요한 정보를 걸러낼 수 있음
PCA (주성분 분석)

PCA 개념 -> 데이터가 가장 잘 구분할 수 있는 방향을 찾는 것!! (핵심 축!)
: 데이터에서 가장 분산이 큰 방향(주성분)을 찾아 그 방향으로 데이터를 투영하면, 그 축이 데이터의 중요한 변동을 많이 설명할 수 있음
- 피사의 사탑(기울어진 건물)을 반듯하게 서있는 모습을 찍고싶음
- 카메라를 기울어진 만큼 기울어서 찍으면 반듯한 사진을 찍을 수 있음
- 건물의 각도 : 데이터가 놓여 있는 실제 축(변수들)
- 카메라 각도 : 우리가 새로 찾고 싶은 '주성분' 축
주성분
: 가장 큰 분산을 갖는 방향을 1주성분, 그 다음으로 2주성분..이어질 수 있음
설명 분산 비율
: 몇 개 주성분만으로 전체 분산의 몇 퍼센트를 설명할 수 있는지 나타냄
: 2개의 주성분을 뽑았는데, 설명하는 비율이 90%다라고 한다면 2개로도 충분하다!
장점
: 계산이 비교적 간단(선형 연산), 결과 해석이 용이(주성분 방향 해석 가능), 노이즈 제거
단점
: 데이터가 선형이 아닌 패턴일 경우 정보 손실 발생, 매우 복잡한 구조를 충분히 반영이 어려움
단점을 극복하려면, 아래의 방법 이용
t-SNE

t-SNE
: 고차원 공간에서 '서로 가까운 데이터 포인트는 가까이, 먼 데이터 포인트는 멀리' 배치하려고 하는 비선형 차원 축소 기법
동작 원리
1. 고차원에서 데이터 간 '지역적 확률 분포'를 추정
2. 2차원, 3차원에서 비슷한 확률 분포가 되도록 데이터들을 배치
- 고차원 공간(큰 운동장)에 사람들이 흩어져 있는데, 작은 교실(2d) 안에 앉혀야 하는 상황
- 친구들 중 서로 가깝게 붙어 있기를 원하는 그룹이 있음
- 즉, t-SNE는 고차원에서 A가 B와 가까울 확률을 구하고, 2D에서는 그 확률을 최대한 비슷하게 만들도록 위치를 조정
장점
: 데이터 군집이 자연스럽게 시각화되어, 군집별 패턴을 인지하기 쉬움
단점
: 계산 비용이 큰 편(대규모 데이터에서 시간이 오래 걸림)
: 하이퍼파라미터 조정 필요
: 시각화 결과 해석이 직관적이지만, 실제 거리 척도 왜곡 주의
UMAP

UMAP
: 근접 그래프(nearest neighbor graph)와 'Riemannian manifold' 이론에 기반
- 구겨진 종이 예시 생각
- 종이가 구겨진 상태 -> 매니폴드 : 비선형적으로 휘어진 공간
- UMAP은 이 종이가 구겨진 구조에서 가까운 점들은 여전히 가깝게, 먼 점들은 멀리 놓이도록, 매니폴드를 펼쳐 2D로 맵핑
장점
: t-SNE보다 빠르고, 대규모 데이터에 비교적 효율적
: 지역적/글로벌 구조를 함께 잘 반영
: 매개변수(n_neighbors, min_dist)를 통해 클러스터의 응집도나 분산 정도를 조절할 수 있음
단점
: 알고리즘의 개념이 비교적 복잡, 하이퍼파라미터 튜닝을 요함
: t-SNE 만큼은 아니지만, 축소 과정에서 정보 왜곡 주의.
🍀 TIP
시각화 목적에서 많이 쓰임
데이터를 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()

실무 적용시 고려사항
1. 데이터 전처리 선행
2. 하이퍼파라미터 튜닝
- PCA : 주성분 개수를 얼마나 선택할지(설명 분산 비율을 확인).
- t-SNE : perplexity, learning rate, iteration 수.
- UMAP : n_neighbors, min_dist 등.
3. 결과 해석
: PCA는 주성분 방향이 어떤 피처 조합과 관련이 있는지 해석 가능
: t-SNE,/UMAP 결과는 시각화를 통해 군집 형태나 분포를 확인하되, 지나친 해석은 지양(거리 자체 의미는 왜곡 가능성 있음)
4. 성능 측정 및 검증
: 최종 목적(군집 분석, 노이즈 제거, 시각화 등)에 따라 적절한 지표를 사용해 성능을 평가할 수 있음(차원 축소만의 별도 지표 없음)
▼ Q&A
📚 Q1: PCA와 t-SNE(또는 UMAP)의 가장 큰 차이는 무엇인가요?
A1: PCA는 선형 변환을 이용해 분산이 가장 큰 축을 찾는 방식으로 차원을 줄이는 반면, t-SNE와 UMAP은 비선형 방식으로 근접한 데이터들을 가깝게 배치해 2D/3D 시각화에 더욱 적합합니다.
📚 Q2: 차원 축소 시, 몇 개의 차원(주성분)을 선택해야 하나요?
A2: ‘설명 분산 비율(Explained Variance Ratio)’을 확인하여 원하는 수준(예: 80% 이상)을 만족하도록 주성분 수를 결정하거나, 업무 목적에 맞춰 시각적으로 해석 가능한 범위를 기준으로 선택합니다.
📚 Q3: t-SNE나 UMAP의 시각화 결과에서 군집끼리 떨어져 보이는데, 이를 그대로 분류 기준으로 삼아도 될까요?
A3: t-SNE나 UMAP은 ‘가까운 점끼리 가깝게 보이도록’ 하는 목적을 갖지만, 거리 자체가 왜곡될 수 있으므로 군집의 상대적 분포를 참고하되, 정확한 분류나 임계값 설정은 추가적인 지표나 모델을 통해 검증해야 합니다.
📚 Q4: PCA 결과에서 각 주성분이 무엇을 의미하는지 어떻게 해석하나요?
A4: PCA 변환 후 components_(주성분 벡터)를 살펴보면, 각 피처가 주성분에 기여하는 정도(가중치)를 알 수 있습니다. 이를 통해 해당 주성분이 어떤 피처들의 조합으로 형성되었는지, 즉 어떤 물리적 의미나 현상의 특징을 반영하는지 파악할 수 있습니다.
📚 Q5: 차원 축소로 인해 데이터의 일부 정보가 손실되지 않나요?
A5: 네, 차원 축소는 원본 데이터의 변동을 100% 반영하지 못하고 일부 정보가 희생됩니다. 하지만 주성분(또는 임베딩)이 중요한 변동을 대부분 설명하도록 설계되어 있으므로, 핵심 패턴 분석에 유리하며, 노이즈를 제거하는 이점도 있습니다.
'머신러닝' 카테고리의 다른 글
| [ML] 머신러닝 9강 - 데이터에서 이상치를 제거하려면, 이상탐지 (0) | 2025.11.21 |
|---|---|
| [ML] 머신러닝 7강 - 그룹을 나누려면, 클러스터링 (0) | 2025.11.19 |
| [ML] 머신러닝 6강 - 하나보단 둘, 잉상블 기법 (0) | 2025.11.19 |