끄적이는 개발노트
260604_강의 정리 (DT와 Ensemble) 본문
728x90
machine learning · tree models
결정 트리와 앙상블 학습
- 결정 트리의 구조와 주요 하이퍼파라미터 정리
- Bagging·Boosting·Voting·Stacking의 개념과 차이
- Random Forest, AdaBoost, Gradient Boosting 비교
1. 결정 트리(Decision Tree) 구조
"질문을 반복해 데이터를 분류하는 나무 구조" — 모든 트리 기반 모델의 기본 단위
- Root Node — 트리의 최상단 시작 노드, 전체 데이터셋을 처음 분할하는 지점
- Parent / Child Node — 분할 기준을 기준으로 상위/하위 관계로 연결된 노드
- Leaf Node — 더 이상 분할되지 않는 말단 노드, 최종 예측값을 가짐
- Depth — 루트 노드에서 리프 노드까지의 거리(층수)
💡 새 개념
불순도 기준 Criterion
- Gini Impurity — 노드에서 무작위로 뽑은 샘플이 잘못 분류될 확률, 기본값
- Entropy — 정보 이론 기반의 불순도 측정, 계산 비용이 다소 높음
- Log Loss — 확률 기반 손실 함수로 측정
Gini가 0이면 해당 노드의 샘플이 모두 같은 클래스 → 완전히 순수한 노드
트리 구조 요약
· Root → Parent/Child 분기 반복 → Leaf에서 최종 예측
· Depth가 깊을수록 복잡한 패턴 학습 가능 → 과적합 위험 증가
· Root → Parent/Child 분기 반복 → Leaf에서 최종 예측
· Depth가 깊을수록 복잡한 패턴 학습 가능 → 과적합 위험 증가
2. 트리의 주요 하이퍼파라미터와 규제
과적합을 막기 위한 트리 성장 제한 파라미터들
| 파라미터 | 설명 | 역할 |
|---|---|---|
| n_estimators | 앙상블에서 사용할 트리 개수 | 많을수록 안정적, 속도 저하 |
| max_depth | 트리의 최대 깊이 제한 | 과적합 방지 |
| max_leaf_nodes | 리프 노드의 최대 개수 | 트리 크기 직접 제한 |
| max_features | 각 노드 분할 시 사용할 특성 최대 수 | 다양성 증가, 과적합 방지 |
| min_samples_split | 노드 분할에 필요한 최소 샘플 수 | 작은 노드 분할 방지 |
| min_samples_leaf | 리프 노드가 가져야 할 최소 샘플 수 | 지나치게 작은 리프 방지 |
| min_weight_fraction_leaf | 가중치 부여 전체 샘플 수 대비 최소 비율 | 불균형 데이터 대응 |
규제 선택 기준
· 트리가 너무 깊어 과적합 발생 →
· 노이즈 샘플로 불필요한 분할 발생 →
· 트리가 너무 깊어 과적합 발생 →
max_depth 또는 max_leaf_nodes로 직접 제한· 노이즈 샘플로 불필요한 분할 발생 →
min_samples_split / min_samples_leaf 증가
3. 앙상블 학습(Ensembling) 개요
"혼자보다 함께가 강하다" — 여러 모델을 결합해 예측 성능을 높이는 전략
- 단일 모델의 편향(Bias) 또는 분산(Variance) 문제를 보완하기 위해 여러 학습기를 결합함
- 결합 방식에 따라 Bagging / Boosting / Voting / Stacking / Blending으로 구분됨
💡 새 개념
부트스트래핑 Bootstrapping
- 원본 데이터에서 복원 추출(중복 허용)로 여러 개의 샘플 데이터셋을 만드는 방법
- 다양한 학습 데이터를 확보해야 할 때 활용됨
100개 데이터에서 복원 추출 → 각기 다른 100개짜리 샘플 10개 생성
OOB 샘플 Out-of-Bag
- 부트스트랩 샘플링 시 특정 트리의 학습에 포함되지 않은 나머지 약 36.8%의 데이터
- 별도 검증 세트 없이 모델 성능 평가에 활용 가능함 → oob_score=True로 활성화
100개 중 복원추출 → 평균적으로 63.2%만 선택 → 나머지 36.8%가 OOB
메타 추정기 Meta-Estimator
- 다른 모델(base model)을 입력받아 그 위에서 동작하는 모델
- Voting, Stacking 등이 해당됨 — base model이 반드시 필요함
VotingClassifier(estimators=[rf, svm, lr]) → 세 모델을 묶어 투표
4. Bagging vs Boosting
목적이 다른 두 가지 앙상블 전략 — 분산 감소 vs 편향 감소
Bagging
Bootstrap Aggregation — 분산(Variance) 줄이기
부트스트랩 샘플로 독립적인 여러 트리를 병렬 학습한 뒤 결과를 평균냄
- 각 트리를 독립적으로(병렬) 학습 → 빠른 속도, n_jobs로 병렬화 가능
- 복원 추출(bootstrapping) + 열(feature) 무작위 선택으로 트리 다양성 확보
- 최종 예측: 분류 → 다수결, 회귀 → 평균
- 개별 트리의 높은 분산을 평균으로 상쇄 → 과적합에 강함
대표 알고리즘 — Random Forest
Boosting
약한 학습기 → 강한 학습기 — 편향(Bias) 줄이기
이전 모델의 실수를 다음 모델이 집중적으로 보완하며 순차 학습
- 트리를 순차적으로 학습 → 이전 모델의 오류를 다음 모델이 집중 학습
- AdaBoost: 틀린 샘플에 더 높은 가중치 부여 → 가중치 기반 오류 보완
- Gradient Boosting: 잔차(오차)를 직접 학습 → 잔차 기반 오류 보완
- 편향이 낮아져 정확도가 높아지나, 과적합 주의 필요
AdaBoost vs Gradient Boosting
· AdaBoost — 틀린 샘플의 가중치를 높여 다음 트리가 집중 학습
· Gradient Boosting — 이전 예측의 잔차(residual)를 다음 트리가 직접 학습
· AdaBoost — 틀린 샘플의 가중치를 높여 다음 트리가 집중 학습
· Gradient Boosting — 이전 예측의 잔차(residual)를 다음 트리가 직접 학습
| 구분 | Random Forest | AdaBoost | Gradient Boosting |
|---|---|---|---|
| 방식 | Bagging | Boosting | Boosting |
| 학습 순서 | 병렬 | 순차 | 순차 |
| 핵심 전략 | 여러 트리 평균 | 틀린 샘플 가중치 증가 | 잔차(오차) 학습 |
| 주요 목표 | 분산 감소 | 편향 감소 | 편향 감소 |
5. Voting · Blending · Stacking
서로 다른 유형의 모델을 결합하는 방법들
Voting
서로 다른 모델의 예측을 투표로 결합
- Hard Voting — 각 모델의 예측 클래스 중 다수결로 최종 예측 결정
- Soft Voting — 각 모델이 출력한 확률값을 평균(또는 가중 평균)하여 최종 예측
- 일반적으로 확률 정보를 활용하는 Soft Voting이 성능이 더 높음
- 메타 추정기(meta-estimator)의 일종 → base model 목록이 반드시 필요함
모델 A 예측
→
모델 B 예측
→
모델 C 예측
→
투표 → 최종 예측
Stacking
베이스 모델의 예측을 새로운 모델로 재학습
1층 모델들의 예측값을 입력 피처로 삼아 2층 메타 모델이 최종 예측
- 교차검증(CV)으로 베이스 모델을 학습 → 각 fold의 예측값을 메타 모델의 학습 데이터로 사용
- 데이터 누수(leakage) 없이 일반화 성능을 극대화할 수 있음
- Blending은 CV 없이 홀드아웃 세트만 사용하는 Stacking의 간소화 버전
Stacking vs Blending
· Stacking — CV로 베이스 모델 학습 → 안정적, 구현 복잡
· Blending — CV 없이 홀드아웃 사용 → 구현 간단, 데이터 효율 낮음
· Stacking — CV로 베이스 모델 학습 → 안정적, 구현 복잡
· Blending — CV 없이 홀드아웃 사용 → 구현 간단, 데이터 효율 낮음
6. 빈도 → 확률 → 확률 보정
트리 모델의 출력값이 신뢰할 수 있는 확률이 되도록 조정하는 과정
- 결정 트리는 빈도(frequency) 기반으로 리프 노드의 클래스 비율을 확률로 출력함
- 하지만 트리 모델의 확률은 과도하게 0 또는 1에 치우치는 경향이 있어 신뢰도가 낮음
- 확률 보정(Calibration)으로 실제 발생 빈도와 예측 확률을 일치시켜 신뢰도 향상
리프 노드 빈도 집계
→
클래스 비율 = 확률
→
Calibration 적용
→
보정된 확률 출력
보정 방법
· Platt Scaling — 로지스틱 회귀로 확률 보정 (출력이 sigmoid 형태일 때 적합)
· Isotonic Regression — 비모수적 방법, 데이터가 충분할 때 더 유연한 보정 가능
· Platt Scaling — 로지스틱 회귀로 확률 보정 (출력이 sigmoid 형태일 때 적합)
· Isotonic Regression — 비모수적 방법, 데이터가 충분할 때 더 유연한 보정 가능
7. 핵심 요약
🌳 Random Forest
Bagging 기반
분산 감소
병렬 학습
OOB 검증 가능
분산 감소
병렬 학습
OOB 검증 가능
⚡ AdaBoost
Boosting 기반
편향 감소
순차 학습
가중치로 오류 보완
편향 감소
순차 학습
가중치로 오류 보완
📈 Gradient Boosting
Boosting 기반
편향 감소
순차 학습
잔차로 오류 보완
편향 감소
순차 학습
잔차로 오류 보완
🗳️ Voting
이종 모델 결합
Hard/Soft 방식
메타 추정기
base model 필요
Hard/Soft 방식
메타 추정기
base model 필요
🔗 Stacking
CV로 베이스 학습
메타 모델 재학습
Blending은 간소화 버전
메타 모델 재학습
Blending은 간소화 버전
앙상블 선택 기준
· 과적합(high variance) 문제 → Bagging (Random Forest)
· 과소적합(high bias) 문제 → Boosting (AdaBoost, GBM)
· 다양한 모델을 이미 보유 → Voting / Stacking
· 과적합(high variance) 문제 → Bagging (Random Forest)
· 과소적합(high bias) 문제 → Boosting (AdaBoost, GBM)
· 다양한 모델을 이미 보유 → Voting / Stacking
Random Forest
AdaBoost
Gradient Boosting
Voting
Stacking
Bootstrapping
OOB Score
Calibration
728x90
'머신러닝' 카테고리의 다른 글
| 260610_강의 정리 (KNN, K-Means) (0) | 2026.06.10 |
|---|---|
| 260609_강의 정리 (나이브 베이즈) (0) | 2026.06.09 |
| 260608_강의 정리 (확률 모델 기초) (0) | 2026.06.08 |
| 260605_강의 정리 (XGBoost) (0) | 2026.06.05 |
| 260602_강의 정리 (scikit-learn) (0) | 2026.06.02 |