본문 바로가기
모델 학습

Bagging VS Boosting

by 땅호720 2024. 2. 23.
<의사 결정 트리>
의사결정규칙을 트리 구조로 나타내어 전체 자료를 몇 개의 소집단으로 분류하거나 예측을 수행하는 분석 방법

장점
- 쉽고 해석하기 용이
- 다중분류와 회귀에 모두 적용 가능
- 이상치에 견고, 데이터 스케일링이 불필요 (데이터의 상대적인 순서를 고려해서)
단점
- 트리가 너무 깊으면 과적합될 수 있음
- 훈련 데이터에 민감하여 작은 변화가 노이즈에도 트리의 구조가 크게 달라짐 (불안전성) -> random state 고정 (42)

Bagging

Bootstrapping + Aggregating의 약어

데이터가 부족한 문제를 해결하기 위한 방법론

 

  1. 데이터를 복원 추출하여
    유사하지만 다른 데이터 집단(표본)을 생성 (Bootstrapping)
  2. 이 여러 개의 표본을 기반으로 각각의 DT모델을 개발한 후에
    예측,분류 결과 (Aggregating)를 하나의 모델로 합침 (Ensemble)

'알고리즘의 안정성'

< 랜덤 포레스트 >
여러 개의 데이터 샘플에서 각자의 의사결정트리를 만들어서 다수결 법칙에 따라 결론을 냄
더 많은 트리의 결론을 최종 결론으로 결정
- 명목형 변수 (Categorical)의 경우 투표(voting) / 가장 높은 확률값으로 예측 결과값을 합침
- 연속형 변수 (Numerical)의 경우에는 평균으로 집계

장점
- Bagging 과정을 통해 과적합을 피할 수 있음
- 이상치에 견고, 데이터 스케일링 불필요
- feature importance 추출을 통해 모델 해석에 중요한 특징을 파악할 수 있다
단점
- 컴퓨터 리소스 비용이 큼 (여러 모델 생성)
- 앙상블 적용 (최종적으로 여러 트리가 존재)으로 해석이 어려움 (DT는 하나의 트리가 최종 결정)

 

 

Boosting

Bagging은 일반적인 모델을 만드는 것,
Boosting은 오답노트!
틀린 케이스에 가중치를 주어 이를 해결하는 것에 초점을 맞추는 모델

 

'정확성 향상'에 목적을 두며,
모델의 오분류 케이스를 해결하는 것을 우선시하여 모델을 개선해나가는 학습 방식

연속형 변수(Numerical)는 가중 평균(weighted aveage, median)으로 예측 결과값을 합친다

 

Boosting은 순차(sequential) 학습으로
DT모델 생성, 하나의 모델을 만들어 그 결과를 보완하여 다른 모델을 만들어 나감

'정확성 향상'이 목적인만큼 이상치에 취약해질 수 있다

 

< xgboost 와 LightGBM >
가중치 업데이트를 경사하강법을 이용하여 진행
- Gradient Descent: Loss Function을 최소화하는 최적의 파라미터를 찾는 방법

xgboost:
병렬학습을 통한 속도 개선,
level-wise 방식으로 트리를 신장하여 트리 깊이를 최소화하면서 균형 잡힌 트리 생성
-> 균형을 잡아주어야 하기에 트리의 깊이가 줄어들고 연산이 추가 됨
early stopping과 같은 규제가 포함되어 있어서 과적합 방지 가능
grid search 등으로 하이퍼 파라미터 튜닝을 하게 되면 시간이 더욱 오래 걸림

lgbm:
대용량 데이터 처리 가능, 메모리를 적게 사용하여 빠름
leaf-wise 방식
으로 트리를 신장하여, 손실이 큰 트리에 대해서 지속적으로 분할해나감

-> 깊이가 늘어나 level-wise로 발생하는 불필요한 연산을 줄일 수 있음,
     최대 손실이 발생하는 트리에 대해 분할해나가면서 줄여나가므로 성능이 좀 더 좋을 수 있음
하지만 데이터가 적으면 (10,000건 이하) overfitting 될 확률이 높으므로 max-depth 파라미터를 잘 조정해야함

 

 

Bagging VS Boosting

공통적으로 모두 의사결정나무의 안전성을 높이며, 표본 추출은 데이터셋에서 복원 랜덤 추출을 함 (Boosting은 오분류 가중치)

  • 표본추출: Overfit vs Underfit 해결
    • 과적합 문제는 Bagging 해결할 수 있음
    • skewed는 Boosting이 줄일 수 있음 (모델 성능이 약한 문제)
  • 병렬/순차 학습: Parallel vs Sequential
    • Bagging은 병렬(parallel) 학습, 동시에 예측한 후 결과물을 combine
    • Boosting은 순차(sequential) 학습으로, 모델을 오차를 개선해나가며 결과물 생성
  • 가중치: Randomly(Bootstrap) vs Weight
    • Bagging은 무작위로 데이터 (feature)를 샘플링
      • 데이터는 복원추출, feature는 한번 추출할 때는 비복원으로 추출하게 될 것이다
    • Boosting은 오차가 큰 개체에 대해 더 높은 가중치 부여
  • 훈련/평가: Keep vs Evaluate
    • Bagging은 트레이닝셋을 계속 갖고있지만, Boosting은 트레이닝셋을 업데이트 및 조정하는 과정이 추가됨

 

 

 

 

 

 

Ref.

'모델 학습' 카테고리의 다른 글

Active Learning: UNKNOWN 데이터 라벨링  (1) 2023.12.20