본문 바로가기
AI

Gradient Boosting

by jinsuc28 2022. 8. 22.

Gradient Boosting은 앙상블에 이전까지의 오차를 보정하도록 예측기를 순차적으로 추가합니다.

그리고 이전 예측기가 만든 Residual Error에 새로운 예측기를 학습시킵니다.

Gradient Boost 모델이 학습하는 원리를 파악한 뒤 정리해 보세요.

또한, 여기서 말하는 Residual Error가 무엇인지 찾아보고, 서술하시길 바랍니다.

 

 

Ada boosting은 Gradient Boosting과는 다르게 못 맞춘 데이터에 대해서 가중치를 주며 이를 

더 잘뽑히도록 하는 앙상블 모델이였습니다.

이와 다르게 Gradient Boosting은 전체 데이터에 대해서 계속해서 학습한다는 점이 큰 차이점입니다.

Gradinet Boosting으로 파생된 모델로 XGBoost, LightGBM, Catboosting 이 있습니다.

 

학습 원리

 

위 그림처럼 Original Dataset에서 y-F(x)를 계산하게 됩니다. 이를 Residual Error라고 부르며 이 Residual Erorr를

예측하는 형태로 새로운 모델이 만들어집니다. 이렇게 Target 값에서 Residual Error를 뺀값이 다음 모델의 target 값이 되고 여기서 또 다음 residual Error를 계산하게 됩니다. 최종적으로 Residual Error가 0에 가까워 질때까지 학습하여 최적화된 모델을 찾게 됩니다.

 

그렇다면 왜 Gradient Boosting이라고 불러질까?

Gradinet Boosting = Boosting + Gradient

 

Boosting

흔히 앙상블 모델 방법론에서 배깅 방식과 부스팅 방식이 존재합니다.

배깅

- 샘플 데이터를 여러번 뽑아(Boostrap) 각 모델을 학습시켜 결과물을 집계하는 학습 방식

부스팅

- 여러개의 약한 학습기를 순차적으로 학습-예측하면서 잘못 예측한 데이터에 가중치 부여를 통해 오차를 줄이는 학습 방식

 

Gradient

위와 같은 수식을 보면 (y-F(x))**2을(편의상 1/2생략)을 최소화하는 (y-F(x))를 찾기 위해

미분을 진행한다면 F(x)-y 가 됩니다. 즉, y-F(x)를 구하는 식은 -(F(x)-y)와 같아지게 됩니다.

 

이는 Gradient 의 음수방향으로 움직이게한다는 의미이며 이는 경사하강법의 개념과 동일하게 됩니다.

이처럼 gradient boosting이라 불리는이유는 gradient 만큼 순차적으로 가중치를 부여하여 학습하기 때문입니다.

 

Gradient Boosting은 regression, classifaction, rank task 에서 모두 사용이 가능하며

Problem 해결 방법은 각기 다른 방식으로 학습이 진행됩니다.

Gradient Boost Regression 방식 계산 방법

residual = observed- predicted를 계속해서 업데이트 하게됩니다.

 

- Iteration 0 에서는 target 값들의 평균을 구하게되며 이를 기준으로 Residual Error를 구하게 됩니다.

 

- iteration 1는 (iteration0에서 구한 target 값-target의 평균)를 residual Error 1이라 한다.

이후 Decision Tree 기반으로 imformation gain을 잘 분류할 수 있는 X0 값으로 Split 하게 됩니다.

이후 (target-(target 값의 평균 + (learning rate)* (residual Error 1)))을 구하게되며 이는 residual Error 2 가 됩니다.

 

- iteration 2는 residual Error 2 기반 Decision Tree 기반 imformation gain을 잘 분류할 수 있는 X1으로 split 하게 됩니다.

(target-(target 값의 평균 + (learning rate)* (residual Error 1)+ (learning rate)*(residual Error 2)))

구하게 되며 이는 residual Error 3가 됩니다.

 

이를 resiaul Error n값이 0이 될 때까지 반복하게되며 보통 하이퍼 파라미터로 n_estimater 만큼 작업을 수행하게 됩니다. 

 

 

Regression

 

https://towardsdatascience.com/all-you-need-to-know-about-gradient-boosting-algorithm-part-1-regression-2520a34a502

 

All You Need to Know about Gradient Boosting Algorithm − Part 1. Regression

Algorithm explained with an example, math, and code

towardsdatascience.com

 

Classification

https://towardsdatascience.com/all-you-need-to-know-about-gradient-boosting-algorithm-part-2-classification-d3ed8f56541e

 

All You Need to Know about Gradient Boosting Algorithm − Part 2. Classification

Algorithm explained with an example, math, and code

towardsdatascience.com

https://www.youtube.com/watch?v=3CC4N4z3GJc 

https://www.youtube.com/watch?v=d6nRgztYWQM

'AI' 카테고리의 다른 글

차원의 저주(Curse of Dimensionality)  (0) 2022.09.04
XGBoost, LightGBM, Catboost  (0) 2022.08.29
GradientBoosting 하이퍼 파라미터  (0) 2022.08.27
벡터 연산 및 가중치 행렬  (0) 2022.04.14
머신러닝을 위한 이산수학  (0) 2022.04.14