본문 바로가기
데이터 사이언스/데이터 사이언스

배깅(Bagging) vs 부스팅(Boosting)

by 끙정 2021. 4. 6.
728x90

안녕하세요, 끙정입니다.

 

오늘은 배깅(bagging)과 부스팅(boosting)을 비교해보면서 두 알고리즘에 대해 심층적으로 알아보겠습니다. Conventional한 방식의 알고리즘에서도 가장 강력한 성능을 내는 배깅과 부스팅은 현업에서도 가장 많이 쓰이고, 경진대회에서도 정형데이터에 대해서는 아주 뛰어난 성능을 내고 있습니다. 두 알고리즘의 차이점을 비교하다보면 자연스럽게 두 알고리즘을 잘 이해할 수 있게 될 것입니다.

 

본 글에서 다룰 차이점은 총 3가지 입니다. 바로 샘플링 방식, 학습 방식 그리고 최종 결과 도출 방식입니다.

 

가정.

일단 기본적으로 배깅과 부스팅은 똑같이 앙상블 기법을 사용합니다. 하나의 Tree를 사용하는 의사결정나무(Decision Tree)와는 다르게 배깅과 부스팅은 여러개의 Weak Tree(N learners)를 앙상블하여 최종 결과를 도출합니다. 그렇기 때문에 더 일반화 된 결과를 도출하면서도 높은 성능을 낼 수 있습니다. 이 글에서 배깅과 부스팅을 구성하는 각각의 트리는 Weak Tree라고 하겠습니다.

 

 

샘플링.

배깅은 'Bootstrap Aggregating'의 줄임말입니다. 즉, 랜덤 샘플링(복원추출)을 통해 매번 다른 데이터로 Weak Tree를 학습시키고, 여러개의 Weak Tree를 Aggregating 해서 결과를 도출합니다. 배깅의 대표주자인 랜덤포레스트(Random Forest)를 사용할 때 OOB(Out-of-bag)를 활용하는 이유도 바로 이 랜덤 샘플링 때문입니다. (랜덤 샘플링을 하면 약 Whole Data의 약 73.2%만 샘플링 된다고 알려져 있습니다. 이 부분에 대해서는 추후 제대로 포스팅 하겠습니다.) 또한 랜덤포레스트는 사람들이 잘 모르는 장점이 하나 있는데, 바로 데이터의 수가 적은 경우에도 오버피팅을 줄이면서 준수한 성능을 낼 수 있다는 점입니다. 그 이유는 바로 이 '랜덤 샘플링 + 앙상블' 때문이라고 할 수 있습니다.

 

부스팅도 랜덤 샘플링(복원 추출)을 하는 것은 같습니다. 다만 변주를 주었습니다. 바로 Whole Origin Data에 Weight를 준다는 것입니다. 특정 데이터에 대해 가중치를 주어서 특정 데이터가 샘플링 될 확률을 높입니다. 그렇다면 도대체 어떤 데이터에 가중치를 주고, 왜 가중치를 주는 것일까요? 다음 챕터에서 말씀 드리겠습니다.

 

학습 방법.

배깅은 각각의 Weak Tree가 독립적으로 학습됩니다. 그렇기 때문에 병렬적(Parallel)으로 학습이 가능하고, 학습 속도도 훨씬 빠릅니다. 앞서 말씀 드린 Bootstrap Aggregating의 의미를 보여주는 점입니다.

 

부스팅은 그와 반대로 각각의 Weak Tree가 의존적입니다. n번째 Weak Tree의 학습 결과가 n+1번째 Weak Tree의 학습에 영향을 줍니다. 즉, 이전 Tree의 학습 결과를 통해 더욱 개선된 Tree를 만든다, 바로 이게 부스팅의 핵심입니다.

그렇다면 어떻게 영향을 주는가? 바로 샘플링에서 영향을 줍니다. 앞서 샘플링 파트에서 부스팅은 특정 데이터에 가중치를 준다고 했습니다. 부스팅은 분류가 어려운 사례를 강조하기 위해 잘못 분류한 데이터에 가중치를 주어 더 잘 학습하도록 만듭니다. 즉, 잘못 분류한 데이터일수록 샘플링 될 확률이 늘어나고, 그 이후의 Weak Tree들이 더 잘 학습할 수 있도록 만듭니다.

그렇기 때문에 부스팅은 일반적으로 배깅보다 높은 성능을 낸다고 알려져 있습니다. 또 배깅과는 반대로 직렬적(Sequential)하게 학습합니다. 그렇기 때문에 학습속도가 현저히 느립니다. (다만 XGB 이후의 알고리즘에서 이러한 문제를 해결하고 병렬화를 시켰습니다. 지금은 속도가 매우 빠릅니다.)

 

 

최종 결과 도출.

배깅각각의 Weak Tree를 매우 정직하게 평균을 냅니다. 우리가 일반적으로 알고 있는 Soft Vote(Regression), Hard Vote(Classification) 방법을 사용합니다.

 

그러나 부스팅은 최종 결과를 도출할 때도 변주를 줍니다. 바로 각각의 Weak Tree의 학습 결과에 따른 Weight(가중치)를 준다는 점입니다. 더 잘 학습한 Weak Tree일수록 더 많은 Weight를 주어서 결과를 도출합니다. 그렇기 때문에 배깅보다 더 강력한 성능을 낼 수 있지만, 오버피팅의 위험이 있을 수 있습니다. (LGBM은 알고리즘의 특성상 특히나 오버피팅을 조심해야 한다고 알려져 있습니다.)

 

 

 

정리.

배깅(Bagging; Bootstrap Aggregating)

1) Whole Data Set 에서 Random Sampling을 한다.

2) 각각의 Weak Tree가 Independent하다.

3) 각각의 Weak Tree는 Parallel 하게 학습한다.

4) 각각의 Weak Tree를 균등한 비중으로 앙상블 하여 최종 결과를 도출한다.

5) 학습 속도가 빠르고, 적은 데이터만으로도 준수한 일반화 성능을 얻을 수 있다.

 

부스팅(Boosting)

1) Whole Data Set 에서 Random Sampling을 하지만, 매 Sampling마다 추출 확률이 달라진다.

2) 각각의 Weak Tree가 Dependent하다.

3) 각각의 Weak Tree는 Sequential 하게 학습한다. (XGB 이후부터는 Parallel한 학습이 가능해졌다.)

4) 성능이 좋은 Weak Tree에 가중치를 주어 앙상블 하여 최종 결과를 도출한다.

5) 학습 속도가 느리지만, 강력한 성능을 얻을 수 있다. 다만 오버피팅을 조심해야 한다.

 

 

 

아래의 글을 매우 많이 참고했습니다.

 

data-matzip.tistory.com/entry/%EC%95%99%EC%83%81%EB%B8%94-%EA%B8%B0%EB%B2%95-%EC%A0%95%EB%A6%AC-1-%EC%95%99%EC%83%81%EB%B8%94Ensemble-%EA%B8%B0%EB%B2%95%EA%B3%BC-%EB%B0%B0%EA%B9%85Bagging-%EB%B6%80%EC%8A%A4%ED%8C%85Boosting-%EC%8A%A4%ED%85%8C%EC%9D%B4%ED%82%B9Stacking

 

1. 앙상블(Ensemble) 기법과 배깅(Bagging), 부스팅(Boosting), 스태킹(Stacking)

안녕하세요, 허브솔트에요. 저희 데이터맛집의 허브솔트 첫 글 주제로 앙상블이 당첨됐네요...! 요새 캐글의 상위권 메달을 휩쓸고 있는 대세 알고리즘이 앙상블 기법을 사용한 알고리즘의 한

data-matzip.tistory.com

quantdare.com/what-is-the-difference-between-bagging-and-boosting/

 

What is the difference between Bagging and Boosting? ⋆ Quantdare

Bagging and Boosting are both ensemble methods in Machine Learning, but what is the key behind them?  Are they equivalent, similar, not related?

quantdare.com

 

728x90

댓글