본문 바로가기
개발 관련 공부/머신러닝

XGBoost(Extreme Gradient Boosting)란?

by swlotto 2025. 1. 6.

[오늘의 공부]

오늘은 Gradient Boosting 중 많이 사용하는 모델 중 하나인 XGBoost(Extreme Gradient Boosting, 이하 xgb)에 대해 공부해보고자 한다.

▶ xgb란

2016년도에 처음 출시되었으며, gradient boosting의 철학을 따라가지만, 이것을 어떻게 하면 빠르고 대용량 데이터를 처리할 수 있을까에서 시작되었다.

 

XGBoost“Extreme Gradient Boosting”을 의미하며 GBM의 성능, 스케일, 속도를 최적화하기 위해 개발된 알고리즘으로 빠른 수행, 스케일업 하기 위해 병렬처리를 수행한다.

 

단점으로는 gbm에 비해 성능이 조금 떨어질 수 있다는 점이다.

 

▶ 알고리즘 특징

1) split finding algorithm

  • 기존의 의사결정나무는 exact greedy algorithm를 사용함.
  • exact greedy algorithm 모든 split 포인트를 탐색하기 때문에 항상 최적의 split을 찾을 수 있음.
  • 예시를 보자면 총 40개 데이터를 스플릿하여 gradient를 39번 계산함.

  • 여기서 단점은 데이터가 한번에 메모리에 로드되지 않으면 수행 및 병렬 처리가 불가함.
  • 이것을 보완하기 위한 알고리즘이 approximate algorithm임.
  • approximate algorithm의 첫 번째 단계는 전체 데이터의를 정렬 시킨 뒤 분포를 보고 퍼센트를 통해 일정한 개수로 분할함. 여기서 분할한 부분을 bucket이라 부르는데 이 알고리즘은 각각의 버켓 따로 스플릿 포인트를 찾음.
  • approximate algorithm의 예시를 보자면 각 데이터를 버켓으로 묶어 버켓별 gradient를 계산하며 병렬처리가 가능함. 3*10 =  30번 계산

 

  • 위에서처럼 버켓별로 split을 하는데 Global variant Local variant가 있음.
  • Global variant tree기준으로 스플릿하며, 베스트 스플릿 포인트에서 스플릿을 통해 left child / right child 노드로 나눴을 때 기존과 동일하게 split하여 진행함.

  • local variant의 경우 스플릿 기준으로 진행하며, 부모 노드에서 버켓의 개수가 10개면 lc, rc 각각 10개로 나눔.

 

  • 하이퍼파라미터를 eps라고 하며 그림을 통한 성능을 비교함.

  • exact greedy와 global eps=0.05가 거의 같이 올라감 / local eps는 조금 더 크게 잡아도 됨.
  • global을 쓸 때는 eps를 훨씬 작게 잡아야 함.

2) Sparsity-Aware Split Finding(결측치를 효율적으로 처리하고자 하는 관점)

  • 실제 데이터의 경우 결측치가 많으며, 결측치가 아니더라도 0이 과도하게 많은 경우도 있음.
  • 이러한 문제점을 해결하기 위해 각 스플릿마다 디폴트 디렉션(default direction)을 학습과정에서 찾아내며, 새로운 데이터가 들어왔을 때 어떤 값이 결측치면 디폴트 디렉션으로 보냄.

 

  • 상단의 이미지처럼 결측치가 있는 데이터를 오른쪽으로 모아 스플릿을 진행하여 베스트 스플릿 포인트를 찾음.
  • 이후 결측치를 왼쪽으로도 몰아 베스트 스플릿을 찾아 비교하여 효과가 좋은 쪽을 디폴트 디렉션으로 지정함.
  • 이렇게 계산함으로써 계산 시간을 많이 줄일 수 있음.

3) System Design for Efficient Computing(트리 병렬화)

  • 데이터가 커질수록 시간이 오래 걸리는 이유는 sorting임.

  • 이러한 문제점을 해결하기 위해 컬럼와이즈 포맷으로 데이터 저장하고 학습 전 피처 벨류들에 의해 미리 sorting함.
  • 미리 지정하여 학습 중간에 sorting을 안해도 되기 때문에 시간을 단축할 수 있음.

 

▶ 알고리즘 장점

  • 병렬 처리로 학습하여 GBM(Gradient Boost Machine)대비 수행시간이 빠르다.
  • 표준 GBM의 경우 과적합 규제기능이 없었으나, XGBoost는 자체에 과적합 규제 기능올 ・ 좀 더 강한 내구성을 지닌다.
  • 분류와 회귀영역에서 뛰어난 예측 성능을 발휘한다.
  • Early Stopping을 통해 작업을 조기 종료할 수 있다.
  • 병렬처리로 학습, 분류 속도가 빠르다.
  • 다양한 옵션을 제공하며 커스터마이징이 용이하다.
  • 결측치를 내부 자체적으로 처리해준다.

 

▶ 알고리즘 수식

 

▶ booster parameter

  • 모형 성능에 가장 영향을 미치는 파라미터
  •  모델의 과적합 등의 이슈 발생 시 주로 튜닝의 대상이 되는 파라미터
파라미터 기본값 설명
eta 0.3 - 일반적으로 학습률 (learning rate) 로 불리우는 파라미터임.
- weak learner 의 반영 수준을 나타냄.
- 범위는 0~1 로 클 수록 모형의 업데이트 속도는 빨라짐.
- 클수록 과적합의 이슈 발생 가능성이 높음.
num_boost_around 10 학습에 활용될 weak learner의 반복 수
min_child_weight 1 - leaf node 에 포함되는 최소 관측치의 수를 의미함.
- 작은 값을 가질수록 과적합 발생 가능성이 높음 과적합 조절 용도로 사용됨.
gamma 0 - leaf node 의 추가 분할을 결정할 최소 손실 감소값. 해당값보다 손실이 크게 감소할 때 분리함.
- 값이 클수록 과적합 감소 효과가 있음.
max_depth 6 - 트리의 최대 깊이를 설정 0을 지정하면 깊이의 제한이 없음.
- 과적합에 가장 민감하게 작용하는 파라미터. 과적합 조절 용도로 사용됨.
sub_sample 1 - 학습 시 데이터 샘플링 비율을 지정하는 파라미터이며, 과적합 제어 효과가 있음.
- 일반적으로 0.5~1 사이의 값을 사용함.

- 범위는 0~1 사이임.
colsample_bytree 1 - 트리 생성에 필요한 feature의 샘플링에 사용 feature가 많을 때 과적합 조절에 사용함.
- 범위는 0~1 사이임.
lambda 1 - L2 Regularization 적용 값임. 
- feature
개수가 많을 때 적용 검토를 진행하며, 클수록 과적합 감소 효과가 있음.
alpha 0 - L1 Regularization 적용 값임. 
- feature
개수가 많을 때 적용 검토를 진행하며, 클수록 과적합 감소 효과
scale_pos_weight 1 불균형 데이터셋의 균형을 유지함.

 

▶ booster parameter

  • 학습에 활용되는 객체 함수, 모형의 평가를 위한 지표 등을 설정하는 파라미터
파라미터 기본값 설명
objective reg:squarederror - reg:squarederror : 회귀제곱오차
- reg:linear : 회귀
- binary:logistic : 이진분류
- multi:softmax : 다중분류, 클래스 반환
- multi:softprob : 다중분류, 확률 반환
eval_metric object에 따라 바뀜 - rmse : Root Mean Squared Error
- mae : mean absolute error
- logloss : Negative log-likelihood
- error : binary classification error rate - merror : multiclass clasification error rate
- mlogloss : Multiclass logloss
- auc : Area Under Curve

 

▶ 참고자료

 

 

XGBoost (1) - 입문용 예제로 개념 쉽게 이해하기

요즘 현업에서 자주 사용하는 모델 중 하나가 XGBoost이다. 개인적으로 내 업무는 Data Scientist보다 Data Engineer에 가까워서 모델에 관해 심도 깊은 이해는 필요 없지만, 어느 정도의 이해는 필요하다

dining-developer.tistory.com

 

21. XGBoost에 대해서 알아보자

이번 포스팅에서는 부스팅 계열에 떠오르는 샛별 XGBoost에 대해서 알아보려고 한다. 여기에서는 XGBoost의 개념, 알고리즘 동작 원리를 예제와 함께 알아보고자 한다. - 목차 - 1. XGBoost란 무엇인가?

zephyrus1111.tistory.com

 

'개발 관련 공부 > 머신러닝' 카테고리의 다른 글

CatBoost란?  (0) 2025.01.08
LGBM(Light Gradient Boosting Machine)이란?  (1) 2025.01.07
Gradient Boosting Machine(gbm)란?  (4) 2025.01.04
Random Forest(랜덤포레스트)란?  (0) 2024.12.25
bagging(배깅)이란?  (0) 2024.12.25