본문 바로가기
C.W.K.
Stream
Lesson 02 of 04 · published

Dimensionality Reduction

~28 min · pca, umap, tsne

Level 0Scout
0 XP0/48 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

차원을 줄이는 목적은 둘로 나뉘어

수백 개 특성을 더 적은 성분으로 압축하면 학습과 저장을 빠르게 하고 잡음을 줄일 수 있어. 사람에게 자료 구조를 보여주려면 2차원이나 3차원 그림으로 투영해야 하고. 압축용 표현은 새 자료에도 같은 변환을 안정적으로 적용해야 하지만 시각화는 이웃 관계를 눈에 보이게 하는 데 더 집중해. 목적을 섞으면 예쁜 그림을 운영 특성으로 오해하기 쉬워.

PCA는 분산이 큰 직교 방향을 찾는다

주성분분석, PCA는 원래 특성의 선형 결합 가운데 자료 분산을 가장 많이 설명하는 방향부터 찾아. 각 성분은 서로 직교하고 변환이 결정적이라 같은 모델을 저장해 새 행에 적용할 수 있어. 수치 특성의 단위가 다르면 큰 단위가 분산을 지배하므로 대개 먼저 스케일을 맞춰야 해.

설명 분산으로 압축량을 정해

n_components=0.95처럼 지정하면 누적 분산의 95%를 설명하는 데 필요한 성분만 남길 수 있어. 그렇다고 분산 95%가 예측 신호 95%를 보존한다는 뜻은 아니야. 목표와 무관한 큰 분산이 중요 성분을 차지할 수 있으므로 원본 특성과 PCA 특성에서 같은 교차검증 지표를 비교해야 해. 성분 적재량을 보면 어떤 원본 열이 각 축을 만드는지도 읽을 수 있어.

UMAP은 이웃 구조를 그림으로 펼쳐

UMAP은 고차원에서 가까운 사례가 낮은 차원에서도 가깝도록 비선형 투영을 만들어. 지역 구조를 잘 보여주면서 어느 정도 넓은 구조도 보존하려 하지만 n_neighbors, min_dist, 거리 척도와 씨앗에 따라 그림이 달라져. 한 그림의 섬을 실제 범주로 선언하지 말고 여러 설정과 원본 사례로 확인해.

t-SNE는 지역 이웃에 특히 집중해

t-SNE는 가까운 사례를 모아 시각적으로 분리된 덩어리를 잘 만들지만 덩어리 사이 거리와 크기는 원래 공간의 전역 관계를 그대로 뜻하지 않아. perplexity와 초기화에 따라 배열이 달라질 수 있어. 군집 후보를 탐색하는 그림으로는 유용하지만 섬 사이가 멀다는 이유만으로 완전히 다른 집단이라고 해석하면 안 돼.

투영 좌표를 운영 특성으로 착각하지 마

UMAP과 t-SNE의 2차원 좌표는 시각화 설정과 현재 자료에 민감해 다시 맞출 때 축의 의미와 배치가 바뀔 수 있어. 이 좌표를 후속 모델의 안정된 특성으로 저장하지 마. 특별히 변환 가능한 UMAP을 운영 표현으로 쓰려면 별도 검증과 버전 고정이 필요하지만, 기본값은 PCA나 목적에 맞게 학습된 임베딩이야.

그림에는 불확실성과 원본을 연결해

색을 목표값이나 시점으로 칠하면 누출과 분포 이동을 탐색할 수 있지만 색이 분리를 만들었다고 착각하지 않게 해. 점을 클릭해 원본 사례를 읽고, 여러 씨앗에서 같은 이웃이 유지되는지 확인해. 2차원에서 겹친다고 고차원에서 같다는 뜻도, 떨어졌다고 실제 경계가 있다는 뜻도 아니야.

Code

설명 분산을 확인하는 압축용 PCA·python
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
import numpy as np

Xs = StandardScaler().fit_transform(X)
pca = PCA(n_components=0.95, svd_solver="full").fit(Xs)
print("components kept:", pca.n_components_)
print("explained variance:", np.cumsum(pca.explained_variance_ratio_)[-1].round(3))
2차원 시각화를 위한 UMAP·python
import umap

reducer = umap.UMAP(n_neighbors=15, min_dist=0.1, random_state=7)
embedding = reducer.fit_transform(Xs)
# embedding.shape == (n, 2) — for plotting only

External links

Exercise

스케일을 맞춘 특성 행렬을 PCA(n_components=0.95)로 줄여. 원본 특성과 PCA 특성에 같은 모델을 학습하고 교차검증 점수, 학습·예측 시간, 결과물 크기를 비교해 압축을 배포할 가치가 있는지 결정해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.