앙상블 기법(Ensemble method)은 여러 개별 모델의 예측 결과를 조합하여 보다 정확한 예측을 수행하는 머신러닝 기법이다.
앙상블은 각기 다른 모델의 장단점을 보완하여 전체적으로 더 강력한 예측 모델을 만들 수 있다. 다양한 앙상블 기법 중에서 가장 대표적인 것은 보팅(Voting), 배깅(Bagging), 부스팅(Boosting), 스태킹(Stacking) 등이 있다.
보팅이란 여러 모델의 예측을 통해 최종 예측을 결정하는 방식을 말한다.

하드보팅
하드 보팅이랑 다수의 classifier를 통하여 예측을 하여 이를 토대로 많은 투표로 받은 class를 정답으로 예측한다. 즉 다수결의 원칙을 따른다.
소프트 보팅
소프트 보팅이랑 다수 classifier에 결과값을 레이블 값의 확률로 받아 이를 평균내어 확률이 높은 label 값을 결과 값으 로 예측한다.
배깅은 Bootstrap Aggregating의 준말로, 각각의 개별 모델에게 데이터를 랜덤하게 샘플링하여 데이터셋을 만들고, 이를 각각의 모델에게 학습시킨 뒤, 개별 모델들의 예측을 평균하여 최종 예측을 수행하는 기법이다. 각 모델들은 서로 독립적이기 때문에, 병렬적으로 학습ㄴ이 가능하며, 모델의 결과를 평균 또는 다수결로 결합하여 최종 예측을 만든다.

배깅의 대표적인 알고리즘으로 랜덤 포레스트(Random Forest)가 있다.
랜덤하게 샘플링을 하기 떄문에 개별 트리 마다 다른 구조를 가지게 된다. (이미지 출처. tibco.com)
부스팅은 모델을 순차적으로 학습하면서 이전 모델이 잘못 예측한 샘플에 가중치를 부여하여 다음 모델이 더 잘 예측할 수 있도록 도와준다. 부스팅은 각 모델이 이전 모델의 예측 오차를 보완하면서 예측 성능을 개선해나간다.
이전 classifier가 예측이 틀린 데이터에 대해서 올바르게 예측할 수 있도록 다음 classifier에 가중치를 부여 하면서 학습과 예측을 진행하게 된다. 계속하여 classifier에 가중치를 부스팅 한다 하여 부스팅이라 불린다.
대표적인 알고리즘으로는 XGBoost(eXtreme Gradient Boosting), LGBM(Light Gradient Boosting Machine)이있다.
(이미지 출처, https://hyunlee103.tistory.com/25)

스태킹은 여러 가지 모델들의 예측값을 최종 모델의 학습 데이터로 사용하는 예측 방법이다.
스태킹(Stacking)은 개별적인 여러 알고리즘을 서로 결합해 예측 결과를 도출한다는 점에서 배깅(Bagging) 및 부스팅(Boosting)과 공통점을 가지고 있다. 하지만 가장 큰 차이점은 개별 알고리즘으로 예측한 데이터를 기반으로 다시 예측을 수행한다는 점이다
현실 모델에서는 스태킹을 적용하는 경우가 많지 않지만, 캐글 같은 미세한 성능차이로 승부를 결정하는 대회에서 자주 사용된다.
기본 모델로 4개 이상을 선택해야 좋은 결과를 기대할 수 있다.
