본 포스팅은 고려대학교 산업경영공학부 강필성 교수님의 [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 값을 바꾸는 것
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의 반대 방향으로 조금씩 이동
4. GBM Regression 예시
- stump tree를 활용하여 GBM regression 적용
- split 포인트를 잡고, split 포인트로 데이터를 그룹핑하여 평균으로 회귀식 추정, 계단 모양
- Iteration의 수만큼 \(f_n(x)\) 생성
- Iteration이 반복됨에 따라 잔차는 0에 가까워짐
5. GBM 알고리즘
- original dataset을 가지고 Loss function을 최소화시키는 base learner \(f_0(x)\) 생성
- m번째 함수에 대하여 각 데이터 포인트에 대한 gradient 계산
- 실제 정답과 현재까지 누적된 함수의 차이를 최소화시키는 함수를 도출하여, \(f_m(x)\) 업데이트
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 번째 변수의 영향력 평균으로 구함
참고 자료
- https://github.com/topics/gradient-boosting-machine
- https://blog.mlreview.com/gradient-boosting-from-scratch-1e317ae4587d
- The Elements of Statistical Learning, p361
'머신러닝' 카테고리의 다른 글
[분석 방법론] Ensemble Learning(9) - CatBoost (0) | 2023.01.01 |
---|---|
[분석 방법론] Ensemble Learning(8) - LightGBM (0) | 2023.01.01 |
[분석 방법론] Ensemble Learning(7) - XGBoost (0) | 2022.12.28 |
[분석 방법론] Ensemble Learning(5) - Adaptive Boosting(AdaBoost) (0) | 2022.12.12 |
[분석 방법론] Ensemble Learning(4) - Random Forests (0) | 2022.12.12 |
댓글