본문 바로가기
Machine Learning

Bagging, Boosting, Bootstrapping, Stacking

by 함승우 2022. 2. 12.

최근에 친구들과 대화를 나누다가 우연히 Boosting이라는 단어가 대화에 등장하였습니다. 제게는 이름은 많이 들어봤는데 정확히 뭔지는 모르는 알고리즘으로 느껴졌습니다. 그 자리에 있던 친구들 모두 정확한 정의를 몰라서 찾아보려 하는데, B로 시작하는 용어들이 또 있던 것 같은 느낌이 들었습니다. 그래서 이번 글에서는 공부할 겸 겸사겸사 각 단어의 의미에 대해 알아보려 합니다.

 

구글링 결과 비슷한 고민을 한 사람이 있음을 Quora에서 알게 되었습니다. What is the difference between boost, ensemble, bootstrap and bagging?이라는 글이었습니다. 해당 글의 답변을 바탕으로 정리해봅시다.

 

일단 boosting, bagging, stacking은 ensemble 기법 중 하나입니다.

 

Bagging

https://www.pluralsight.com/guides/ensemble-methods:-bagging-versus-boosting

Bootstrap aggregating이라고도 불립니다. 주어진 데이터에 대해 bootstrapping으로 여러개의 자료를 생성합니다. 각 bootstrapping으로 얻어진 모델들을 활용하여 equal weight vote를 시행하면 ensemble의 효과와 함께 좋은 모델을 만들 수 있게 됩니다. Variance를 줄어들어 과적합을 방지합니다. 

 

Boosting

Boosting은 잘못 분류된 개체들에 대해 더 집중하여 학습합니다. 전 모형에서 오분류된 개체들에 대한 가중치를 높여 다음 모델을 학습하는 것입니다. Weak learner 여러 개를 합쳐 strong learner를 만드는 방법이라고 할 수 있습니다. Bias와 variance를 줄이는 것에 사용됩니다. Weighted majority voting(분류 문제)나 weighted sum(회귀 문제)를 통해 해당 작업을 진행하며 Ada boost와 Gradient boosting이 대표적인 방법이라고 합니다.

 

Stacking

https://www.researchgate.net/publication/335156833_SSEM_A_Novel_Self-Adaptive_Stacking_Ensemble_Model_for_Classification/figures?lo=1&utm_source=google&utm_medium=organic

개별 모델이 예측한 결과를 학습 데이터로 활용하는 모델을 2단계로 설게하여 최종 결과를 산출합니다.

 

Bootstrapping

Bootstrapping은 Bagging, Boosting, Stacking과는 다릅니다. Bootstrapping은 sample을 만드는 방법의 한 종류입니다.

https://blogs.sas.com/content/iml/2018/12/12/essential-guide-bootstrapping-sas.html

단일 랜덤 표본에서 복원으로 여러 표본을 가져와서 표본 추출 분포를 추정하는 방법입니다표본 수와 동일한 크기로 반복 추출합니다. 전체 데이터의 일부(보통 2/3)만을 추출하고 나머지는 out-of-bag instance라고 칭하며 사용하지 않는 방법입니다. Train 과정에서 out-of-bag instance가 제외되기 때문에 따로 cross validation할 필요 없이 out-of-bag instance로 evaluation을 할 수 있습니다.

 

출처