Gradient Boosting Algorithm

Sieun·2024년 3월 29일
0

알고리즘(solved.ac)

목록 보기
6/6
  • Prediction model for regression or classification
  • ensembling 방법론 중 boosting 계열에 속하는 알고리즘
  • Tabular data에 대한 prediction에서 높은 성능이 나타남.
  • LightGBM, CatBoost, XGBoost 등의 파이썬 패키지가 있음.
  • 계산량이 많이 필요한 알고리즘

Boosting

  • boosting: 약한 classifier를 결합하여 강한 classifier를 만드는 과정.
    ex) accuracy가 0.3 정도인 분류기 A,B,C를 결합하여 0.7 accuracy를 만드는 원리
  • 순차적으로 A 분류기를 만들고, 그 정보를 바탕으로 B 분류기를 만들고, 이 정보를 바탕으로 C 분류기를 만든 뒤, 최종적으로 만들어진 모든 분류기들을 결합하여 최종 모델을 만듦.

GBM

  • Residual fitting을 통한 이해
    모델 A를 통해 y를 예측하고 남은 잔차(residual)을 다시 모델 B를 통해 에측하고 A+B 모델을 통해 y를 예측하면 더 좋은 모델을 만들 수 있음. 이를 반복하면 residual이 줄어들게 되고 training set을 잘 표현할 수 있는 예측 모델을 만들 수 있음. 이 방식을 통해 bias는 줄일 수 있지만 overfitting의 위험이 있음. 이를 방지하기 위해 sampling, penalizing 등의 regularization 테크닉을 사용함.
    아래 그림에서 tree 1,2,3를 weak leaner라고 하고, 이를 결합한 분류기를 strong learner라고 함. 보통 weak learner로는 decision tree가 많이 사용됨. 이를 gradienet boosting tree라고도 하는데, 구현한 대표적인 라이브러리로 XGboost가 있음.

Gradient

  • residual은 loss function을 squared error로 설정하였을 때 negative gradient임.
  • residual에 fitting해서 다음 모델을 순차적으로 만들어 나가는 것 == negative gradient를 이용해 다음 모델을 순차적으로 만들어나가는 것

loss function을 아래와 같이 정의하면,
j(yi,f(xi))=12(yif(xi))2j(y_i, f(x_i)) = \frac{1}{2}(y_i - f(x_i))^2

이때의 negative gradient는 residual이 된다.

위는 gradient를 구한 것이고, 이를 negative로 만들면 yif(xi)y_i - f(x_i) 이기 때문에, negative gradient가 residual이 됨을 알 수 있음.

negative gradient를 이용해서 새로운 모델을 만드는 이유는?

negative gradient는 pesudo-residual이라고도 불리는데, 이는 어떤 데이터 포인트에서 loss function이 줄어들기 위해 f(x)가 가려고 하는 방향을 뜻함. 이 방향에 새로운 모델을 fitting해서 이것을 이전 모델과 결합하면, f(x)는 loss function이 줄어드는 방향으로 업데이트가 될 것임. gradient boosting = gradient descent + boosting

https://bkshin.tistory.com/entry/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-15-Gradient-Boost
위 링크에 Gradient Boost 모델의 학습 방식이 예제와 함께 구체적으로 설
명되어 있음.

https://www.youtube.com/@statquest
원본 영상


Reference

https://3months.tistory.com/368
https://en.wikipedia.org/wiki/Gradient_boosting

profile
AI/ML 공부중👩🏻‍💻

0개의 댓글