Gradient boosting 모형

기존 boostingmodel의 정확성을 점점 개선하는 방식으로 진행되었다면

 

gradient boosting은 그 이름에서도 알 수 있듯이 loss function을 정의하고 이것을 줄여나가는 방식으로 model을 학습해나갑니다.

 

loss function은 딥러닝에서도 자주 사용하듯이 실제값과 예측값의 차이로 정의합니다.

 

예시 그림을 보면 이해하기 쉬울 것이라고 생각합니다.

 

그림1. 최초 데이터

 

위 그림에서 weight를 예측하는 model을 만든다고 합시다.

 

실제값과 예측값의 차이인 loss function을 최소로하는 최초 예측은 모든 weight의 평균값으로 예측하는 것이 제일 간단합니다. 여기서 평균은 71.2라고 합니다.

 

예측한 값과 실제 값들의 차이(이것을 residual 혹은 loss라고 부릅니다)를 각 row에 대해 구합니다.

 

그리고 residual을 target으로 하고 나머지 feature를 이용하여 tree 모델을 적합시킵니다.

 

그림2. gradient boosting 1단계 예측

 

예를 들어 다음과 같은 tree가 완성되었다고 합시다.

 

그림3. 완성된 첫번째 tree

 

최종 node에 여러개의 값이 있는데 regression tree에서 설명했듯이 보통 평균값을 사용합니다.

 

다음 이 완성된 tree에 대하여 첫 번째 data rowheight=1.6 favorite color = blue, gender = male을 넣어 예측한다고 합시다. 당연히 결과는 16.8이 나올겁니다. 이 데이터로 만든 tree라서 그렇습니다.

 

그러나 그러면 의미가 없습니다.

 

우리의 목표는 이 residual을 점점 줄여나가겠다는 것인데

 

gradient descent의 원리를 기억하시나요? 예측한 오차에 learning rate를 곱한 뒤 초기 모델의 예측값에 더하여 새로운 예측값으로 갱신합니다.

 

구체적으로 만약 learning rate=0.1이라고 합시다.

 

초기 예측값은 71.2였는데 $71.2+0.1 \times 16.8=72.88$

 

이 말은 첫 번째 data rowheight=1.6 favorite color = blue, gender = male에 대해서는

 

71.2로 예측하는 것이 아니라 72.88로 예측을 갱신하겠다는 의미입니다.

 

이때 정답값은 얼마인가요? 88이었습니다. 이 정답값인 88과 새롭게 예측을 갱신한 값 72.88의 차이는 얼마인가요 15.12입니다.

 

원래 차이는 얼마였나요? 16.8이었습니다. 새롭게 예측을 갱신하고 나서는 15.12로 줄어들었습니다. loss가 줄어든것이나 마찬가지입니다.

 

나머지 data row에 대해서도 똑같이 예측값을 갱신하여 residual을 구할 수 있고

 

다시 residualtarget으로 하여 새로운 tree를 생성하고 위 과정을 계속해서 반복합니다.

 

이것이 바로 gradient boosting의 원리입니다.

 

일반적으로 Adaboost보다 gradient boosting이 거의 대부분 성능이 좋아 Adaboost는 거의 폐기되었다고 볼 수 있을 정도로 쓰지 않습니다.

 

그림4. gradient boosting 예측이 갱신되는 과정

 

위에서는 regression을 설명했는데 treeclassification, regression이 모두 가능하듯이 classification도 당연히 가능합니다.

 

이 경우 loss functioncross entropy? 같은 것을 사용하면 되겠죠?

 

참고

 

Gradient Boost (tistory.com)

 

Gradient Boost

이 글은 StatQuest with Josh Starmer 의 StatQuest: Gradient Boost Part1 영상을 보고 정리한 글이다. 모든 사진과 설명에 대한 출처는 여기에 있다. 이번 글에서는, Boosting 중, 비교적 최근에 많이 쓰이는 G..

dailyheumsi.tistory.com

 

'정형데이터' 카테고리의 다른 글

Light GBM 모형  (0) 2021.11.02
XGBoost 모델  (0) 2021.11.02
Adaboost 모형  (0) 2021.11.01
boosting에 대하여  (0) 2021.10.29
random forest 모형  (0) 2021.10.28
TAGS.

Comments