오늘 정리 들어가기에 앞서 먼저
Ensemble 모델이란?
여러 개의 약한 학습기(Weak Learners) 를 결합하여
단일 모델보다 더 안정적이고 일반화 성능이 높은 예측 모델을 만드는 방법
이때 핵심은 단순한 평균이 아니라,
- 서로 다른 오류 패턴을 가진 모델들의 다양성(Diversity) 을 확보하고
- 각 모델의 강점을 집단 지성처럼 결합하는 데 있다.
앙상블 학습은 본질적으로 편향–분산 트레이드오프(Bias–Variance Tradeoff)를 개선하기 위한 전략이며,
크게 다음 두 계열로 나뉜다.
- 배깅(Bagging): 분산 감소 중심
- 부스팅(Boosting): 편향 감소 중심
그럼 더 자세하게 각 모델들에 대해 알아보자.
1. 배깅(Bagging)
Variance(분산)를 줄이는 데 집중하는 앙상블 전략
훈련 데이터에서 복원 랜덤 샘플링(Bootstrap)을 통해 여러 서브셋을 만들고,
모델들을 독립적으로 병렬 학습시켜 결과를 집계(Aggregating)하는 방식이다.
1.1. 랜덤 포레스트(Random Forest)
배깅 + 무작위성(Randomness)을 결합한 대표적인 앙상블 모델
1.1.1. 작동 원리
- Step 1. 부트스트랩 샘플링 (Bootstrap Sampling)
- 원본 데이터에서 중복 허용 랜덤 샘플링
(행(데이터 샘플링)과 열(특성 무작위 선택) 모두에 랜덤 요소를 부여)
- 단순히 무작위 선택을 하는 것이 아니라, 이를 통해 트리들 간의 상관관계를 낮춰
앙상블의 다양성을 극대화(Decorrelation)
- Step 2. 무작위 특성 선택 (Random Feature Selection)
- 노드 분할 시 전체 특성 중 일부만 랜덤 선택
- 트리 간 상관관계 감소 → 분산 감소
- Step 3. 결과 결합
- 분류: 다수결(Hard Voting/Soft Voting)
- 회귀: 평균(mean)
1.1.2. 편향–분산 관점
1.1.3. 특징 요약
1.2. ExtraTrees(Extremely Randomized Trees)
Random Forest보다 극도의 무작위성(Extreme Randomness)을 추가한 모델
1.2.1. Random Forest와의 차이
1.2.2. 언제 유리한가?
- 데이터가 크고 노이즈가 많은 경우
- 빠른 학습 속도가 필요한 경우
- 하이퍼파라미터 튜닝 부담을 줄이고 싶을 때
2. 부스팅(Boosting)
모델을 순차적으로 학습시키며 이전 모델이 만든 오류를 다음 모델이 보완하도록 설계된 앙상블 전략
배깅이 “여러 모델을 동시에 학습”한다면,
부스팅은 “하나씩 이어서 점점 더 정교하게 학습”한다.
2.1. AdaBoost
잘못 분류된 데이터에 가중치를 부여하며 점진적으로 성능을 개선
2.1.1. 학습 방식
- Step 1. 모든 데이터에 동일한 가중치로 시작
- Step 2. 약한 학습기 학습
- Step 3. 오분류된 데이터의 가중치 증가
- Step 4. 다음 모델은 어려운 데이터에 더 집중
- Step 5. 반복 후 가중합으로 최종 예측
2.1.2. 특징
- 단순한 모델로도 높은 성능 가능
- 마진(Margin)을 최대화하는 방향으로 학습
- AdaBoost의 역설(훈련 오류가 0이 된 후에도 테스트 성능이 지속적으로 향상되는 현상)이 나타나기도 함
- 노이즈와 이상치에 매우 민감
“틀린 데이터를 끝까지 붙잡고 학습하는 방식”
2.2. GradientBoost
잔차(Residual)를 학습하며 정답에 다가가는 방식
cf) Gradient Descent(경사 하강법) 개념 요약
학습이란 본질적으로 손실 함수(loss function)를 최소화하는 weight를 찾는 과정
Gradient Descent는
- 현재 지점에서 손실 함수의 기울기(Gradient)를 계산하고
- 손실이 가장 빠르게 감소하는 방향으로
- learning rate만큼 이동
이를 반복해 손실 최소 지점(Global Minimum)에 도달한다.
2.2.1. Gradient Boosting의 핵심 아이디어
"이전 모델의 예측 오차(잔차)를 다음 모델이 학습하도록 하자"
이를 손실 함수 관점에서 보면,
- 현재 모델이 만든 손실의 기울기(Gradient) 를 계산하고
- 그 기울기를 줄이는 방향으로 새로운 모델을 추가
즉, 모델 하나를 추가하는 행위 자체가 Gradient Descent의 한 스텝이다.
2.2.2. 학습 흐름
- Step 1. 초기 예측값 설정
- Step 2. 실제값 − 예측값 = 잔차(residual) 계산
- Step 3. 잔차를 예측하는 모델 학습
- Step 4. learning rate를 곱해 기존 모델에 누적
- Step 5. 반복
2.3. AdaBoost vs Gradient Boosting
| 구분 | AdaBoost | Gradient Boosting |
|---|
| 핵심 관점 | 데이터 가중치 | 손실 함수의 기울기 |
| 이론 기반 | 경험적 | 최적화 이론 |
| 손실 함수 | 지수 손실 | 임의의 손실 함수 |