CertNote/ 출퇴근 학습 노트
로드맵
KOEN
CLF-C02 · FoundationalCloud Practitioner - Foundational
DVA-C02 · AssociateDeveloper - Associate
SAA-C03 · AssociateSolutions Architect - Associate
SOA-C02 · AssociateCloudOps Engineer - Associate
SAP-C02 · ProfessionalSolutions Architect - Professional
DOP-C02 · ProfessionalDevOps Engineer - Professional
SCS-C03 · SpecialtySecurity - Specialty
MLA-C01 · AssociateMachine Learning Engineer - Associate
AIF-C01 · FoundationalAI Practitioner - Foundational
DEA-C01 · AssociateData Engineer - Associate
MLS-C01 · SpecialtyMachine Learning - Specialty
  • Week 1
    • 1.ML 수명주기(ML Lifecycle): 비즈니스 문제 정의부터 A/B 테스트까지
    • 2.ML용 데이터 저장소: S3·EFS·FSx for Lustre·데이터 포맷
    • 3.데이터 수집: Kinesis·Glue·배치 vs 스트리밍
    • 4.데이터 레이블링: SageMaker Ground Truth·액티브 러닝(Active Learning)·레이블 품질
    • 5.1주차 종합 복습: ML 개요와 데이터 엔지니어링 1
  • Week 2
  • Week 3
  • Week 4
    • 1.차원 축소: PCA, t-SNE, 차원의 저주
    • 2.특성 선택(Feature Selection): 필터·래퍼·임베디드 방식·중요도·다중공선성
    • 3.데이터 시각화: 분포·상관관계·QuickSight·인사이트 도출
    • 4.클래스 불균형 처리: 오버샘플링·언더샘플링·SMOTE·클래스 가중치·평가
    • 5.4주차 종합 복습: 차원 축소·특성 선택·시각화·불균형
  • Week 5
  • Week 6
  • Week 7
  • Week 8
  • Week 9
  • Week 10
  • Week 11
  • Week 12
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← MLS-C01/Week 4/Day 1

기준: MLS-C01 시험 가이드·오류 제보

MLS-C01· AssociateWeek 4 · Day 1읽기 약 12분
핵심 정리
  • 차원의 저주: 차원이 늘면 데이터가 희박해지고 점 사이 거리가 동질화돼 KNN·K-means 같은 거리 기반 알고리즘이 무너진다.
  • PCA는 선형·비지도 기법으로 분산을 최대한 보존하는 직교 축을 찾는다. 적용 전 표준화 필수.
  • 주성분 개수 k는 누적 설명 분산(예: n_components=0.95)이나 스크리 플롯의 팔꿈치로 고른다.
  • t-SNE는 비선형·국소 구조 보존 기법으로 시각화 전용이다. 새 데이터 transform 불가, 군집 간 거리에 의미 없음.
  • 대규모 데이터는 SageMaker 내장 PCA를 쓰고, 특성 수가 매우 많으면 algorithm_mode=randomized를 고른다.

Day 1 - 차원 축소: PCA, t-SNE, 차원의 저주

차원의 저주

Week 4는 탐색적 데이터 분석(EDA)의 두 번째 축인 고차원 데이터 다루기로 들어간다. 특성(feature)이 많아질수록 모델이 더 많은 정보를 갖는 것처럼 보이지만, 차원이 늘면 같은 표본 수로 채워야 할 공간의 부피가 기하급수적으로 커진다. 그 결과 데이터 포인트들이 서로 멀어지고 거리 기반 측정의 변별력이 사라진다.

증상설명
데이터 희박화차원이 늘수록 동일 밀도를 위해 필요한 표본이 지수적으로 증가
거리 동질화모든 점 쌍의 거리가 비슷해져 최근접/최원접 구분이 무의미
과적합 위험특성 수가 표본 수에 근접하면 모델이 노이즈를 외움
계산 비용차원에 비례/제곱해 학습·추론 비용 증가
[저차원 (2D)]                    [고차원 (d ≫ 1)]
    ●                              ●    ●    ●
       ● ← 가깝다                    ●    ●    ●
              ● ← 멀다             ●    ●    ●
                                   모든 쌍의 거리가 비슷
  최근접 / 최원접 구분 가능          d_max / d_min → 1
  → KNN·K-means 정상 동작            → 이웃이라는 개념이 무너짐

알고리즘별 고차원 취약도

알고리즘취약도이유
KNN매우 높음유클리드 거리로 이웃을 판정
K-means매우 높음중심까지의 거리로 군집을 할당
SVM (RBF 커널)높음커널 값이 샘플 간 거리에 의존
선형/로지스틱 회귀중간특성 수가 표본 수에 근접하면 계수가 불안정해지고 과적합
Decision Tree / Random Forest중간~낮음한 번에 한 특성만 보지만 무관 특성이 많으면 분할 품질 저하
나이브 베이즈낮음특성별 조건부 확률을 곱하므로 거리 개념을 쓰지 않음

KNN, K-means처럼 유클리드 거리에 의존하는 알고리즘은 고차원에서 특히 취약하다.

고차원 단위 초입방체에서 두 무작위 점 사이 거리의 최댓값과 최솟값 비율이 1에 수렴한다는 것이 차원의 저주의 수학적 핵심이다. 즉 "가장 가까운 이웃"과 "가장 먼 이웃"이 사실상 같아진다. 이 때문에 차원 축소는 단순히 계산을 줄이는 게 아니라, 거리 기반 학습이 작동하는 공간을 복원하는 의미가 있다.

PCA: 주성분 분석

PCA는 데이터의 분산을 최대한 보존하는 직교 축(주성분)을 찾아 그 축으로 데이터를 사영(projection)하는 선형 차원 축소 기법이다.

  • 첫 번째 주성분(PC1)은 분산이 가장 큰 방향
  • 두 번째 주성분(PC2)은 PC1과 직교하면서 남은 분산이 가장 큰 방향
  • 상위 k개 주성분만 남겨 차원을 d → k로 줄인다

핵심 전제: PCA 전에는 반드시 표준화(standardization) 한다. 분산 기반이므로 스케일이 큰 변수가 주성분을 지배하기 때문이다.

PCA 적용 전 전처리 요구

항목요구이유
스케일표준화 필수분산 기반이라 스케일이 큰 변수가 주성분을 독점
결측치사전 대치 필요공분산 계산에 결측값을 넣을 수 없다
범주형인코딩 필요(원핫 등)수치 입력만 받는다
타깃쓰지 않음PCA는 비지도 변환이다
fit 범위학습셋에서만 fit테스트 통계로 fit하면 누수
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
 
X_scaled = StandardScaler().fit_transform(X_train)
 
pca = PCA(n_components=0.95)   # 분산 95%를 설명하는 최소 주성분 수
X_reduced = pca.fit_transform(X_scaled)
 
print("선택된 주성분 수:", pca.n_components_)
print("설명 분산 비율:", pca.explained_variance_ratio_.cumsum())

n_components에 정수 대신 0~1 비율을 주면 "누적 설명 분산이 그 비율을 넘는 최소 주성분 수"를 자동 선택한다.

주성분 개수 k 고르는 법

방법하는 일판단 기준
목표 설명 분산누적 설명 분산이 목표치를 넘는 최소 kn_components=0.95처럼 비율 직접 지정
스크리 플롯 팔꿈치고유값(설명 분산)이 급감하는 지점곡선이 꺾이는 elbow
후속 모델 성능k를 바꿔가며 교차검증 점수 비교비용은 크지만 가장 실용적

적절한 k는 스크리 플롯(scree plot)이나 누적 설명 분산 곡선의 팔꿈치(elbow)로 고른다.

PCA는 데이터 공분산 행렬의 고유분해(eigendecomposition)와 동치다. 고유벡터가 주성분 방향, 고유값이 그 방향의 분산이다. 따라서 "설명 분산 비율"은 곧 각 고유값을 전체 고유값 합으로 나눈 값이다. 특이값 분해(SVD)로도 같은 결과를 얻으며, scikit-learn과 SageMaker는 대규모 데이터에서 randomized SVD를 사용해 효율을 높인다.

⚠️ 함정: PCA는 타깃을 보지 않는 비지도 변환이다. "분산이 큰 방향"이 항상 "예측에 유용한 방향"은 아니다. 분산이 작은 축에 결정적 신호가 숨어 있으면 PCA가 그것을 버릴 수 있다.

⚠️ 함정: 주성분은 원본 특성들의 선형 결합이라 물리적 의미가 사라진다. "어떤 변수가 예측에 쓰였는지 설명해야 한다"는 지문이 나오면 PCA가 아니라 특성 선택이 답이다.

SageMaker 내장 PCA 알고리즘

대규모 데이터에서는 메모리에 다 올릴 수 없으므로 SageMaker 내장 PCA 알고리즘을 쓴다.

모드사용 시점
regular특성 수와 관측치가 중간 규모
randomized특성 수가 매우 많을 때(근사 SVD로 확장성 확보)
  • 입력은 recordIO-protobuf 또는 CSV, 학습은 분산 처리 지원
  • 출력된 주성분으로 후속 모델(XGBoost 등)의 입력 차원을 축소
하이퍼파라미터역할
feature_dim입력 특성 수
num_components남길 주성분 수
algorithm_moderegular / randomized
subtract_mean평균 제거 여부
from sagemaker import image_uris
 
container = image_uris.retrieve("pca", region="ap-northeast-2")
# Estimator 하이퍼파라미터 예시
hyperparameters = {
    "feature_dim": 784,
    "num_components": 50,
    "algorithm_mode": "randomized",
    "subtract_mean": "true",
}

AWS 서비스 매핑

상황서비스·기능이유
메모리를 넘는 대규모 행렬의 주성분 추출SageMaker 내장 PCA분산 학습, recordIO-protobuf/CSV 입력 지원
특성 수가 매우 많고 확장성이 우선내장 PCA + algorithm_mode=randomized근사 SVD로 메모리·시간 절감
노트북에서 소규모 데이터를 탐색적으로 축소SageMaker 노트북 + scikit-learn PCA스크리 플롯 등 자유로운 실험
축소된 특성으로 후속 분류·회귀SageMaker XGBoost 등 내장 알고리즘PCA 출력을 그대로 학습 입력으로 사용

t-SNE: 시각화 전용 비선형 기법

t-SNE(t-distributed Stochastic Neighbor Embedding)는 고차원에서의 이웃 관계(국소 구조)를 2~3차원에 보존하도록 매핑하는 비선형 기법이다.

항목PCAt-SNE
선형/비선형선형비선형
목적분산 보존, 차원 축소군집 시각화
거리 해석전역 구조 보존국소 구조만 신뢰
새 데이터 변환transform 가능불가(매번 재학습)
결정성결정적무작위(seed 의존)

t-SNE는 군집을 눈으로 보기엔 훌륭하지만 모델 입력 전처리로는 쓰지 않는다. 군집 간 거리나 클러스터 크기에 물리적 의미가 없고, 새 샘플을 같은 공간에 사영할 수 없기 때문이다.

from sklearn.manifold import TSNE
 
tsne = TSNE(n_components=2, perplexity=30, random_state=42)
X_embedded = tsne.fit_transform(X_scaled)   # 시각화용 2D 좌표

perplexity는 고려할 이웃 수의 균형을 조절하며, 보통 5~50 범위에서 조정한다.

t-SNE는 고차원 거리들을 조건부 확률 분포로 바꾸고, 저차원에서 무거운 꼬리를 가진 t-분포로 같은 관계를 재현하도록 KL 발산을 최소화한다. t-분포의 무거운 꼬리가 "혼잡 문제(crowding problem)"를 완화해 군집이 뭉치지 않고 퍼지게 한다. 그러나 이 과정 때문에 클러스터 사이의 빈 공간 크기는 의미가 없다 — 시험에서 "t-SNE 결과의 클러스터 거리로 유사도를 판단하라"는 보기는 함정이다.

t-SNE는 fit_transform만 있고 학습된 매핑을 저장해 새 샘플에 적용하는 transform이 없다. "운영 중 들어오는 신규 데이터를 같은 임베딩 공간에 넣는다"는 보기는 오답이다.

차원 축소 기법 선택표

기법선형/비선형새 데이터 변환주 용도언제 쓰면 안 되나
PCA선형가능(transform)모델 전처리, 노이즈 제거, 다중공선성 완화원본 변수 해석이 필요할 때, 관계가 강한 비선형일 때
t-SNE비선형불가(재학습)2~3D 군집 시각화모델 입력, 신규 데이터 사영, 군집 간 거리 해석
오토인코더비선형가능(인코더 재사용)비선형 압축, 이상 탐지데이터·튜닝 비용을 감당 못 할 때, 축 해석이 필요할 때
특성 선택 (Day 2)—가능(원본 컬럼 유지)해석 가능성이 필요한 축소특성 간 상호작용이 성능의 핵심일 때(필터 방식 한정)

축소할까, 선택할까

차원을 줄여야 한다
├─ 결과를 변수 단위로 설명해야 하나? (규제 산업, 감사 대응)
│    ├─ 예   → 특성 선택 (원본 컬럼을 그대로 남긴다)
│    └─ 아니오 ↓
├─ 목적이 "눈으로 군집이 있는지 확인"인가?
│    ├─ 예   → t-SNE (2~3D, 시각화 전용. 모델 입력 금지)
│    └─ 아니오 ↓
├─ 관계가 대체로 선형인가?
│    ├─ 예   → PCA (표준화 → 누적 설명 분산으로 k 선택)
│    └─ 아니오 → 오토인코더 등 비선형 압축
└─ 데이터가 단일 인스턴스 메모리를 넘는가?
     └─ 예 → SageMaker 내장 PCA (특성 수 많으면 randomized)

고차원 대응 전처리 기법 정리

차원 축소는 고차원 문제의 해법 중 하나일 뿐이다. 시험에서는 "차원을 줄여라"가 아니라 "이 상황에 무엇이 맞는가"로 묻는다.

기법효과언제 쓰나주의
표준화(Z-score)모든 특성을 같은 스케일로PCA·KNN·SVM·신경망 앞학습셋으로만 fit
PCA상관된 축을 직교 축으로 압축특성이 많고 서로 상관 있음해석 불가, 표준화 선행
특성 선택무관·중복 컬럼 제거해석이 필요, 특성 수가 관리 가능상호작용을 놓칠 수 있음
상수·준상수 컬럼 제거정보 없는 축 제거어느 상황에서나 첫 단계소수 클래스에만 값이 있는 컬럼 주의
정규화 항(L1/L2)계수를 줄이거나 0으로특성 수 ≳ 표본 수스케일링 선행 필요
임베딩고카디널리티 범주를 밀집 벡터로딥러닝, 초고카디널리티학습 데이터와 네트워크 필요
[고차원 원시 데이터]
        │
   ① 분할 (train / test)  ← 여기서부터 모든 fit은 학습셋만
        │
   ② 결측 대치 · 인코딩
        │
   ③ 표준화(StandardScaler)
        │
   ④ ┌─ 해석 필요 ─→ 특성 선택 (원본 컬럼 유지)
     └─ 해석 불필요 ─→ PCA (n_components=0.95)
        │
   ⑤ 모델 학습 (XGBoost / 선형 / 신경망 …)
        │
   ⑥ 테스트셋에는 ②~④에서 학습한 변환을 transform만 적용

지문 단서 → 정답 매핑

지문 단서고를 답이유
"특성이 784개이고 확장성이 중요하다"SageMaker 내장 PCA, algorithm_mode=randomized근사 SVD로 고차원에서 확장성 확보
"PCA 적용 전에 무엇을 하는가"표준화(스케일링)분산 기반이라 스케일이 결과를 지배
"군집이 존재하는지 눈으로 보고 싶다"t-SNE 2D 임베딩국소 이웃 구조를 시각적으로 드러냄
"t-SNE 좌표를 분류기 입력으로 쓴다"오답 보기신규 데이터 변환 불가, 거리에 의미 없음
"어떤 변수가 예측에 쓰였는지 설명해야 한다"특성 선택원본 특성을 유지해 해석 가능
"차원을 늘릴수록 KNN 정확도가 떨어진다"차원의 저주 → 차원 축소거리 동질화로 이웃 판정이 무의미해짐
"주성분 몇 개를 남길지 정해야 한다"누적 설명 분산 / 스크리 플롯 팔꿈치분산 구조에 근거한 표준 방법

다음 글에서는 원본 특성을 그대로 남기면서 차원을 줄이는 특성 선택(feature selection)과 다중공선성을 다룬다.

📖 용어

  • 차원의 저주(curse of dimensionality) : 차원이 늘수록 데이터가 희박해지고 거리 변별력이 사라져 학습이 어려워지는 현상.
  • 희박화(sparsity) : 같은 표본 수로 훨씬 넓은 공간을 채워야 해서 데이터가 듬성듬성해지는 것.
  • 주성분(principal component) : 데이터의 분산이 가장 큰 방향을 순서대로 잡은 새 좌표축. 서로 직교한다.
  • 사영(projection) : 원본 데이터를 새 축 위로 "그림자 내리듯" 옮겨 좌표를 다시 매기는 것.
  • 설명 분산 비율(explained variance ratio) : 각 주성분이 전체 분산 중 몇 %를 담고 있는지 나타내는 값.
  • 스크리 플롯(scree plot) : 주성분 번호를 x축, 설명 분산을 y축으로 그린 그래프. 꺾이는 지점(elbow)에서 k를 고른다.
  • 고유분해 / SVD : 공분산 행렬에서 주성분 방향(고유벡터)과 그 분산(고유값)을 뽑아내는 선형대수 연산. SVD는 같은 결과를 더 안정적으로 구하는 방법이다.
  • 국소 구조 / 전역 구조 : 가까운 이웃들끼리의 관계 / 데이터 전체의 큰 배치. t-SNE는 앞쪽, PCA는 뒤쪽을 잘 보존한다.
  • perplexity : t-SNE에서 "이웃을 몇 개까지 볼 것인가"를 조절하는 값. 보통 5~50 사이로 둔다.
  • recordIO-protobuf : SageMaker 내장 알고리즘이 선호하는 이진 입력 포맷. CSV보다 대용량 처리에 효율적이다.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

784차원 이미지 데이터를 SageMaker로 차원 축소해 후속 분류 모델의 입력으로 쓰려 한다. 특성 수가 많아 확장성이 중요하다. 가장 적절한 선택은?

문제 2

PCA를 적용하기 전에 반드시 해야 하는 전처리는?

문제 3

t-SNE에 대한 설명으로 옳지 않은 것은?

문제 4

PCA에서 적절한 주성분 개수 k를 선택하는 방법으로 가장 적절한 것은?

문제 5

차원의 저주가 가장 직접적으로 악화시키는 알고리즘 유형은?

이전3주차 종합 복습: 데이터 정제와 특성 공학Week 3 · Day 5다음 특성 선택(Feature Selection): 필터·래퍼·임베디드 방식·중요도·다중공선성Week 4 · Day 2

참고 공식 자료

  • MLS-C01 공식 시험 안내(새 탭에서 열림)
  • Amazon SageMaker AI 공식 문서(새 탭에서 열림)

이 페이지

  • 차원의 저주
  • 알고리즘별 고차원 취약도
  • PCA: 주성분 분석
  • PCA 적용 전 전처리 요구
  • 주성분 개수 k 고르는 법
  • SageMaker 내장 PCA 알고리즘
  • AWS 서비스 매핑
  • t-SNE: 시각화 전용 비선형 기법
  • 차원 축소 기법 선택표
  • 축소할까, 선택할까
  • 고차원 대응 전처리 기법 정리
  • 지문 단서 → 정답 매핑
  • 용어
  • 연습 문제