앙상블 학습(Ensemble Learning)은 여러 개의 모델을 결합해 단일 모델보다 더 나은 예측 성능을 달성하는 기법이다. 약한 학습기(Weak Learner)를 다수 조합해 강한 학습기를 만든다.
세 가지 핵심 전략
배깅 (Bagging, Bootstrap Aggregating)
훈련 데이터를 무작위 복원 추출(bootstrap)로 여러 서브셋을 만들어 각각 모델을 훈련하고 결과를 평균/투표로 합산한다.
python
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
model = BaggingClassifier(
base_estimator=DecisionTreeClassifier(),
n_estimators=100,
bootstrap=True,
random_state=42
)
부스팅 (Boosting)
이전 모델이 틀린 샘플에 가중치를 높여 순차적으로 모델을 훈련. 오류를 점진적으로 보정한다.
python
from sklearn.ensemble import GradientBoostingClassifier, AdaBoostClassifier
import xgboost as xgb
import lightgbm as lgb
# XGBoost: 가장 널리 쓰이는 부스팅
xgb_model = xgb.XGBClassifier(n_estimators=100, learning_rate=0.1)
# LightGBM: 속도 최적화
lgb_model = lgb.LGBMClassifier(n_estimators=100)
스태킹 (Stacking)
여러 모델의 예측을 메타 모델(Meta-Learner)의 입력으로 사용해 최종 예측.
배깅 vs 부스팅
| 항목 | 배깅 | 부스팅 |
|---|
| 학습 방식 | 병렬 | 순차 |
| 주요 목적 | 분산 감소 | 편향 감소 |
| 과적합 | 적음 | 더 많음 |
| 대표 모델 | Random Forest | XGBoost, LightGBM |
관련 개념
- •랜덤 포레스트 — 배깅의 대표적 구현
- •과적합 — 앙상블로 줄이는 문제
- •경사하강법 — 부스팅의 수학적 기반
- •머신러닝 — 앙상블이 속하는 범주