본문 바로가기
머신러닝

[분석 방법론] Ensemble Learning(6) - Gradient Boosting Machine(GBM)

by 하응 2022. 12. 28.

본 포스팅은 고려대학교 산업경영공학부 강필성 교수님의 [Korea University] Business Analytics (Graduate, IME654) 강의   04-6: Ensemble Learning - Gradient Boosting(GBM) 영상을 보고 정리한 내용입니다.


1. Gradient Boosting 개요 

- Gradient Descent : gradients를 이용해서 학습

- Boosting : weak model을 점진적으로 개선

- Regression, Classification, Ranking 문제에 모두 적용 가능 

- Original GBM으로부터 XGBoost, LightGBM, CatBoost 파생 

 

2. Gradient Boosting Idea 

- Regression에서, 데이터를 가지고, \(f_1(x)\)를 도출한 후에, 실제 정답 y와의 차이인 잔차(residual)를 두 번째 모형이 학습하도록 함. 다음 모형도 \(y-f_1(x)-f_2(x)\) 를 학습하고 이러한 과정을 반복 

- 현재 모델이 맞추지 못하고 있는 오차만큼을 가중치로 둬서, 다음 단계에는 그동안의 오차만큼만 맞추도록 함, 아예 y 값을 바꾸는 것 

 

모델 학습 과정 예시

 

GBM Idea 이미지 (https://github.com/topics/gradient-boosting-machine)

 

3. Gradient와의 연관성 

- 회귀에서 많이 쓰이는 Loss function : ordinary least square(OLS)

   + 실제 값에서 추정 값을 뺀 값의 제곱 

   + \(f(x_i)\)로 Loss function을 미분해보면, \(f(x_i)-y_i\) 도출

   + 식을 정리해보면, \(y_i-f(x_i) = -\frac{\partial L}{\partial f(x_i)}\) 

- 잔차만큼 학습하겠다는 의미는 gradient의 반대 방향만큼 학습하겠다는 의미와 동일 

* Gradient Descent Algorithm : 특정한 가중치를 찾고자 할 때, gradient가 0이면 종료, gradient가 0아 아니면, gradient의 반대 방향으로 조금씩 이동

OLS가 최소가 되도록 Loss function 설정
잔차만큼 학습 = gradient의 반대 방향만큼 학습

 

4. GBM Regression 예시 

- stump tree를 활용하여 GBM regression 적용 

- split 포인트를 잡고, split 포인트로 데이터를 그룹핑하여 평균으로 회귀식 추정, 계단 모양

- Iteration의 수만큼 \(f_n(x)\) 생성 

- Iteration이 반복됨에 따라 잔차는 0에 가까워짐 

 

stump tree를 활용하여, GBM regression 적용 (https://blog.mlreview.com/gradient-boosting-from-scratch-1e317ae4587d)

 

5. GBM 알고리즘 

- original dataset을 가지고 Loss function을 최소화시키는 base learner \(f_0(x)\) 생성 

- m번째 함수에 대하여 각 데이터 포인트에 대한 gradient 계산

- 실제 정답과 현재까지 누적된 함수의 차이를 최소화시키는 함수를 도출하여, \(f_m(x)\) 업데이트 

GBM pseudo code (The Elements of Statistical Learning, p361)

 

6. Loss Functions

- Loss Functions for Regression : Squared Loss, Absolute Loss, Hubor Loss, Quantile Loss 

- Loss Functions for Classification : Bernoulli Loss, Adaboost Loss

 

7. GBM의 한계와 해결 방법

- 현실 데이터에서는 \(\epsilon\)으로 표현되는 noise가 섞여있는데, GBM은 \(\epsilon\)까지 학습해버려서, 과적합(Overfitting) 이슈가 발생 

* \(y=f(x)+\epsilon\)

- Regularization 전략 

   + 1. Subsampling : iteration마다 전체 데이터에서 일부만 랜덤하게 sampling (복원/비복원 가능), 샘플링은 항상 original dataset에서 수행 

   + 2. Shrinkage : 원래 만들어진 모델의 모든 가중치는 1이지만, 후반부에 만들어진 모델에 대한 가중치를 줄여줌 

   + 3. Early Stopping : validation data의 에러가 증가할 것 같으면 학습 중단 

 

8. Variable Importance 

- Random Forest 처럼 변수 중요도를 계산할 수 있음 

- 한 개의 tree에서 L개의 terminal 노드가 있다면, L-1 번의 split이 수행된 것, 모든 split에 대하여 Information Gain (IG)의 합을 계산, i 번째 split에서  j변수를 사용했다면, Information Gain이 포함됨 

- 전체 GBM 모델에서 영향력은,  j 번째 변수의 영향력 평균으로 구함 

single tree T에서의 j번째 변수의 영향력(중요도)

 

j번째 변수의 영향력(중요도)

 


 

참고 자료 

- 고려대학교 산업경영공학부 강필성 교수님 강의 

- https://github.com/topics/gradient-boosting-machine

- https://blog.mlreview.com/gradient-boosting-from-scratch-1e317ae4587d

- The Elements of Statistical Learning, p361

 

 

 

 

반응형

댓글