No Limitation
[논문 리뷰] Greedy Function Approximation: A Gradient Boosting Machine 본문
[논문 리뷰] Greedy Function Approximation: A Gradient Boosting Machine
yesungcho 2022. 1. 31. 15:26
참고 강의
고려대학교 산업경영공학부 강필성 교수님
https://www.youtube.com/watch?v=d6nRgztYWQM
앞에서 공부했던, lighGBM, XGB 전부 Gradient Boosting 기반의 알고리즘인데
그럼 대체 이 GBM이 뭔지에 대해 공부해보자
우선 직관적으로 알 수 있듯이
Gradient Boosting은 말 그래도
Gradient Descent + Boosting
임을 의미한다.
잠깐 본격적으로 들어가기 전에 adaboost를 잠깐 리뷰하자면
이 adaboost는 weak learner들을 additive하게 더해가면서 모델을 구축하고, 틀리는 케이스에 대해 집중적으로 더 보는 방법을 통해 모델을 개선시켜 나감. → forward stage-wise manner 라고 한다.
각각의 스텝에서는 기존의 weak learner들이 갖는 단점을 보완하기 위한 weak learner를 구축 → 틀리는 케이스를 더 뽑는 것이지
그러면 gbm은 어떻게 다른 것일까?
gbm의 경우 틀리는 케이스를 보완하기 위해 gradient를 이용한다!!
그럼 이 gradient를 이용한다는게 무슨 의미일까?
다음 그림을 보자
저 그림의 상황처럼 y는 f1과 f2의 합으로 나타낼 수 있게 된다.
즉, 생각해보면,
만일 우리가 또 다른 회귀 모형을 이용해서 잔차를 예측할 수 있다면 어떻게 될까? ( 마치 f2 처럼 )
즉, 이전 모델이 못 맞추고 있는 만큼을 추정
( 추정해야 할 y값을 바꾸는 것이다. )
( original gbm의 경우는 데이터 샘플링을 해주지 않는다. adaboost와의 차이점 )
앞선 모델이 못 맞춘 경우만 맞추려고 하는 모델을 구축하는 것이다.
아래 그림을 참고해보자
이런 식으로 잔차를 다시 y로 잡아 그 종속 변수에 대해 예측 모형을 만드는 또 다른 모델들을 학습해나가는 방법이 gbm의 기본 아이디어다.
아래 그림은 직관적으로 더 이해를 돕는 그림이라고 생각해 첨부하였다.
다음 그림은, gradient가 사용되는 아이디어를 보여주는 수식이다.
즉, 잔차 값은 gradient의 마이너스를 곱한 값이 되고,
이 의미는 즉, "잔차만큼을 더 학습시키라는 의미는 gradient의 반대 방향으로 학습을 시키라"는 의미와 동일하게 된다.
그렇다면 실제 샘플 데이터에서 regression이 이루어지는 경우를 살펴보자
우선, 이전에 의사 결정 분류기로 regression을 수행한다는 것이 정확히 어떤 메커니즘으로 동작하는 지를 살펴볼 필요가 있는데 다음 그림을 보자.
다음 그래프를 살펴보자
이 중 첫 번째 iteration을 살펴보면
첫 번째 그림의 붉은 선은 1차적으로 구축된 회귀식을 의미하고 이를 통해 잔차를 나타낸 것이 우측에 있는 초록색 점들이다.
이러한 초록색 점들을 다시 y로 사용하여 구축한 split point를 두 번째 iteration에 반영해준다.
이 과정을 여러번 반복해주면
또한 gbm은 loss function을 무엇을 사용하는 지에 따라 성능에 중요한 영향을 끼치는데
regression의 경우는 크게 L2, L1, 그리고 L2의 기하급수적으로 성장하는 것을 막고자 하는 Huber loss나 quantile loss 같은 함수들도 존재한다.
classification의 경우는 다음과 같다.
위 그림에서 y_bar같은 경우는 실제 y라고 생각하면서 봐보자
하나씩 살펴보자
이러한 방법으로 loss function을 바탕으로 boosting을 수행한다.
하지만 이렇게 완벽해보이는 gradient boosting이 마주하는 문제는 직관적으로 알 수 있듯, overfitting이다.
과적합을 줄이기 위해 다양한 규제화 방법이 사용되는데 첫 번째로는 subsampling이 있다.
[1] subsampling
[2] shrinkage
[3] early stopping
세 번째로는 early stopping이 있는데
이는 validation data에서의 에러를 이용하는 방법으로, 해당 에러가 증가할 것 같으면 미리 학습 iteration을 중지하는 방법을 의미한다. 신경망에서 동작 원리와 비슷하다.
마지막으로, 이러한 gbm역시 rf와 마찬가지로 variable importance를 제공할 수 있다.