////
Search

XGBoost

태그
모델링
목차
출처

1. 정의

Extreme Gradient Boosting의 약자로 GBM에서 Boosting 특성상 Sequential한 학습이 진행되기 때문에 속도가 느리다는 단점을 알고리즘의 병렬학습을 통해 개선한 방법이다.

2. 장점

Parallel Learning → 분산 컴퓨팅 기법을 활용한 병렬 작업
GBM 대비 속도가 빠르다.
Approximate Greedy Algorithm, Regularization Term, Column Subsampling, Early Stopping → 과적합 방지
Sparsity-aware Split Finding → 결측치가 있는 데이터에도 적용 가능
Approximate Greedy Algorithm, Cash-aware access, Blocks for Out-of-core Computation → 하드웨어 최적화 및 메모리 문제 개선
Leaf-wise 방식(LightGBM) 대비 robust함
병렬 학습&GPU 사용 가능(이후 모델은 모두 가지고 있는 장점)
자체적으로 결측치 처리(이후 모델은 모두 가지고 있는 장점)

3. 단점

GBM 대비 속도가 빠르지만 여전히 느린 편
범주형 변수 원핫인코딩 필요
hyperparameter가 많아 tuning 시 속도가 더 느려짐

4. Tuning 및 Hyperparameter (Python)

1.
일반 파라미터: 부스터 수행시 트리를 사용할지, 선형 모형을 사용할지 선택(부스터 구조)
a.
booster: 기본값은 gbtree인데, 이외에 gbtree, gblinear, dart가 있다.
b.
n_jobs, verbosity
2.
부스터 파라미터: 선택한 부스터에 따라 파라미터 종류가 다르다.
a.
learning rate: 높을수록 과적합하기 쉽다
b.
n_estimators: 생성할 weak learner 수, learning rate 낮으면 n_estimator 낮아야 과적합이 방지
c.
max_depth, min_child_weight, gamma(리프노드 추가분할 결정시 최소손실 감소값, 값 높을수록 과적합 방지), subsample(weak learner가 학습에 사용하는 데이터 샘플링 비율)
3.
학습과정 파라미터
a.
objective: 예측확률을 어떻게 반환할지
b.
eval_metric: 모델의 평가 함수 조정
c.
seed