
앙상블이란 무엇일까? 앙상블은 여러 개의 모델을 결합하여 단일 모델보다 좋은 성능을 내는 기법을 의미한다. 당연하게도, 다양한 모델을 조합함에 따라 다양성을 확보하고 일반화 성능이 증가한다.
이때 어떻게 여러개의 모델을 결합하는지, 그리고 그 방식들의 원리에 대해서 알아보자.
위의 사진에서 볼 수 있듯이, 앙상블 기법은 모델의 결과를 합치는 것이다. 실제로 모델이 혼합되는 느낌은 아니라는 것을 기억하자.
첫번째는 보팅이다. 보팅은 말그대로 투표라는 의미이다. 서로 다른 여러 모델이 산출하는 결과를 투표 방식을 이용해서 판단하고 하나의 최종 결론을 낸다는 점에서 Voting이라고 말 할 수 있다.
하드 보팅은 한마디로 말하면 다수결이다.

위와 같은 이진분류로 예를 들자면, 다수결 원칙에 따라 가장 많이 예측된 클래스를 최종 예측값으로 결정하는 것이다. 직관적인 방법이지만, 이때 각 모델이 어떤 확률로 각 클래스를 예측했는지 등 확률에 대한 정보가 누락되기 때문에 성능에 제한이 생길 수 있다.
위에서 보았듯이, 하드보팅은 예측된 클래스 그 자체를 다루는 반면,
소프트 보팅은 확률을 고려해서 결과를 산출한다.

위에서 보는 것 처럼, 각 모델이 내놓은 확률값을 고려하여 최종적인 확률을 산출하고, 최종 결과값을 산출한다. 따라서 확률 기반 결과를 내지 못하는 모델에는 적용이 불가하다.
위의 예시에서는 단순하게 세 모델의 확률값의 평균을 내었지만, 가중 평균(Weighted Average)를 적용한다면 각 모델의 가중치를 다르게 적용할 수 있다. 모델의 신뢰도에 따라 해당 방법 역시 적용할 수 있다.
참고로 분류 모델의 확률이 아니라 수치형에 대해서, 즉 회귀 모델들에 대해 소프트 보팅을 적용한다면 그것은 회귀라고 말할 수 있을 것이다.
배깅은 보팅과 매우 비슷하다. 하지만 가장 크고 명확한 차이는 배깅은 동일한 모델을 여러개 학습한다는 것이다. 동일한 모델을 여러개 학습하여 그 결과를 조합한다.
그렇다면 그 모델들에 과연 원본 데이터를 학습시켜야 할 것인가?
그렇지 않다. 서로 다른 모델을 사용하는 보팅 방식과 다르게 배깅은 부스트래핑(복원추출)을 이용해서 여러개의 샘플을 생성한다. 이 샘플들은 원본데이터와 동일한 크기를 가진다. 따라서 중복과 누락이 존재한다.
이렇게 하는 이유는, 직관적으로 생각해보면 같은 모델을 사용하는 배깅은 과적합을 방지해야한다는 사실을 상기한다면 쉽게 이해가 될것이다.
이렇게 하여 학습된 각각의 모델들을 다수결, 혹은 확률 기반의 판단, 회귀를 이용해 결과를 내면 배깅이 된 것이다.
부스팅은 여러 개의 약한 학습기를 순차적으로 학습해 강력한 모델을 만드는 방법이다.

첫번째로, 첫 번째 약한 학습기를 Subset으로 학습시킨다. 일반적으로 처음에는 원본 데이터로 학습시킨다. 그 이후 학습기가 틀린 샘플들에 대해 가중치를 부여한다. 이는 그 다음 subset에 반영될 것이다. 이렇게 된다면 다음 학습기는 이전 학습기가 틀린 샘플에 대해 더 주의를 두게 된다.
여기서 유의할 점은 subset은 원본 데이터와 크기가 동일하다. 단지 샘플별 가중치만 변경 될 뿐이다. 이런식으로 진행된다면, 후반의 학습기들은 선행 학습기들보다 발전될 것이다.
이렇게 여러 학습기들이 점진적으로 생성이되면, 이 모델들에 원본 데이터를 다시 학습시켜 나온 결과들을 더 좋은 모델에 가중치를 두어 평균을 산출한다. 참고로 이렇다 보니, 과적합 발생 가능성이 높다는 것이 단점일 것이다.
AdaBoost, GBM, XGBoost, CatBoost 등의 부스팅 계열 모델들이 여기에 해당된다.
스태킹은 쉽게 말해서, 여러 모델에서 나온 결과값을 가지고 새로운 모델을 학습시켜서 최종 예측을 만들어 내는 것이다.

기본 모델들이 각각의 예측값을 만들면 메타 모델이 이를 새로운 학습 데이터로 반영하여 학습을 진행하게 된다. 기본 모델이 확률값, 클래스 무엇을 산출하던 학습이 가능하다.
결국 메타 모델을 이용해 최종 결과를 낸다는 것이 스태킹의 특징이다. 단순히 평균이나 다수결이 아닌 방식이기에 일반화 성능이나 학습에서 유리하다는 측면도 존재하지만, 반대로 학습이 기본 모델에서도, 메타 모델에서도 이루어지기 때문에 과적합의 위험과 학습 시간의 증가라는 단점도 존재한다.