728x90
반응형
XGBoost (Extreme Gradient Boosting)
- Gradient Boosting의 과적합 방지를 위한 기법이 추가된 지도학습
- Gradient Boosting의 병렬 학습이 지원되도록 구현한 라이브러리
- GBM에서 발전하여 제한된 컴퓨팅 자원하에서 더 빠르게 효율적으로 많은 데이터를 활용
- 경험적으로는 데이터가 1,000개 ~ 30,000 일때 사용, 데이터가 더 클 때는 LightGBM이 더 좋다고 생각
XGBoost 장점
- 병렬처리를 통한 빠른 학습
- 유연한 learning system
- overfitting 방지를 위한 설계
- 다양한 시나리오에 대한 확장성
XGBoost는 Gradient Boost이지만, 보다 빠르게 처리하고자하는데 그 목적이다.
목적을 위한 방법 두 가지
1. Split Finding Algorithm
- 장점
- 가능한 모든 분지점을 전부 탐색하기 때문에 항상 최적의 분기점(Best Spit)을 찾을 수 있음
- 단점
- 데이터가 메모리에 모두 저장되지 않을 경우 현실적으로 탐색이 불가능
- 분산 컴퓨팅 환경에서 계산 불가능
- 예시
- 좌측부터 우측으로 오름차순으로 정렬되어 있다고 가정
- 전체 데이터를 10 분할
- 각 분할에 대해서 개별적으로 계산하여 Best Split을 찾음(병렬)

2. Sparsity-Aware Split Finding
- 현실의 많은 데이터들은 입력 데이터의 밀도가 낮은 Sparse 한 경우가 빈번하게 발생함
- 데이터의 결측치가 많거나
- 0의 값이 매우 높은 비중을 차지하고 있거나
- 1-hot encoding과 같은 feature engineering이 수행되었거나
- Solution : 분기의 기본 방향 Default direction을 설정
- 예시

효율적인 컴퓨팅을 위한 시스템 디자인
- 의사결정나무에서 가장 시간이 많이 소요되는 부분
- 데이터를 각 변수 값으로 정렬하는 과정
- XGBoost는 block이라 부르는 곳에 데이터를 저장
- 각 블록의 데이터는 compressed column(CSC) format으로 저장되며, 각 칼럼은 해달 변수의 값을 정렬한 상태로 저장
- 최초의 데이터 생성 시 1회 계산하여 저장한 뒤 이후 과정에서 계속 재사용
XGBoost 중요 파라미터
CART 관련 param
- max_depth : 5~15
- colsample_bynode : local randomization, 0.5 ~ 0.8
- reg_lambda : regularization parameter, 0.5~ 5.0
Tree ensemble 관련 params
- n_estimators : 50 ~ 2000
- learning_rate : pseudo-residual parameter (n_estimators가 클수록 작음), 0.3 ~ 0.01
- tree_method : best split을 찾을 때 데이터를 사용하는 방법, 'exact' , 'gpu_hist' , 'approximate' -> 잘 안 씀
- random_state
728x90
반응형
'ML' 카테고리의 다른 글
| # 8 앙상블 기법 CatBoost (0) | 2023.09.24 |
|---|---|
| #7 앙상블 기법 LightGBM (LGBM) (0) | 2023.09.22 |
| #5 앙상블 기법 Gradient Boosting Machine(GBM) (0) | 2023.09.22 |
| # 4 앙상블 기법 AdaBoost (0) | 2023.09.22 |
| # 3 앙상블 기법 랜덤 포레스트(Random Forest) (0) | 2023.09.21 |