XGBoost, which stands for Extreme Gradient Boosting, is a scalable, distributed gradient-boosted decision tree (GBDT) machine learning library. It provides parallel tree boosting and is the leading machine learning library for regression, classification, and ranking problems.
평행 Tree boosting을 제공하는 하드웨어 최적화 머신러닝 라이브러리이다.
Boosting, Gradient Boosting
이미지 출처: https://en.wikipedia.org/wiki/Boosting_(machine_learning)
- 기존의 Bagging 방식은 여러 모델을 사용할 때, 각 모델에서 나온 값을 계산하여 최종 결과값을 내는 방식이다 (다양성만 제공)
=> 사용하는 모델들의 가중치가 같기 때문에 서로 모델이 간섭을 하여 좋은 결과를 내기 어렵다
- 이를 해결하기 위해 각 모델에 가중치를 반영한다
- 위의 이미지처럼, 첫번째로 만든 Decision Tree(DT)가 잘못 분류한 데이터를 그 다음 DT가 보완하는 방식으로 순차적으로 Tree를 빌드한다
- 다음 DT는 이전 DT가 잘못 분류한 데이터에 가중치를 주는 것으로 DT가 뽑을 데이터의 샘플링을 조절한다
- Gradient descent 알고리즘을 boosting model에 도입하여 다음 DT가 이전 DT와 합쳐져서 더 적은 loss를 가지는 방향으로 DT를 만드는 방법을 Gradient Boosting 모델이라고 한다
XGBoost
- Gradient Boosting model(GBM) + System Optimization
- Tree의 best split point를 찾을 때, feature를 정렬하는 데에 가장 큰 cost를 소모한다는 점에 포커스
- feature를 정렬하는 cost를 block 단위로 잘라 업데이트 하는 방식 -> GBM과 거의 유사한 성능
- 정렬한 내용들을 훨씬 더 빠르게 사용할 수 있도록 시스템 최적화
- Cache awareness : 이전에 정렬된 내용을 다음 Tree가 다시 사용하므로, 캐싱 이용하여 저장하여 재사용
- GPU Acceleration
- I/O performance
=> 기존의 Gradient Boosting 모델보다 거의 100배 빠른 속도
++ GPU를 사용하게 되어 Computing resource를 이전보다 더 많이 사용하여 더 좋은 성능을 끌어냄