본문 바로가기
ML/Ensemble

[ML][Ensemble] Ensemble Learning(앙상블 학습), Bagging(배깅),Boosting(부스팅)

by 어떻게든 되겠지~ 2024. 6. 25.

 

Ensemble Learning(앙상블 학습)

Ensemble Learning이란 여러 개의 모델을 학습시켜, 다양한 예측 결과를 이용하는 방법론입니다

보통 Decision Tree에서 자주 사용되며, 크게 Bagging, Boosting이 있습니다

Bagging(배깅, Bootstrap Aggregation)

먼저 Bagging에 대해 알아보도록 하겠습니다

Bagging은 분산이 $\sigma^2$인 독립적인 Observation($Z_1, Z_2, \cdots, Z_n$)이 있을 때, Observation의 평균 $\bar{Z}$의 분산은 $\frac{\sigma^2}{n}$이 되는 것을 이용하여, 여러 Observation을 평균을 내면 분산이 줄어드는 점을 이용한 방법입니다

 

즉, Bootstrap을 이용해 데이터 셋으로부터 B개의 데이터 셋을 복원추출(Bootstrap)하고, 추출한 데이터 셋으로 $\hat{f}^{*b}(x)$를 학습합니다

이후 예측값을 회귀 모델인 경우 평균, 분류 모델은 경우 Majority vote를 취해 분산 오류를 낮추게 됩니다

$$\hat{f}_{bag}(x) = \frac{1}{B} \sum \limits_{b=1}^{B} \hat{f}^{*b}(x)\; or \; \hat{f}_{bag}(x) =  \arg \underset{k}{\max} \hat{f}^{*b}(x)$$

 

Bagging은 Decision Tree의 성능면에서의 단점을 보완 가능하지만 학습 결과에 대한 해석력이 떨어진다는 단점이 존재합니다

특히, 어떤 Feature가 가장 중요한지 판단하는 것이 어렵게 됩니다

 

Bagging은 주로 Random Forest에서 사용합니다

※ Bootstrap(부트스트랩)

모수의 분포를 정확하게 추정하기 위해서는 많은 표본 데이터가 필요하지만 현실적으로 무수히 많은 표본 데이터를 얻기란 어렵습니다

이러한 현실적 어려움을 보완하고자 Bootstrap은 현재 가지고 있는 데이터 샘플을 복원 추출하여 여러 개(B개)의 표본 데이터셋을 만들어 사용합니다

 

아래 식은 Bootstrap을 이용하여 통계량 $\alpha$(평균, 표준편차 등등) 의 표준오차를 추정하는 식입니다

 

$$\sigma_{\alpha} = \sqrt{\frac{1}{B-1} \sum \limits_{i=1}^{B} (\hat{\alpha_i} - \frac{1}{B} \sum \limits_{j=1}^{B} \hat{\alpha_j})^2}$$

1. $\alpha_i$ : i번째 Bootstrap 샘플로 부터 계산된 통계량 $\alpha$의 추정값

2. $\frac{1}{B} \sum \limits_{j=1}^{B} \hat{\alpha_j}$ : B개의 Bootstrap 샘플로부터 얻은 통계량 $\hat{\alpha_i}$의 평균

3. $\hat{\alpha_i} - \frac{1}{B} \sum \limits_{j=1}^{B} \hat{\alpha_j} $ : Bootstrap 통계량 $\hat{\alpha_i}$가 Bootstrap 평균값으로부터 얼마나 떨어져 있는지를 나타내는 편차

4. $ \sum \limits_{i=1}^{B} (\hat{\alpha_i} - \frac{1}{B} \sum \limits_{j=1}^{B} \hat{\alpha_j})^2 $ : 모든 Bootstrap 통계량들에 대한 편차의 제곱

5. $ \sqrt{\frac{1}{B-1} \sum \limits_{i=1}^{B} (\hat{\alpha_i} - \frac{1}{B} \sum \limits_{j=1}^{B} \hat{\alpha_j})^2} $ : 자유도를 고려하여 표본 분산을 계산하고 표준 오차를 계산

※ Voting vs Bagging

Voting

서로 다른 알고리즘을 가진 모델을 결합하는 방법

  • Hard Voting
    • 다수결 원칙으로, 예측한 결과값들 중 다수의 모델이 결정한 예측값을 최종 Voting 결과값으로 선정
  • Soft Voting
    • 모델의 값 결정확률을 모두 더하고 이를 평균해서 가장 확률이 높은 값을 최종 Voting 결과값으로 선정

Bagging

각각의 모델이 같은 알고리즘이지만, 데이터 샘플링을 다르게 해서 학습하는 방법

Boosting(부스팅)

Boosting이란 여러 개의 Weak Classifier(약분류기)를 순차적으로 학습하며, 앞에서 학습한 분류기에서 예측이 틀린 샘플에 대해 다음 분류기가 가중치를 인가하여 학습을 이어 진행하는 방식입니다

최종적으로 Strong Classifier(강분류기)를 만들게됩니

즉, 이전 스텝의 Tree 정보를 활용하여 순차적으로 Tree를 만들게 됩니다

 

Boosting에는 AdaBoost, Gradient Boosting Model(GBM)XGBoost, LightGBM 등이 있습니다

반응형