코딜기

[Python/ML] 모델 앙상블(Model Ensemble) 배깅(Bagging)/부스팅(Boosting) 본문

ML & DL/Build & Train Model

[Python/ML] 모델 앙상블(Model Ensemble) 배깅(Bagging)/부스팅(Boosting)

코딜기 2022. 3. 11. 16:57
반응형

모델 앙상블(Model Ensemble)이란 무엇일까요?

  • 각 기법에 맞게 여러 개의 의사결정 나무를 만들고, 이들을 조화롭게 학습시켜 모델의 예측력을 높이는 과정입니다.
  • 앙상블 모델의 핵심은 약한 분류 모델들을 결합하여 강한 분류 모델을 만들어 예측력을 높이는 것입니다.
  • 앙상블 기법은 대표적으로 배깅(Bagging)부스팅(Boosting)이 있습니다.

배깅 (Bagging)

  • 배깅(Bagging)은 Bootstrap Aggregation의 약자로 데이터 샘플을 여러 번 뽑아 모델을 학습시키는 기법입니다.
  • 배깅은 학습 데이터의 부분집합을 랜덤 하게 만들어 의사결정 나무를 만듭니다.
    • 학습 데이터에 총 1000개의 행이 있을 때 랜덤으로 100개씩 행을 선택해서 의사결정 나무를 만듭니다.
  • 배깅은 예측 모델의 분산이 클 때 분산을 감소시키기 위해 사용됩니다.
  • 배깅을 할 때는 복원 추출로 진행합니다.
  • 분류 모델에서는 각 트리의 결과값의 다수결로 최종 분류가 이루어집니다.
  • 회귀 모델에서는 각 트리의 결과값의 평균값으로 최종 분류가 이루어집니다.
  • 대표적으로 Random Forest가 있습니다.

Bagging Feature

  • 트리를 만들 때 사용될 변수들을 제한함으로써 각 트리에 다양성을 줍니다.
  • 데이터 셋의 배깅과 비슷하게 트리의 변수의 조합을 랜덤 하게 만들어 의사결정 나무를 만듭니다.
    • 25개의 변수가 있다면 5개의 변수들로만 의사결정 나무를 만듭니다.
    • 보통 총변수의 개수의 제곱근으로 설정하는 것이 좋다고 알려져 있습니다. (25개라면 5개씩)

부스팅 (Boosting)

  • 부스팅(Boosting)은 각 이터레이션에서 맞추지 못한 데이터에 가중치를 부여하여 다음 학습 모델에 반영하여 예측력을 높입니다.
    • 잘못 예측된 데이터에 높은 가중치를 부여하여 오차를 보완합니다.
  • 부스팅은 예측 모델의 편차가 클 때 편차를 감소시키기 위해 사용됩니다.
  • 대표적으로 XGBoost, Gradient Boost, AdaBoost, CatBoost 등이 있습니다.

배깅과 부스팅의 차이

 

  • 배깅은 학습 데이터를 매번 다르게 해주는 병렬 학습 기법이고,  부스팅은 모델 자체를 변화시키는 기법입니다.
  • 배깅은 병렬로 학습하는 기법이고, 부스팅은 순차적으로 학습하는 기법입니다.
  • 배깅은 분산의 차이를 감소시키기 위해 사용되고, 부스팅은 편차를 감소시키기 위해 사용됩니다.
  • 부스팅은 배깅에 비해 오류가 적지만 과적합이 일어날 가능성이 상대적으로 높습니다.
    • 모델의 성능을 높이고 싶다면 부스팅을 사용하고, 과적합을 잡고 싶다면 배깅을 사용합니다.
반응형
Comments