더 이상 tistory 블로그를 운영하지 않습니다. glanceyes.github.io에서 새롭게 시작합니다.

새소식

AI/추천 시스템

Gradient Boosting을 사용한 GBM(Gradient Boosting Machine)과 연관 모델

  • -

 

Gradient Boosting Machine (GBM)

 

 

CTR 예측을 통해 개인화된 추천 시스템을 만들 수 있는 또 다른 대표적인 모델이다.

 

 

Boosting

 

Boosting

[출처] Wikipedia, Sirakorn

 

앙상블(ensemble) 기법의 일종이며, 앙상블은 모델의 편향에 따른 예측 오차를 줄이기 위해 여러 모델을 결합하여 사용하는 기법이다.

 

의사결정 나무(Decision Tree)로 된 weak learner(정확도와 복잡도가 비교적 낮은 분류기)들을 연속적으로 학습하여 결합하는 방식이다.

연속적으로 학습한다는 것은 이전 단계의 weak learner가 취약했던 부분을 위주로 데이터를 샘플링하거나 가중치를 부여해 다음 단계의 learner를 학습한다는 의미이다.

 

 

Boosting 기반 모델

 

AdaBoost(Adaptive Boosting), Gradient Boosting Machine(GBM), XGBoost, LightGBM, CatBoost 등이 있다.

 

 

 

Gradient Boosting

 

Gradient Descent를 사용하여 loss function이 줄어드는 방향(negative gradient)으로 weak learner들을 반복적으로 결합함으로써 성능을 향상시키는 boosting 알고리즘이다.

그러나 Gradient Descent를 구할 때 학습 파라미터가 아니라 학습하는 learner 자체로 미분한다.

그래서 이 미분 값을 예측하는 새로운 weak learner를 학습하게 된다.

즉, loss function이 줄어드는 방향(negative gradient)을 예측해서 weak learner를 생성하는 것이다.

 

Image 2022-03-19 오후 8.12.36

[출처] https://orbi.uliege.be/bitstream/2268/163521/1/slides.pdf, Gradient Boosted Regression Trees

 

통계학적 관점에서 Gradient Boosting은 실제값과 예측값인 잔차(residual)를 적합(fitting)하는 것으로 이해할 수 있다.

이전 단계의 weak learner까지의 residual을 계산하고, 이를 예측하는 다음 weak learner를 학습한다.

 

회귀 문제에서는 예측값으로 residual을 그대로 사용하고, 분류 문제에서는 0과 1 사이의 실수로 예측하여 표현하는 것이 어려우므로 log(odds) 값을 사용한다.

 

Gradient Boosting을 사용하여 회귀 트리를 구하는 과정을 예시로 들면 다음과 같다.

다음과 같은 유저 데이터를 바탕으로 Weight을 추천하는 의사 결정 트리를 학습해 나간다고 가정한다.

 

Gender Age Height Weight
Male 20 174 72
Male 33 173 75
Male 47 170 73
Male 59 168 71
Female 24 161 55
Female 38 160 57
Female 43 157 58
Female 53 154 58

 

 

우선 몸무게의 평균값(64.875)을 초기 예측값으로 설정한다.

Image 2022-03-19 오후 8.21.53

 

실제 유저의 몸무게와 몸무게의 평균값의 차이인 잔차(residual)를 구한다.

 

Gender Age Height Weight Weight predict residual
Male 20 174 72 64.875 7.125
Male 33 173 75 64.875 10.125
Male 47 170 73 64.875 8.125
Male 59 168 71 64.875 6.125
Female 24 161 55 64.875 -9.875
Female 38 160 57 64.875 -7.875
Female 43 157 58 64.875 -6.875
Female 53 154 58 64.875 -6.875

 

위에서 구한 잔차를 사용하여 이 잔차를 예측하는 첫 번째 트리를 학습한다.

 

 

 

Gender Age Height Weight residual residual predict
Male 20 174 72 7.125 8.458
Male 33 173 75 10.125 8.458
Male 47 170 73 8.125 8.458
Male 59 168 71 6.125 6.125
Female 24 161 55 -9.875 -9.875
Female 38 160 57 -7.875 -7.208
Female 43 157 58 -6.875 -7.208
Female 53 154 58 -6.875 -7.208

 

이렇게 모델로 예측한 잔차를 구하면 처음에 구한 몸무게의 평균에서 잔차를 더하여 각 유저별로 예측한 몸무게를 구한다.

 

Gender Age Height Weight Weight predict residual
Male 20 174 72 73.333 -1.333
Male 33 173 75 73.333 1.667
Male 47 170 73 73.333 -0.333
Male 59 168 71 71 0
Female 24 161 55 55 0
Female 38 160 57 57.667 -0.667
Female 43 157 58 57.667 0.333
Female 53 154 58 57.667 0.333

 

Image 2022-03-19 오후 8.35.24

 

또 위에서 나온 잔차를 가지고 두 번째 트리를 학습한다.

 

Gender Age Height Weight Weight predict residual
Male 20 174 72 73.333 -1.333
Male 33 173 75 73.333 1.667
Male 47 170 73 73.333 -0.333
Male 59 168 71 71 0
Female 24 161 55 55 0
Female 38 160 57 57.667 -0.667
Female 43 157 58 57.667 0.333
Female 53 154 58 57.667 0.333

 

Image 2022-03-19 오후 8.37.44

 

이렇게 계속 잔차를 통한 트리 학습을 반복해 가면서 손실 함수 값이 일정 수준 이하로 떨어지거나 leaf node에 속하는 데이터의 수가 적으면 학습을 멈춘다.

 

 

Gradient Boosting 장단점

 

장점

 

대체로 random forest보다 나은 성능을 보인다.

 

 

단점

 

느린 학습 속도와 과적합 문제(prediction shift)가 있다.

 

 

Gradient Boosting을 보완하는 모델

 

Gradient Boosting의 문제점을 해결하기 위한 대표적인 모델 또는 라이브러리는 다음과 같다.

 

 

XGBoost(Extreme Gradient Boosting)

 

병렬 처리 및 근사 알고리즘을 통해 학습 속도를 개선한 라이브러리이다.

 

 

LightGBM

 

Microsoft에서 제안했으며, 병렬 처리 없이도 빠르게 Gradient Boosting을 학습할 수 있도록 한 라이브러리이다.

 

 

CatBoost

 

범주형 변수에 효과적인 알고리즘 등을 구현하여 학습 속도를 개선하고 과적합을 방지하고자 한 라이브러리이다.

 

 

출처
1. 네이버 부스트캠프 AI Tech 추천시스템 Stage 2 기초 강의
Contents

글 주소를 복사했습니다

부족한 글 끝까지 읽어주셔서 감사합니다.
보충할 내용이 있으면 언제든지 댓글 남겨주세요.