앙상블(Ensemble)이란 하나의 모델이 아니라 수많은 모델들을 사용해 결과를 종합적으로 판단하고 예측력을 끌어올리는 기법이다. 결정 트리 모델처럼 단일 모델은 편향과 분산 문제를 갖기가 쉽다. 따라서 여러 모델의 예측을 결합해 서로의 오차를 상쇄하고 일반화 성능을 향상시키는 것이다.

앙상블의 대표적인 기법에는 3가지(Bagging, Boosting, Stacking)이 있다. 지금은 이 중, Bagging 과 Boosting에 대해 알아보려고 한다.
첫 번째로 Bagging (Bootstrap Aggregating)이란 하나의 데이터에서 중복 허용 샘플링(Bootstrap)을 실시하여 여러 개의 학습 데이터셋을 생성한다. 각 데이터를 독립적으로 학습한 이후, 그 결과를 평균, 다수결 투표 등의 방법으로 종합하는 것이다. Bagging을 활용한 대표적인 모델은 Random Forest이다. Random Forest 모델은 분산감소에 매우 효과적이어서 결정 트리 모델의 과적합 취약성 문제를 해결하고 병렬로 처리가 가능하여 연산을 효율적으로 할 수 있다는 장점이 있다.
다음으로 부스팅(Boosting) 기법이란 일부러 성능이 좋지 않은 모델들(weak learners)을 사용하여 순차적으로 모델을 학습시키는데, 이전 모델이 틀린 샘플에 가중치를 크게 주는 것이다. 부스팅은 먼저 만든 모델의 성능에 따라 뒤에 있는 모델들이 사용할 데이터셋을 바꿔 이전 모델이 해결하지 못한 문제에 집중한다. 이후 성능이 더 좋은 모델의 예측값을 더 많이 반영하는 방식으로 결과를 종합한다.
부스팅 기법에는 AdaBoost, Gradient Boost, XGBoost, LightGBM, CatBoost가 있다.

AdaBoost는 결정노드 1개, 분류노드 2개로 이루어진 스텀프(Stump)만을 사용한다. 각 스텀프들은 이전 스텀프가 틀렸던 예측을 바로잡는 데에 초점을 둔다. 잘못 분류된 샘플의 가중치를 키워가면서 다음의 학습기들이 사용할 새로운 데이터셋을 생성한다.

Gradient Boost는 초기 모델의 잔차를 계산하여 다음 모델이 초기 모델의 잔차를 맞추도록 학습한다. 학습된 모델을 초기 모델에 가중치(학습률)을 곱해 더하는 방식으로 업데이트해나가면서 정교한 모델을 구축한다.
XGBoost는 Gradient Boosting의 확장판으로, 정규화(term regularization)와 같은 Scaler 기능을 추가하여 과적합을 방지한다.
LightGBM은 대용량 데이터와 고차원 데이터에 최적화되어 있어 빠른 학습 속도와 낮은 메모리 사용량, 높은 정확도가 장점이다. 그러나 작은 데이터셋이나 범주형 데이터가 많은 경우에는 성능이 저하될 수 있다.
마지막으로 CatBoost는 범주형 데이터를 효율적으로 처리할 수 있도록 설계된 알고리즘이다. 범주형 데이터를 별도의 전처리 없이도 잘 처리하며, 높은 예측 성능과 과적합 방지 기능을 가지고 있다. 그러나, 다른 부스팅 알고리즘에 비해 학습 속도가 느릴 수 있다.
이미지 출처:
https://datamapu.com/posts/classical_ml/adaboost
https://www.geeksforgeeks.org/machine-learning/ml-gradient-boosting
https://www.analyticsvidhya.com/blog/2023/01/ensemble-learning-methods-bagging-boosting-and-stacking