[오늘의 공부]
오늘은 Gradient Boosting Machine(이하, gbm)에 대해 공부해보고자 한다.
gbm을 공부하기 전 Adaboost(이하, 에이다부스트)에 대해 먼저 알아야 한다.
▶ 에이다부스트란
Adaptive Boosting의 약자로, 가중치를 부여한 약한 분류기를 모아서 최종적인 강한 분류기를 생성하는 기법이다.
※ 약한 분류기(Weak)란 랜덤 추측보다는 약간 더 좋은 분류기로, 적절한 가이드만 정해지면 강력한 성능을 가진 모델로 향상된다.
○ 에이다부스트 프로세스
- 학습 데이터 세트 준비
- 약한 분류기 생성함. 이 약한 분류기는 잘 맞추는 케이스도 있고 못맞추는 케이스도 있다.
- 가중치를 재결정함. 앞선 모델이 잘 못 맞추는 케이스에 집중할 수 있도록 가중치를 부여한다.
- 새로운 약한 분류기를 만든다.
- 이 과정을 충분히 반복하고, 찾아낸 규칙들을 적절히 조합하면 강한 분류기를 만들 수 있다.
○ 부스팅(Boosting)
- 배깅은 병렬처리가 가능하지만 부스팅은 불가하다.
- 병렬처리가 가능한 Baggig보다 Boosting이 더 빠르며, 배깅은 베이스러너가 인공신경망 혹은 의사결정나무인데 이 베이스러너들의 복잡도가 더 크다.
- single 모델은 데이터 세트를 통해 하나의 모형을 만든다.
- bagging의 경우 모든 데이터는 모델에 상관없이 학습 시 선택될 확률이 같으며, 병렬로 진행한다.
- boosting은 시퀀셜한 모델로, 데이터를 샘플링하여 모형을 만들고 가중치를 주어 다시 샘플링한다.
▶ gbm이란
Gradient Descent + Boosting의 합성어이며, 간단하게 말하자면 Residual fitting라고 이해하면 쉽다.
- Residual(잔차): 추정한 회귀식과 실제 관측값의 차이
- adaboost랑 비슷함.
- adaboost: 약한 분류기가 못맞춘 것에 가중치를 데이터에 더 주어 샘플링하여 결합하는 방식이며, 여기서 단점을 못맞춘 것으로 표현함.
- gbm에서 단점은 gradients로 반영됨.
- gbm은 regression, classification, ranking 다 가능함.
아래의 예시를 통해 이해를 돕고자 한다.
original을 A라 하고 Modified를 B라고 할 때 A를 통해 예측한 후 잔차를 다시 B 모델을 통해 예측하고 A+B 모델을 통해 y를 예측하면 더 좋은 성능을 가진 모델을 만들 수 있는다는 개념이며, 이 과정을 반복하여 잔차를 줄여나가는 것이다.
○ 이 개념이 Gradient와 연결되는 이유
- 다음 모델을 만들 때 negative gradient(=Residual)를 이용하기 때문임. negative gradient란 어떤 데이터 포인트에서 loss function이 줄어들기 위해 f(x)가 가려고 하는 방향이다.
- 이 방향에 새로운 모델을 fitting하여 이전 모델과 결합하면, f(x)는 loss function이 줄어드는 방향으로 업데이트된다.
※ GBM의 문제점은 현실의 데이터에는 노이즈가 섞여 있는데 gbm의 경우 이 노이즈까지 같이 학습을 함으로써 오버피팅의 가능성이 높다는 점이다.
○ 오버피팅을 해소하기 위한 전략
1) subsampling
- 기존에는 전체 데이터를 샘플링하여 진행하지만 전체 데이터 중 0.8 정도 추출하여 샘플링을 진행함으로써 일반화 성능을 확보함.
- 0.8 비율의 데이터를 추출할 때 복원/비복원 추출 방법 둘 다 가능함.
- 전체 데이터에서 1차로 80% 추출하여 샘플링 진행하고 1차 모형에서 다시 추출하는 것이 아닌 샘플링하여 계산한 값을 적용하여 다시 잔차를 계산하여 전체 데이터에서 2차로 80% 추출하여 샘플링 진행함.
2) shrinkage
- 기존 gbm은 각 모델의 가중치는 1인임. 따라서 뒤에 만들어진 모델과 초기의 모델 영향력이 동일함.
- 데이터의 노이즈를 학습에 배제하기 위해 shrinkage는 뒤에 만들어진 모델들의 가중치를 점차 줄임으로써 과적합을 방지시킴.
3) early stopping
- 학습을 진행할 때 횟수를 사전에 설정할 수 있음.
- 또한 성능 개선(error 감소)가 되고 있는지 감시자 역할을 하여 변화가 없거나 미비하면 설정한 학습횟수에 도달하지 않더라도 중지시키는 방법임.
▶ 참고자료
'개발 관련 공부 > 머신러닝' 카테고리의 다른 글
LGBM(Light Gradient Boosting Machine)이란? (1) | 2025.01.07 |
---|---|
XGBoost(Extreme Gradient Boosting)란? (0) | 2025.01.06 |
Random Forest(랜덤포레스트)란? (0) | 2024.12.25 |
bagging(배깅)이란? (0) | 2024.12.25 |
Ensemble(앙상블)이란? (0) | 2024.12.17 |