다양한 머신러닝 기법 — SVM · 결정 트리 · 차원 축소

교재 10장. 마진을 최대화하는 SVM, 질문을 던져 나누는 결정 트리앙상블, 그리고 고차원을 압축하는 PCA.


1. 서포트 벡터 머신 (SVM)

두 클래스를 가르는 경계는 무수히 많습니다. SVM 은 그중 마진(margin) — 가장 가까운 점까지의 거리 — 을 최대로 하는 경계를 고릅니다. 마진이 클수록 일반화가 잘 됩니다.

  • 가중치 벡터 w 는 경계(초평면)의 법선벡터 — 경계에 수직인 방향
  • 마진 경계 위에 놓인 점 = 서포트 벡터. 이 점들만 경계를 결정함
  • 점과 초평면 사이 거리: → 마진 최대화 = 최소화

SVM — 마진 최대화와 법선벡터 w

Ch.10
w
클래스 −
클래스 +
결정 경계 / 법선 w
마진
0.50
마진 폭
0.240
분류 상태
✓ 완전 분리
결정 경계는 . 여기서 가중치 벡터 w 가 곧 경계의 법선벡터입니다. SVM 은 두 클래스를 가르되 마진(가장 가까운 점까지 거리)을 최대로 하는 경계를 찾습니다. 마진 위에 놓인 점이 서포트 벡터(테두리 강조). θ·오프셋을 조절해 마진을 최대화해 보세요.
→ 배경: 법선벡터를 이용한 직선의 방정식

1.1 파이프라인으로 구현

PYTHON
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
 
model = make_pipeline(StandardScaler(), SVC(kernel='rbf', C=1.0, gamma='scale'))
model.fit(X_train, y_train)
  • C: 오분류 허용 정도(클수록 마진 좁고 엄격), gamma: RBF 커널의 영향 범위
  • 파이프라인: 스케일링 → 학습을 하나로 묶어 데이터 누수 방지

1.2 커널 트릭

선형으로 못 가르는 데이터를 고차원으로 매핑하면 선형 분리가 가능해집니다. 실제로 매핑하지 않고 내적만 계산하는 게 커널 트릭.

커널설명
linear선형 경계
poly다항 경계
rbf가우시안. 가장 널리 쓰임. 비선형 경계

2. 결정 트리 (Decision Tree)

스무고개처럼 질문(분기) 을 반복해 데이터를 나눕니다. 각 분기는 불순도가 가장 많이 줄어드는 특성·기준을 고릅니다.

2.1 엔트로피와 정보 이득

엔트로피: 데이터가 얼마나 섞여 있는지(불순도).

  • 한 클래스만 있으면 (순수), 반반 섞이면 (최대 혼란)
  • 정보 이득(Information Gain) = 분기 전 엔트로피 − 분기 후 가중 평균 엔트로피
  • 결정 트리는 정보 이득이 최대가 되는 분기를 선택 (CART 는 지니 불순도 사용)
PYTHON
from sklearn.tree import DecisionTreeClassifier
 
tree = DecisionTreeClassifier(criterion='entropy', max_depth=3)
tree.fit(X_train, y_train)
  • max_depth 를 제한하지 않으면 과적합(잎이 데이터 하나하나에 맞춰짐)

2.2 지니 불순도

엔트로피와 비슷하게 동작하지만 로그가 없어 계산이 빠름 → CART 알고리즘 기본값.


3. 앙상블 (Ensemble)

여러 약한 모델을 모아 강한 모델을 만듭니다. "집단 지성".

기법방식
배깅 / 랜덤 포레스트데이터를 무작위 샘플링해 여러 트리 학습 → 투표/평균
부스팅이전 모델의 오류를 다음 모델이 보완 (순차적)
보팅서로 다른 종류 모델의 예측을 종합
PYTHON
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators=100, random_state=0)
  • 랜덤 포레스트: 단일 트리보다 과적합에 강하고 성능이 안정적

4. 차원 축소와 PCA

4.1 차원의 저주

특성(차원)이 늘수록 데이터가 공간에서 희박해져 거리·밀도가 무의미해지고, 필요한 데이터량이 지수적으로 증가합니다.

4.2 주성분 분석 (PCA)

데이터의 분산이 최대가 되는 축(주성분) 들을 찾아, 분산을 많이 보존하는 소수의 축만 남겨 차원을 줄입니다.

  • 제1주성분 = 데이터가 가장 길게 퍼진 방향 = 공분산행렬의 최대 고유값에 대응하는 고유벡터
  • 제2주성분 = 제1주성분에 직교하면서 남은 분산이 최대인 방향
  • 4차원 붓꽃 데이터 → 2차원으로 압축해도 품종이 잘 구분됨

PCA — 분산이 최대가 되는 축 찾기

Ch.10
분산 = 1.118 / 최대 1.351
투영 분산
1.118
최대 가능 분산
1.351
제1주성분 각도
25.6°
파란 점을 보라색 축에 수직으로 투영한 게 보라색 점입니다. 축을 돌리며 투영된 점들의 분산이 최대가 되는 방향을 찾아보세요 — 그게 바로 제1주성분(PC1)이고, 데이터가 가장 길게 퍼진 방향입니다. 수학적으로는 공분산행렬의 최대 고유값에 대응하는 고유벡터. 차원 축소 = 분산을 가장 많이 보존하는 축만 남기는 것.
→ 글 정리: 주성분 분석(PCA)의 기하학적 의미
PYTHON
from sklearn.decomposition import PCA
 
pca = PCA(n_components=2)
X_2d = pca.fit_transform(X)        # 4D → 2D
pca.explained_variance_ratio_       # 각 주성분이 설명하는 분산 비율

PCA 전에는 반드시 스케일링 — 분산 기준이라 스케일이 큰 특성이 주성분을 지배합니다.


📝 Checkpoint

Quiz

SVM · 트리 · PCA Checkpoint

Q 1 / 7

SVM 이 찾는 최적의 결정 경계는?


🔗 이어서