본문 바로가기

데이터 다루기/머신러닝 이론

[머신러닝] Ensemble Learning (3) Boosting (AdaBoost)

728x90
반응형

이번 포스팅에서는 앙상블 기법에서, Bagging의 성능을 향상시킨 Adaboost에 대해서 배워보도록 하겠습니다.

Bagging은 랜덤하게 추출한 데 반해, Adaboost는 이전 결과를 반영하여 각 데이터의 선택될 확률에 차이를 줍니다.

쉽게말해서, 100개중에서 30개를 선택해서 예측 모델을 만들었을 때, 20개를 맞추고 10개를 틀렸다고 생각해봅시다.

그러면, 맞은 20개에 대해서는 다음 선택시 확률을 줄이고, 틀린 10개에 대해서는 다음 선택시 확률을 높입니다.

얼핏 생각하였을 때, 틀린 데이터의 경우, 다음 모델을 만들 때, 다시 선택되게 하는것은 합리적으로 보입니다.

실제로 이 방법이 매우 효과적이라서, Adaboost는 굉장히 많이 쓰이고 있습니다.

한가지 단점으로는 Bagging은 100개의 Base Learner를 만들 때, 100번의 sampling을 한번에 만들 수 있지만, (sample들은 서로 독립이므로) Adaboost는 이전 결과를 반영해야 하기 때문에, 100개의 Base Learner가 순차적으로 만들어져야 하므로, 학습속도가 Bagging에 비해 느린 경향이 있습니다.

Adaboost의 학습 방법을 간략하게 살펴보았으니, 이제 본격적으로 자세히 들여다보도록 하겠습니다.

우선 Adaboost의 학습 방식을 그려보면 다음과 같습니다.

알고리즘을 자세히 들여다보면, 초기에는 각 데이터가 선택될 확률이 같은 값을 가지지만, 계산 과정을 거챠서 alpha_t를 구하게 되고, 다음 Base learner를 만들기 위한 sample 추출 확률을 업데이트 합니다.

반응형