Adore__

[Ensemble] Boosting Algorithm 본문

AI Learner/ML

[Ensemble] Boosting Algorithm

3_GreenHeart 2023. 4. 3. 13:37
728x90
더보기

2023.01.02

오늘도 춥다. 버스를 타고 지하철을 타고 다시 걸어서 도서관에 왔다.

책을 읽고 싶은데 할 일이 너무 많다... 조금 지치지만 그래도 무언가 열심히 하고 있다는 것에 감사하다!

 

 

_INTRO

저번 글에서는 앙상블 분류기를 구현하는 대표적인 방법 중 Bagging을 다루었었다.

이번에는 Boosting 기법에 대해 알아보도록 한다.


What is Boosting ?

Boosting이란 예측 데이터 분석의 오차를 줄이기 위해 사용되는 지도학습 방법이다.

단일 기계학습 모델은 훈련 데이터 집합의 정확도에 따라 예측 오차가 발생할 수 있다. ( 만약 아메리카노 이미지에 대해서만 모델을 훈련한 경우, 가끔 라떼를 아메리카노로 잘못 식별할 수 있다.)

부스팅은 이러한 여러 weak 모델 순차적으로 연결하고 훈련하여 정확도가 높은 강한 모델을 만드는 것이다. 

 

 

Boosting Algorithm

Boosting은 여러 약한 모델들이 "순차적"으로 학습, 예측을 하면서 이전 모델 틀리게 예측했던 부분을 올바르게 예측할 수 있도록 하는 방법이다.

이를 위헤 다음 모델에 가중치를 부여하면서 학습과 예측을 진행한다.

 

그러면 이때 필요한 여러 모델들은 어떻게 만들까? Boosting 알고리즘에서는 bootstrap기법으로 여러 학습 데이터 집합을 만드는 것이 아니라, 각 학습 데이터의 가중치를 변경하여 분류기를 만든다.

 

🔥 Bagging vs. Boosting 

즉, Bagging은 여러 데이터 집합에서 '한번에' 여러 weak 모델을 훈련시켜 정확도를 개선하지만, Boosting은 약한 학습자를 '차례로' 훈련시킨다.

 

 

< 종류 >

대표적인 Boosting Algorithm 종류는 다음과 같다.

- AdaBoost

- Gradient Boosting Machine (GBM)

- XGBoost 

- LightBoost

- Logit Boost

 

 

◆ AdaBoost

Adaptive Boosting의 약어로, 학습데이터들에 '가중치'를 더하면서 진행된다.

이전 weak learner의 오류 부분은 (분류하기 어려운 데이터라는 뜻) 더 큰 가중치를 주고, 오류를 일으키지 않은 부분 ( 분류가 잘 이루어진다는 뜻 ) 작은 가중치를 주면서 새로운 모델을 만든다. 즉, 순차적으로 weak learner의 오류에 가중치를 더해주면서 Boosting을 수행한다.

이때, weak learner로서 Decision Tree 이외에 여러 가지를 사용할 수 있다.

 

 

 

👉 Random Forest와 의 차이

Random Forest는 bagging algorithm 중 하나로, 여러 트리들을 한번에 만들고 이들의 결과를 투표 방식으로 합산하여 최종 예측을 내린다.

이때, 각각의 트리들은 모두 동일한 가중치값을 갖는다.

하지만 AdaBoost는 순차적으로 learners을 학습시키기때문에 이전의 learner가 그 다음 learner에 영향을 주며, 각 learner은 서로 다른 가중치 값을 가진다. 즉, 중요하게 생각하는 learner를 구분한다.

 

 

ref StatQuest 좌: Random Forest, 각 트리들의 크기가 같다 / 우 : AdaBoost, 트리들의 크기가 서로 다르다.

 

 

◆ Gradient Boosting 

AdaBoost 와 동일하게 이전의 오차를 보정하도록 weak learner을 순차적으로 추가하지만, 

매 literation마다 샘플 가중치를 조정하는 대신에 (AdaBoost 방법),  

이전 weak learner가 만든 예측 오차 (Residual Error)에 대한 새로운 learner를 학습한다. 즉, 이전 모델 residual로 강화된 모델을 만든다.

 

 

👉 Residual Error 란?

먼저 주어진 학습데이터 x에 대해 예측값을 구하는 함수를 Hypothesis(x) , H(x)라고 하자.

잔차, residual error는 실제값 y와 예측값 H(x)의 차이를 말한다. 이는 모델이 실제값과 얼마나 다르게 예측을 하는지를 보여주므로, 모델의 오류 또는 약점이라고 말할 수 있다.

즉, 잔차가 클수록 모델의 오류가 크다는 뜻이다. Gradient Boosting에서는 이러한 오류를 순차적으로 보완해 나가야한다.

 

👉 모델의 오류를 어떻게 보완할까? Gradient Descent 방법을 이용하자!

이와 관련해서는 다음 포스팅을 참고하기 바란다.

(Gradient Descent 개념)

 

Gradient Boosting 방법은 구현이 쉽고 정확도가 높다. 또한 decision tree 이외의 여러 weak learner나 손실함수를 이용할 수 있다는 점에서 유연한 방법이라 할 수 있다.

하지만 잔차를 계속 줄여나가는 과정에서 과적합이 발생할 수 있고, 메모리 문제가 있다.

 

 

'AI Learner > ML' 카테고리의 다른 글

[Ensemble] Bagging Algorithm  (0) 2023.04.03
[ML] SVM classifier  (0) 2023.04.03
[ML] XGBoost model  (0) 2023.04.03
Comments