부스팅 알고리즘


부스팅 알고리즘은 여러 개의 약한 학습기를 순차적으로 학습-예측하면서 잘못 예측한 데이터에 가중치 부여를 통해 오류를 개선해 나가면서 학습하는 방식이다.

 

 

구현 알고리즘


부스팅의 대표적인 구현은 AdaBoost(Adaptive boosting)와  GBM(Gradient Boost Machine)이 있다.

 

  • AdaBoost
    • 오류 데이터에 가중치를 부여하면서 부스팅을 수행하는 대표적인 알고리즘

학습 진행 방법은 다음과 같다.

만약 +, -로 피처 데이터셋이 존재하고 Iteration 1과 같이 +를 탐지하려 하였으나 탐지를 하지 못하게되면 Iteration 2와 같이 +의 크기를 키워(가중치를 키워) 다음 약한 학습기가 더 잘 분류할 수 있도록 진행한다.

 

에이다 부스트는 위와 같이 약한 학습기가 순차적으로 오류 값에 대해 가중치를 부여한 예측 결정 기준을 모두 결합해 예측을 수행한다.

 

그 결과 위 그림의 Final Classifier/Strong classifier와 같이 이전의 학습기를 모두 결합한 예측을을 하여 정확도가 높아지는 것을 알 수 있다.

 

 

  • GBM (Gradient Boosting Machine)
    • 에이다부스트와 유사한, 가중치 업데이트를 경사 하강법을 이용하는 것이 큰 차이다.

오류 값은 "실제 값 - 예측 값"이다. 분류의 실제 결과값을 $y$, 피처를  $x_1, x_2,\dots, x_n$, 그리고 이 피처에 기반한 예측 함수를 $F(x)$ 함수라고 하면 오류식 $h(x) = y - F(x)$가 된다.

 

해당 오류식 $h(x) = y - F(x)$를 최소화 하는 방향성을 가지고 반복적으로 가중치 값을 업데이트하는 것이 경사 하강법이다. 경사 하강법은 머신러닝에서 중요한 기법 중 하나이며, "반복 수행을 통해 오류를 최소화할 수 있도록 가중치의 업데이트 값을 도출하는 기법"으로 이해하면 좋다. 또한 경사 하강법의 경우 회귀를 다룰 때 구체적인 개념을 더 필요로 한다.

 

Reference


[1] 파이썬 머신러닝 완벽가이드

[2] https://www.youtube.com/watch?v=BoGNyWW9-mE

 

+ Recent posts