Stack Building

Bagging, Boosting, Stacking 본문

머신러닝

Bagging, Boosting, Stacking

S00ahKim 2019. 9. 2. 13:48

약한 학습기 여러 개를 결합하여 하나의 학습기보다 좋은 성능을 보이고자 하는 기법이 '앙상블'이다. 동일한 학습기를 결합할 경우 앙상블이라고 하고, 다른 학습기를 결합할 경우 '스태킹'이라고 본다. 앙상블을 사용하면 학습에서 흔히 나타나는 두 가지 오류("높은 bias로 인한 Overfitting"과 "높은 Variance로 인한 Underfitting")를 개선할 수 있다.

 

1. 배깅 (Bootstrap Aggregating)

① 대상 데이터를 복원 랜덤 샘플링함

② 학습 후 분류함

③ 범주형인 경우 Voting, 연속형인 경우 Average로 집계

 

특징: 샘플을 여러 번 뽑아 각 모델을 병렬 학습한다. 대표적인 알고리즘은 Random Forest. 일반적인 모델을 만드는 것에 집중한다.

 

2. 부스팅

① 대상 데이터를 복원 랜덤 샘플링함. 단, 가중치를 부여함

② 학습 후 분류함

③ 학습이 끝난 후 나온 결과에 따라 가중치가 재분배함

 

특징: 순차적으로 학습이 진행된다. 오답에 더욱 집중하게 되어 정확도가 아주 높지만, Outlier에 취약하다. AdaBoost, XGBoost, GradientBoost 등 다양한 모델이 있으며 그 중에서도 XGBoost 모델은 강력한 성능을 보여주어 최근 Kaggle에서 자주 등장한다.

 

3. 스태킹 Meta Modeling

특징: 어마어마한 연산량. 완벽한 구현체는 아직 없음.

 

4. 참고

- Bagging과 Boosting 그리고 Stacking

- Ensemble Learning in Python

- Boosting, Bagging, and Stacking — Ensemble Methods with sklearn and mlens

- A Comprehensive Guide to Ensemble Learning (with Python codes)

- Stacking without splitting data

Comments