부스팅 알고리즘 (Boosting Algorithm)

Hesoyam·2021년 4월 12일
1
post-custom-banner

부스팅(Boosting)

부스팅은 머신러닝 앙상블 기법 중 하나로 약한 학습기(weak learner)들을 순차적으로 여러개 결합하여 예측 혹은 분류 성능을 높이는 알고리즘이다.

  • 즉, 약한 학습기들을 결합하여 강한 예측 모형을 만드는 것이다.

부스팅 알고리즘이란


여러 개의 알고리즘이 순차적으로 학습-예측을 하면서 이전에 학습한 알고리즘의 예측이 틀린 데이터를 올바르게 예측할 수 있도록, 다음 알고리즘에, 가중치를 부여하여 학습과 예측을 진행하는 방식입니다.

  • 부스팅은 기본적으로 앙상블(Ensemble) 아이디어에서 Sequential이 추가된 형태입니다.

부스팅 알고리즘에는 다음과 같은 알고리즘이 있습니다.

  • AdaBoost
  • GBM(Gradient Boosting Machine)
  • XGBoost
  • LightBoost

AdaBoost


AdaBoost는 Adaptive Boosting를 줄여서 부르는 말로 관측치들에 가중치를 더하면서 동작을합니다. 분류하기 어려운 Instances에는 가중치를 더하고 이미 잘 분류되어진(다루어진) Instances는 가중치를 덜 합니다.

  • 즉, 약한 학습기(weak learner)의 오류에 가중치를 더하면서 부스팅을 수행하는 알고리즘 입니다.
    약한 학습기(weak learner)로 의사 결정 트리(Decision Tree)를 사용합니다.

Gradienet Boosting Machine (GBM)


GBM은 AdaBoost처럼 앙상블에 이전까지의 오차를 보정하도록 예측기를 순차적(Sequential)으로 추가합니다.
그렇지만, AdaBoost처럼 매 반복 마다 샘플의 가중치를 조정하는 대신에 이전 예측기가 만든 잔여 오차(Resudial Error)에 새로운 예측기를 학습시킵니다.

  • 가중치 업데이트를 경사하강법(Gradient Descent) 기법을 사용하여 최적화된 결과를 얻는 알고리즘

  • Sequential + Additive Model

  • 이전 모델의 Residual를 가지고 weak learner를 강화함
    즉, Residual를 예측하는 형태의 모델이다.

  • 과적합(Overfitting) 이슈가 있다.

XGBoost


위에서 설명한 GBM은 강력한 앙상블 모델입니다. 그렇지만, 과적합(Overfitting) 문제, 속도의 문제와 같은 여러 문제점이 있습니다.
따라서, 이러한 GBM의 단점을 보완하기 위해 XGBoost 모델이 나오게 되었습니다.

  • GBM 보다 빠른 속도를 가집니다.

  • 과적합(Overfitting) 방지를 위한 규제(Regularization)이 있습니다.

  • CART(Classification And Regression Tree) 기반
    즉, 분류(Classification)와 회귀(Regression) 둘 다 가능합니다.

  • GBM과 마찬가지로 가중치 업데이트를 경사하강법(Gradient Descent) 기법을 사용합니다.

LightGBM


LightGBM은 기존의 Tree 기반 알고리즘과는 다르게 동작 합니다.
예를 들어, Tree 기반 알고리즘인 XGBoost의 경우 균형 트리 분할(Level Wise) 방식을 사용했다면, LightGBM은 리프 중심 트리 분할(Leaf Wise) 방식을 사용합니다.

Level Wise 트리 분석은 균형을 잡아주어야 하기 때문에 Tree의 깊이(depth)가 줄어들고 연산이 추가되는 것이 단점이면, Leaf Wise은 트리의 균형을 맞추지 않고 최대 손실 값(Max data loss)를 가지는 leaf 노드를 지속적으로 분할하면서 Tree의 깊이(depth)가 깊어지고 비대칭적인 트리가 생성 됩니다.

  • 그렇지만, 최대 손실값을 가지는 leaf node를 반복할 수록 균형 트리 분할(Lever wise) 방식보다 예측 오류 손실을 최소화 할 수 있습니다.

References

profile
거북이가 되고 싶은 자라
post-custom-banner

0개의 댓글