BraveTiger

CH5. 머신러닝_Ensemble(2) - Boosting 본문

취업 준비/AIVLE SCHOOL

CH5. 머신러닝_Ensemble(2) - Boosting

BraveTiger 2023. 3. 28. 00:00

부스팅(Boosting)

  • 여러 개의 약한 학습기를 순차적로 학습/예측하면서 잘못 예측한 데이터나 학습 트리에 가중치 부여를 통해 오류를 개선해 나가며 학습하는 방식
  • 이전 분류기 학습 결과를 토대로 다음 분류기 학습 데이터 샘플 가중치를 조정하여 학습을 진행한다.
  • 대표적인 부스팅 알고리즘
    • AdaBoost
    • GBM(Gradient Boosting Machine)
    • XGBoost
    • LightGBM
    • CatBoost

출처: https://datascience.eu/machine-learning/gradient-boosting-what-you-need-to-know/

부스팅은 앙상블 아이디어에서 Sequential이 추가된 형태

앙상블의 아이디어

  • 모델이 학습 데이터에 편향되어 Overfitting되는 것을 막기 위해 약한 모델을 여러 개 결합하여 결과를 종합함

부스팅 = Sequential + 앙상블

  • 연속적인 약한 분류기의 순차적인 업데이트를 통해 결과를 개선한다.
  • 이전 분류기의 에러를 다음 분류기의 데이터 샘플링과 가중치에 반영하여 학습하고 이 과정은 순차적으로 진행된다.
  • 즉 위와 같은 과정은 N번 하면 iteration N번 진행된 부스팅 모델이 되는 것

부스팅의 초기 아이디어 Adaboost, GBM

1. Adaboost(Adaptive Boosting)

  • 각 단계에서 새로운 학습기를 학습하여 이전 단계의 학습기의 단점을 보완
  • training error가 큰 관측치의 가중치를 높이고, training error가 작은 관측치의 가중치는 낮춤
  • 앞 단계에서 조정된 가중치를 기반으로 다음 단계에서 사용될 training dataset을 구성한다.
  • 최종 결과물은 각 모델의 성능지표를 가중치로 하여 결합

2. Gradient Boosting Machines(GBM)

이전 모델의 예측 오차를 기반으로 새로운 모델을 훈련한다.

  • Boosting with Gradient descent
  • 첫 번째 단계의 모델 tree1을 통해 Y를 예측하고, Residual을 다시 두 번째 단계 모델 tree2를 통해 예측하고, 여기서 발생한 Residual을 모델 tree3로 예측
  • 점차 Residual이 작아짐

※ Gradient는 무엇을 의미하는가 ?

부스팅의 주요 아이디어는 이전 학습기의 학습에러를 기반으로 다음 학습기 학습에 반영하는 것.

  • GBM은 이전 학습기 treen1에서 발생한 Residual을 다음 학습기 treen에서 예측하고 여기서 발생한 Residual을 treen+1에서 예측하면서 점자 Residual이 작아지도록 학습하는 모델이다.
    • Gradient Boosted model = tree1 + tree2 + tee3 ...
    • Residual은 어떻게 도출되는가? = 'Gradient'

[Loss function]

L=12ni=1(yif(xi))2

[Loss function을 f(x)에 대해 미분]

(yif(xi))

즉, Residual = Negative Gradient

 

Gradient Boosting Framework

  • 결정 트리는 너무 정확해서 새로운 데이터에 잘 일반화되지 않은 머신러닝 모델을 만들게 된다.
  • 앙상블 방법은 배깅과 부스팅을 통해 많은 결정 트리를 연결하기 때문에 더 효과적이라고 입증되었다.
  • 그레이디언트 부스팅은 이전 트리의 예측 오차를 기반으로 완전히 새로운 트리를 훈련한다.
  • 오차에만 초점을 맞추는 머신러닝 알고리즘을 만들려면 정확한 최종 예측을 만들기 위해 오차를 계산하는 방법이 필요한데 여기서 잔차(residual)을 사용한다.
  • 그레이디언트 부스팅은 각 트리 예측 값을 더해 더해 모델 평가에 사용

XGBoost

  • GBM 알고리즘에 병렬 학습이 지원되도록 구현한 알고리즘
  • 회귀/분류 영역에서 뛰어난 예측 성능을 발휘한다.

XGBoost의 특징

  1. 높은 예측 성능
    • 분류와 회귀 모두에서 뛰어난 성능을 보인다.
  2. 빠른 수행 시간(GBM 대비)
    • 병렬 수행 및 다양한 기능으로 GBM에 비해 빠르게 수행됨
    • 수행 시간은 GBM대비임, 다른 알고리즘에 비해 느린 특징(하지만 성능이 뛰어남)
  3. 규제(Regularization) 지원
    • GBM에 없던 과적합 규제 기능을 가지고 있음
  4. Tree Pruning
    • max_depth 등의 하이퍼파라미터로 가지치기를 할 수 있음
    • Tree Pruning 기능으로 max_depth까지 분할 한 다음 성능에 이점이 없는 분할은 가지치기 할 수 있음
  5. 내장된 교차 검증
    • 반복 수행시마다 내부적으로 학습 데이터와 검증 데이터에 대한 교차 검증을 수행
    • 지정된 반복 횟수가 아닌 교차 검증을 통해 성능을 확인하며 필요시 ealty stopping 가능
  6. 결측치 자체 처리
    • use_missing = False 옵션을 통해 알고리즘 스스로 결측치를 채움

XGBoost parameter tuning

참고: https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/

 

XGBoost | Complete Guide to Parameter Tuning in XGBoost With Codes

Learn all about XGBoost parameters and parameter tuning like learning rate, depth of trees, regularization, etc. to improve model accuracy.

www.analyticsvidhya.com

 

LightGBM

  • leaf_wise
  • Light GBM은 Tree가 수직적으로 확장되는 반면에 다른 알고리즘은 Tree가 수평적으로 확장

특징

  • Light GBM은 큰 사이즈의 데이터를 다룰 수 있고 실행시킬 때 적은 메모리를 차지
  • GPU 학습을 지원
  • 빠르고 좋은 성능을 보여줌
  • Light GBM은 overfitting (과적합)에 민감하고 작은 데이터에 대해서 과적합하기 쉽다.
  • 카테고리형 feature를 자동 변환하여 학습할 수 있다.(XGBoost는 수치형 데이터에 대해서만 학습 가능)

LightGBM parameter tuning

참고: https://psystat.tistory.com/131#activities

 

XGBoost와 LightGBM 하이퍼파라미터 튜닝 가이드

목차 1. 왜 이 글을 쓰게 되었는가? xgboost와 lightgbm은 tabula데이터를 다루는 경진대회에서 가장 많이 쓰이는 모델이다. 몇번의 경진대회 경험에 의하면 text classification의 경우에도 딥러닝 모형에

psystat.tistory.com

 

Comments