머신러닝에서도 마찬가지다. 하나의 강력한 모델보다 여러 모델을 결합하는 앙상블(Ensemble)이 대부분의 경우 더 높은 성능을 낸다.
Kaggle 같은 데이터 분석 경진대회에서 상위권을 차지하는 솔루션은 거의 항상 앙상블을 사용한다.
이번 글에서는 배깅, 랜덤 포레스트, 부스팅, 스태킹의 원리와 차이를 정리한다.
1. 앙상블이란? — 왜 여러 모델을 합치는가
단일 모델은 두 가지 오류 원인을 동시에 최소화하기 어렵다.
모델이 너무 단순할 때 발생.
→ 과소적합의 원인
모델이 너무 복잡하거나 데이터에 과하게 맞춰질 때 발생.
→ 과적합의 원인
앙상블은 이 두 문제를 전략적으로 해결한다.
- 배깅(Bagging): 여러 모델을 병렬로 학습 → 분산(Variance)을 줄인다
- 부스팅(Boosting): 모델을 순차적으로 개선 → 편의(Bias)를 줄인다
- 스태킹(Stacking): 여러 모델의 출력을 메타 모델로 결합 → 둘 다 줄인다
앙상블이 효과적이려면 각 모델이 서로 다른 오류를 만들어야 한다.
모든 모델이 같은 실수를 하면 결합해도 그 실수가 그대로 남는다.
모델들이 서로 다른 실수를 하면 결합 시 실수들이 상쇄되어 더 나은 예측이 나온다.
→ 앙상블은 다양한 모델을 만드는 것이 핵심이다.
2. 배깅 (Bagging) — Bootstrap Aggregating
개념
배깅은 부트스트랩 샘플링(Bootstrap Sampling)으로 여러 데이터셋을 만들고, 각각에 독립적으로 모델을 학습시킨 뒤, 결과를 합치는(Aggregating) 방법이다.

부트스트랩 샘플링이란?
원본 데이터 n개에서 복원 추출로 n개를 뽑는 것이다. 복원 추출이므로 같은 데이터가 여러 번 선택될 수도 있고, 선택되지 않을 수도 있다. 통계적으로 부트스트랩 샘플에 포함되지 않는 데이터는 약 36.8%다. 이 나머지 데이터를 OOB(Out-of-Bag) 샘플이라 하며, 자체 검증에 활용한다.
각 모델은 부트스트랩 샘플에 없던 OOB 데이터로 자체 검증을 할 수 있다.
모든 모델의 OOB 오류를 평균한 것이 OOB 오류율이다.
→ 별도의 교차 검증 없이도 모델 성능을 추정할 수 있다는 큰 장점이다.
배깅의 결합 방식
- 분류: 각 모델의 예측 클래스를 다수결로 결정 (Hard Voting)
- 분류(확률 기반): 각 모델의 예측 확률을 평균 후 가장 높은 클래스 선택 (Soft Voting)
- 회귀: 각 모델의 예측값을 단순 평균
3. 랜덤 포레스트 (Random Forest)
개념
랜덤 포레스트는 배깅의 확장이다. 배깅처럼 부트스트랩 샘플로 여러 의사결정나무를 학습하되, 각 분할 시 무작위로 선택한 일부 특성만 고려한다는 점이 핵심 차이다.
각 분할 시 모든 특성 고려
→ 데이터만 다르고 모델 구조는 비슷할 수 있음
각 분할 시 √p개 (분류) 또는 p/3개 (회귀) 특성만 고려
→ 트리들이 서로 더 다양해져 상관관계 감소
배깅에서 매우 중요한 특성 하나가 있다고 하자. 모든 트리가 이 특성을 먼저 사용하게 된다.
결과적으로 트리들이 서로 비슷해지고 (상관 관계가 높아짐), 앙상블 효과가 줄어든다.
랜덤 포레스트는 특성도 무작위로 선택해서 트리 사이의 상관관계를 낮추고 다양성을 높인다.
→ 이것이 단순 배깅보다 랜덤 포레스트가 대부분 더 성능이 좋은 이유다.
주요 하이퍼파라미터
- n_estimators: 트리 수. 많을수록 좋지만 계산 비용 증가. 보통 100~500
- max_features: 분할 시 고려할 특성 수. 분류: √p, 회귀: p/3 기본값
- max_depth: 각 트리의 최대 깊이. 기본값은 제한 없음
- min_samples_leaf: 리프 노드의 최소 샘플 수. 과적합 방지
- oob_score=True: OOB 샘플로 자체 검증 수행
고객의 이탈 여부(이탈/유지)를 10개의 트리로 예측하는 경우
트리 6: 이탈 트리 7: 유지 트리 8: 이탈 트리 9: 이탈 트리10: 이탈
→ 최종 예측: 이탈 (확률 70%)
의사결정나무처럼 랜덤 포레스트도 특성 중요도를 계산한다.
각 트리에서 특성별 불순도 감소량을 합산하고 전체 트리에서 평균 낸다.
→ 단일 트리보다 안정적인 특성 중요도를 얻을 수 있다.
4. 부스팅 (Boosting) — 순차적 오류 개선
개념
부스팅은 배깅과 달리 모델을 순차적으로 학습한다. 이전 모델이 틀린 데이터에 더 큰 가중치를 두고 다음 모델을 학습시켜, 점진적으로 오류를 줄여나간다. 편의(Bias)를 줄이는 데 특화되어 있다.

주요 부스팅 알고리즘
① AdaBoost (Adaptive Boosting)
가장 초기의 부스팅 알고리즘이다. 이전 모델이 틀린 샘플의 가중치를 높이고, 맞힌 샘플의 가중치를 낮춘다. 각 모델의 성능에 따라 최종 예측에 기여하는 가중치도 달라진다.
약한 학습기: 주로 깊이 1인 결정 트리(Decision Stump) 사용
② 그래디언트 부스팅 (Gradient Boosting)
현재 가장 널리 사용되는 부스팅 방식이다. 이전 모델의 예측 오류(잔차, Residual)를 다음 모델이 학습하는 방식으로 작동한다. 경사 하강법(Gradient Descent)을 트리 학습에 적용한 것으로 이해하면 된다.
η (학습률): 각 트리의 기여도. 작을수록 과적합 방지 but 트리 수 증가 필요
모델 1 예측: 1,200만원 → 잔차 = +300만원
모델 2: 잔차 +300만원을 학습 → 280만원 예측 → 누적: 1,480만원
모델 3: 잔차 +20만원을 학습 → 18만원 예측 → 누적: 1,498만원
...
→ 각 단계마다 남은 오류를 줄여나가 최종 예측이 실제에 수렴
③ XGBoost / LightGBM / CatBoost
그래디언트 부스팅을 더 빠르고 강력하게 개선한 구현체들이다.
| 알고리즘 | 특징 | 장점 | 단점 |
|---|---|---|---|
| XGBoost | 정규화 추가, 병렬 처리 | 과적합 방지 강력, 안정적 | 메모리 사용량 큼 |
| LightGBM | 리프 중심 트리 성장, GOSS/EFB | 매우 빠름, 대용량에 강함 | 소규모 데이터 과적합 주의 |
| CatBoost | 범주형 특성 자동 처리 | 범주형 많을 때 전처리 최소화 | 학습 속도가 상대적으로 느림 |
XGBoost: 트리를 깊이 우선(Level-wise)으로 성장 → 균형 잡힌 트리
LightGBM: 잎 우선(Leaf-wise)으로 성장 → 손실이 가장 큰 리프를 우선 분할
→ Leaf-wise는 같은 수의 분할로 더 낮은 손실을 달성하지만 과적합 주의 (max_depth 제한 권장)
5. 보팅 (Voting) — 다양한 모델의 결합
서로 다른 종류의 모델(의사결정나무, 로지스틱 회귀, SVM 등)을 함께 사용해서 예측을 결합하는 방법이다. 배깅과 달리 같은 알고리즘을 반복하지 않는다.
예) 모델 A: 스팸, 모델 B: 정상, 모델 C: 스팸
→ 스팸 2표 vs 정상 1표 → 스팸
예) 모델 A: 스팸 0.8, 모델 B: 스팸 0.4, 모델 C: 스팸 0.7
→ 평균 0.633 > 0.5 → 스팸
(일반적으로 하드 보팅보다 성능이 좋다)
6. 스태킹 (Stacking) — 모델이 모델을 학습
개념
스태킹은 여러 1차 모델(Base Models)의 예측 결과를 새로운 특성으로 삼아, 메타 모델(Meta Model)이 최종 예측을 학습하는 방법이다. 모델이 모델을 학습하는 2단계 구조다.

스태킹의 핵심 주의사항 — 데이터 누출 방지
1차 모델을 학습 데이터 전체로 학습한 후, 같은 데이터로 메타 특성을 만들면 데이터 누출(Data Leakage)이 발생해 과적합이 심해진다. 이를 방지하기 위해 교차 검증 방식으로 메타 특성을 생성한다.
Fold 2: 나머지 4개 폴드로 모델 A 학습 → 폴드 2 데이터 예측값 생성
...반복...
→ 전체 학습 데이터에 대한 모델 A의 OOF(Out-of-Fold) 예측값 완성
동일하게 모델 B, C의 OOF 예측값 생성
→ [ŷA, ŷB, ŷC]를 새 특성으로 메타 모델 학습
보팅/배깅: 모든 모델에 동일한 가중치(또는 사전 정의 가중치)
스태킹: 메타 모델이 "어느 상황에서 어느 모델을 더 믿어야 하는가"를 데이터로 학습
→ 각 모델의 강점을 자동으로 학습해서 최적으로 결합한다.
단, 구현이 복잡하고 학습 시간이 길다는 단점이 있다.
7. 배깅 vs 부스팅 vs 스태킹 종합 비교
| 구분 | 배깅 | 부스팅 | 스태킹 |
|---|---|---|---|
| 학습 방식 | 병렬 | 순차 | 2단계 |
| 주요 목적 | 분산(Variance) 감소 | 편의(Bias) 감소 | 둘 다 |
| 기본 모델 | 같은 알고리즘 반복 | 같은 알고리즘 반복 | 서로 다른 알고리즘 |
| 과적합 위험 | 낮음 | 높음(학습률 조절 필요) | 데이터 누출 주의 |
| 계산 속도 | 빠름(병렬) | 느림(순차) | 매우 느림 |
| 대표 알고리즘 | 랜덤 포레스트 | XGBoost, LightGBM | Stacking Ensemble |
| 노이즈 내성 | 강함 | 약함(노이즈에 민감) | 중간 |
• 빠른 결과가 필요할 때: 랜덤 포레스트 (튜닝이 적고 안정적)
• 높은 성능이 최우선일 때: LightGBM 또는 XGBoost (Kaggle 표준)
• 범주형 특성이 많을 때: CatBoost
• 최고 성능을 원할 때: 스태킹 (여러 모델 결합 + 메타 모델)
• 해석이 중요할 때: 랜덤 포레스트 (특성 중요도 직관적)
→ 일반적으로 XGBoost/LightGBM + 교차 검증 + 스태킹이 경진대회의 황금 조합이다.
📌 핵심 정리
- 앙상블: 여러 모델을 결합해 단일 모델보다 나은 성능. 다양성이 핵심
- 배깅: 부트스트랩 샘플링 + 병렬 학습 + 다수결/평균. 분산 감소
- OOB: 부트스트랩에서 제외된 ~36.8% 데이터. 별도 검증 없이 성능 추정 가능
- 랜덤 포레스트: 배깅 + 특성 무작위 선택. 트리 다양성 극대화
- 부스팅: 순차 학습 + 이전 오류에 집중. 편의 감소
- AdaBoost: 틀린 샘플 가중치 증가. 약한 학습기 결합
- 그래디언트 부스팅: 잔차를 다음 트리가 학습. 경사 하강법 응용
- XGBoost/LightGBM/CatBoost: 그래디언트 부스팅의 고성능 구현체
- 보팅: 다른 알고리즘 모델 결합. 소프트 보팅 > 하드 보팅
- 스태킹: 1차 모델 예측 → 메타 모델 학습. 가장 강력하지만 복잡
- 스태킹 주의: OOF 예측으로 메타 특성 생성 (데이터 누출 방지)
'수학&통계학' 카테고리의 다른 글
| 인공신경망 모형(ANN) (2) : 신경망 모형 분류 (0) | 2026.05.14 |
|---|---|
| 인공신경망 모형(ANN) (1) : 뉴런, 층, 활성화 함수 (0) | 2026.05.14 |
| 의사결정나무 (0) | 2026.05.14 |
| K-NN (0) | 2026.05.14 |
| 서포트 벡터 머신 (0) | 2026.05.14 |