Ensemble 이란?
앙상블(Ensemble) 기법은 머신러닝에서 여러 모델을 결합하여 예측 성능을 향상시키는 방법임.
- 앙상블의 핵심은 단일 weak learner의 한계를 극복하기 위해 여러 모델의 예측 결과를 효과적으로 결합하여 강력한 모델(strong learner)을 만드는 것임.
- 이 기법은 모델들이 서로 다른 예측을 내더라도 이를 조합하여 더 높은 정확도와 안정성을 확보할 수 있음.
- 대표적인 앙상블 기법으로는 배깅(Bagging), 부스팅(Boosting), 스태킹(Stacking)이 있음.
이들은 서로 다른 방식으로 weak learners를 결합하며 각기 다른 장단점을 가짐.

Bagging (배깅)
배깅(Bagging, Bootstrap Aggregating)은 여러 독립적인 모델을 병렬로 훈련(Parallel Ensemble)시켜 그 예측값을 결합하는 방식임.
- 각 모델은 원본 데이터셋에서 부트스트랩(Bootstrap) 샘플링된 subset의 학습.
- 모델들은 동일한 알고리즘을 사용하지만, 각각 다른 데이터 샘플에 대한 학습.
- 최종 예측은 각 모델의 결과를 평균하거나 다수결로 결합(aggregating)하여 도출.
배깅의 대표적인 알고리즘으로는 랜덤 포레스트(Random Forest)의 존재.
- 랜덤 포레스트는 여러 개의 결정 트리(Decision Tree)를 학습하고, 그 결과를 결합(Aggregating: e.g. Majority Voting)하여 최종 예측의 생성.
배깅의 장점은 다음과 같음:
- 과적합(Overfitting)의 감소.
- 병렬 처리가 가능하여 학습 속도의 향상.
그러나 배깅의 단점은 다음과 같음:
- 모델 간의 차이가 크게 나지 않을 경우 성능 개선의 한계 존재.
- 같은 알고리즘을 사용하여 모델을 훈련하므로, 예측값의 유사성 가능성.
2024.06.05 - [.../Math] - [ML] Bootstrap Sampling
[ML] Bootstrap Sampling
Bootstrap Sampling을 이해하고 활용하기Bootstrap Sampling이란 무엇인가?Bootstrap Sampling은 통계학(Statistics)과 데이터 과학(Data Science)에서 널리 사용되는 강력한 방법론(Methodology) 중 하나임.이는 기존의 데
dsaint31.tistory.com
Bagging의 대표적인 예인 Random Forest의 scikit-learn의 구현물 사용에 대한 간단 코드임: https://ds31x.tistory.com/352#8.-random-forest-regressor-%EB%9E%9C%EB%8D%A4-%ED%8F%AC%EB%A0%88%EC%8A%A4%ED%8A%B8-%ED%9A%8C%EA%B7%80
Boosting (부스팅)
부스팅(Boosting) 은 모델들을 순차적으로 학습(Sequential Ensemble)시키는 방식임.
- 첫 번째 모델이 예측한 후, 그 결과에서 틀린 부분에 가중치를 부여하여 두 번째 모델이 해당 부분을 더 중점적으로 학습함.(adaptive boosting의 경우임)
- Gradient boosting의 경우엔 이전 모델의 오차를 근사하도록 훈련하여 해당 오차를 보정하도록 하는 방식임 (loss의 gradient를 이용함).
- boosting 에서는 계속적으로 모델이 직렬로 추가되어 연결되면서 점점 더 나은 예측을 하게끔 개선해 나가는 방식임.
- 부스팅은 모델들이 순차적으로 학습하므로, 각 모델은 이전 모델의 오류를 보완하는 역할을 하게 됨.
대표적인 부스팅 알고리즘으로는 AdaBoost, Gradient Boosting, XGBoost 등이 있음.
Adaboost를 도식적으로 표현한 그림임.

다음은 Gradient Boosting의 동작을 regression task 에서 보여주는 예임.

부스팅의 장점은
- 매우 높은 예측 성능을 낼 수 있다는 점과,
- 약한 모델(Weak Learner)도 반복적으로 학습해 강한 모델로 만들 수 있다는 점임.
그러나 부스팅의 단점은
- 학습이 순차적으로 이루어져 병렬 처리가 어렵고, 학습 시간이 길어질 수 있다는 점임.
- 또한 지나치게 학습할 경우 Overfitting(과적합)이 발생할 수 있으므로
- 정규화(Regularization) 기법이 필요함: 개별 weak model의 regularization을 강화하거나, 적은 수의 weak model을 사용하는 것이 regularization임.
다음은 AdaBoost (Adaptive Boosting)의 예제임: https://ds31x.tistory.com/352#9.-adaboost-regressor-%EC%95%84%EB%8B%A4%EB%B6%80%EC%8A%A4%ED%8A%B8-%ED%9A%8C%EA%B7%80
[ML] Classic Regressor (Summary) - regression
DeepLearning 계열을 제외한 Regressor 모델들을 간단하게 정리함.https://gist.github.com/dsaint31x/1c9c4a27e1d841098a9fee345363fa59 ML_Regressor_Summary.ipynbML_Regressor_Summary.ipynb. GitHub Gist: instantly share code, notes, and snippets.g
ds31x.tistory.com
Stacking (스태킹)
스태킹(Stacking) 은 여러 다른 모델들의 예측 결과를 meta-model (or blending model)로 결합하여 최종 예측을 만드는 Ensemble Technique임.
- 배깅이나 부스팅과는 달리, 스태킹은 주로 서로 다른 알고리즘이나 아키텍처를 사용하는 모델들의 예측값을 결합함.
- 각 모델이 예측한 결과를 새로운 데이터셋으로 간주하고, 이 데이터를 메타 모델(Meta Model)에 입력하여 학습함으로써 최종 결과를 도출함.
스태킹에서는 서포트 벡터 머신(SVM), 로지스틱 회귀(Logistic Regression), 결정 트리(Decision Tree) 등 다양한 알고리즘을 사용하여 예측하고, 그 예측값을 결합하여 최종 결과를 도출할 수 있음. 이때 메타 모델은 예측값을 학습하여 가장 좋은 결합 방식을 학습함.
스태킹의 장점은
- 서로 다른 모델의 장점을 결합하여 더 나은 성능을 낼 수 있다는 점임.
- 단순한 평균이나 다수결이 아닌 메타 모델이 결합 방식을 학습하므로 더욱 정교한 결합이 가능함.
그러나 스태킹의 단점은
- 엔드투엔드(End-to-End) 학습이 어려우며,
- 기본 모델과 메타 모델을 따로 학습해야 하는 복잡성이 있다는 점임.
- 또한 여러 모델을 훈련하고 결합하는 과정에서 연산 자원이 많이 소모될 수 있음.
결론
앙상블 기법은 여러 모델을 결합하여 개별 모델보다 더 높은 성능을 도출할 수 있는 강력한 방법임.
배깅(Bagging), 부스팅(Boosting), 스태킹(Stacking)은 각각 장단점을 가지고 있으므로 주어진 문제에 맞추어 적절한 기법의 선택이 필요함.
- 배깅은 모델의 독립성을 유지하면서 과적합을 줄이고, ← 가장 쉽게 사용가능함.
- 부스팅은 이전 모델의 오류를 개선하며, ← 과적합 위험때문에 하이퍼파라미터의 선택에 따른 성능차가 심함 편
- 스태킹은 여러 다른 알고리즘의 장점을 결합하여 최종 성능을 극대화할 수 있음. ← 가장 강력한 방법 중 하나이나 유지보수 측면이 쉽지 않음.
연결방식의 관점에서 바라본 Ensemble
Ensemble technique은 model 연결 방식에 따라 크게 세 가지로 나눌 수 있음:
- Parallel Ensemble: 여러 model을 독립적으로 학습시키고 그 결과를 aggregating하는 방식.
- Bagging (Bootstrap Aggregating): 원본 dataset에서 bootstrap 방식으로 여러 개의 subset을 생성하고, 각 subset에 대해 model을 학습시킨 후 결과를 aggregating하는 method.
- Sequential Ensemble: 이전 model의 결과를 바탕으로 다음 model을 순차적으로 학습시키는 방식.
- Boosting: 이전 model의 error를 보완하는 방식으로 순차적으로 model을 학습시키는 method. 각 model은 이전 model이 잘못 예측한 data에 더 큰 weight를 부여.
- Stacking: weak learner를 aggregating할 때, 단순한 function 대신 학습된 model(meta-model)을 사용하는 ensemble technique.
- Stacking은 기본적으로 parallel 연결 방식(각 model은 일단 parallel로 독립적으로 training)을 사용하지만,
- meta-model을 학습시키는 process에서 sequential 연결의 특성(training된 model들을 쌓아올릴 때는 sequential 연결)도 가지고 있어 두 방식의 특성을 모두 활용.
Bagging과 boosting은 주로 같은 type의 model들을 combining하는 데 많이 사용되지만, stacking은 서로 다른 type의 model들을 combining하는 데 자주 활용됨. 이러한 특징으로 인해 stacking은 다양한 model의 advantage를 활용할 수 있는 flexible ensemble technique으로 간주됨.
같이보면 좋은 자료들
Decision Tree - CART (Classification and Regression Trees)
Classification And Regression Trees (CART) 는 Classification와 regression 문제 모두 처리 가능한 Binary Decision Tree를 훈련시키는 알고리즘.1. 역사적 배경1984년 Leo Breiman, Jerome H. Friedman, Richard A. Olshen, Charles J. Stone
ds31x.tistory.com
2024.06.20 - [.../Math] - [ML] Out of Bag: 유도하기.
[ML] Out of Bag: 유도하기.
Out of Bag (OOB)란?Out of Bag (OOB)는 Bagging (Bootstrap aggregating)과 같이 Bootstraping을 이용한 Ensemble Model에 등장하는 용어. Bootstrap Sampling을 사용할 경우, 특정 predictor를 훈련시킬 때 sample point는 여러번 사용
dsaint31.tistory.com
[ML] Classic Regressor (Summary) - regression
DeepLearning 계열을 제외한 Regressor 모델들을 간단하게 정리함.https://gist.github.com/dsaint31x/1c9c4a27e1d841098a9fee345363fa59 ML_Regressor_Summary.ipynbML_Regressor_Summary.ipynb. GitHub Gist: instantly share code, notes, and snippets.g
ds31x.tistory.com
'Programming > ML' 카테고리의 다른 글
| [ML] Kernel Function 이란: Kernel Trick 포함 (0) | 2024.09.28 |
|---|---|
| [ML] Radial Basis Function Kernel (RBF Kernel) (1) | 2024.09.26 |
| [ML] Constrained Least Squares: Lagrangian 을 활용. (1) | 2024.07.16 |
| [Fitting] Total Least Square Regression (2) | 2024.06.22 |
| [ML] RANdom SAmple Consensus (RANSAC) (0) | 2024.06.13 |